In my previous post, I have introduced how to build Zsh from source and install oh-my-zsh to enhance your terminal experience. In this post, I’d like to introduce how to manage plugins with zplug and a few more plugins to boost your productivity.

Plugin management with zplug

Oh-my-zsh has a lot of builtin plugins and works great. But there are also a lot of plugins which are not packaged with oh-my-zsh. You can manually add a plugin foo to the oh-my-zsh custom folder and activate it in .zshrc like the following:

plugins=(
  [...other plugins...] foo
)

The above method works but becomes tedious once you need to install several external plugins. This is when plugin manager comes to help.

Just like what you see in Vim, several competing plugin managers are out there for Zsh users, such as antigen, zplug, antibody, zgen1. I decided to use zplug for its boasted speed and its versatility.

It is very easy to install:

curl -sL --proto-redir -all,https https://raw.githubusercontent.com/zplug/installer/master/installer.zsh | zsh

Then add the following backbone setting for zplug in .zshrc:

# the backbone of zplug
source ~/.zplug/init.zsh

# plugins installation goes below

zplug load --verbose

All the plugin install setting should be put inside the backbone code. After adding a plugin, do not forget to source .zshrc. To install plugins, use zplug install on the command line. Please consult the zplug doc for more usage.

Below I will introduce several plugins and themes I find useful.

Plugins to install

Syntax highlight

The plugin fast-syntax-highlighting will highlight your command on the command line, making it easy to distinguish between different parts of the command. To install it, add the following setting:

# defer means to load this plugin after all the other plugins
zplug "zdharma/fast-syntax-highlighting", defer:2

Auto suggestions

Plugin zsh-autosuggestions will suggest you the command you want to use based on your command history, making it quicker to execute your frequent command.

Install it with zplug:

# command auto-suggestion based on history
zplug "zsh-users/zsh-autosuggestions"

Faster directory navigation

z.lua is plugin which makes directory navigation faster. Install it with zplug:

zplug "skywind3000/z.lua"

For its settings and usage, see here.

Vim mode

In zsh, we can use the vi mode for faster command editing. Vi is activated by following command:

bindkey -v

To go to NORMAL mode, press ESC. Basic vi motion and change oprations are provided for you to manipulate the command. Unfortunately, there is no visual indication which mode you are in, making it hard to use the vi mode.

The plugin zsh-vim-mode solves this issue by adding the mode indicator in the RPS12. It also adds a few enhanced functions to tweak the vim mode.

First, install it with zplug:

# enhanced zsh vim mode
zplug "softmoth/zsh-vim-mode"

You can customize the cursor shape with this plugin, for example:

MODE_CURSOR_VICMD="green block"
MODE_CURSOR_VIINS="#20d08a blinking bar"
MODE_CURSOR_SEARCH="#ff00ff blinking underline"

To add the current mode indicator on the right prompt, add the following the setting:

MODE_INDICATOR_VIINS='%F{15}<%F{8}INSERT<%f'
MODE_INDICATOR_VICMD='%F{10}<%F{2}NORMAL<%f'
MODE_INDICATOR_REPLACE='%F{9}<%F{1}REPLACE<%f'
MODE_INDICATOR_SEARCH='%F{13}<%F{5}SEARCH<%f'
MODE_INDICATOR_VISUAL='%F{12}<%F{4}VISUAL<%f'
MODE_INDICATOR_VLINE='%F{12}<%F{4}V-LINE<%f'

The effect is shown below:

Conclusions

In this post, I have introduced zplug — the plugin manager for Zsh and a few useful plugins to boost productivity. For more useful plugins, you may find it on the awesome zsh list. Choose your plugins wisely and only install those you truly need.

References


  1. More plugin managers and frameworks can be found here. Choose the one you feel is best.
  2. This prompt is displayed on the right-hand side of the screen when the primary prompt is being displayed on the left.