💥

Zsh Vimto

Improved zsh vim mode (bindkey -v) plugin

laurenkt
|
30 stars
6 forks

zsh-vimto

A pure-compatible extension to bindkey -v for zsh.

Pitch: zsh has support for a vim mode and it's improving all the time, however it has a few usability problems out of the box (like not being obvious what mode you're in, or some things not working like you'd expect). This plugin fixes some of those issues and makes it clear which mode you're in whilst retaining a minimal aesthetic.

screencast demonstrating appearance

Features

  • Changes from block cursor to line cursor depending on whether in cmd or insert mode mode
  • Displays NORMAL on the right side of the prompt when in cmd mode
  • Fixes issue where backspace no longer works when returning from cmd mode
  • Re-enables ^R for incremental search from emacs mode (it's useful…)
  • Reduce the wait timer for switching between modes – default is 0.4s which is very noticable, this plugin reduces it to 1ms
  • tmux support

Installation

Use your zsh package manager of choice. E.g. with zplug:

zplug "laurenkt/zsh-vimto"
zplug install

If not using a package manager, download zsh-vimto.sh to a folder e.g. ~/.zsh/plugins and then add to your .zshrc or equivalent:

source ~/.zsh/plugins/zsh-vimto.sh

Customisation

To customise the colors used, set the following variables, for example:

export VIMTO_COLOR_NORMAL_TEXT=white
export VIMTO_COLOR_NORMAL_BACKGROUND=yellow

Todo

  • Add a visual indicator for v-line and visual modes. This is currently quite complicated to do (see this thread) but perhaps it will get easier in a future release, or another solution can be found.