A Working VI Mode Indicator in ZSH
Thanks to @dougblackio’s article Adding Vi To Your Zsh, I have this awesome vi
mode indicator in my zsh.
Unfortunately, I found that I had to type bindkey -v
every time I started a new shell to get this to work. After some research here, I figured out I needed to add precmd() { RPROMPT="" }
to my .zshrc
. That resolved the issue.
I also removed @dougblackio’s custom git status code with this final result:
bindkey -v
bindkey '^P' up-history
bindkey '^N' down-history
bindkey '^?' backward-delete-char
bindkey '^h' backward-delete-char
bindkey '^w' backward-kill-word
bindkey '^r' history-incremental-search-backward
precmd() { RPROMPT="" }
function zle-line-init zle-keymap-select {
VIM_PROMPT="%{$fg_bold[yellow]%} [% NORMAL]% %{$reset_color%}"
RPS1="${${KEYMAP/vicmd/$VIM_PROMPT}/(main|viins)/} $EPS1"
zle reset-prompt
}
zle -N zle-line-init
zle -N zle-keymap-select
export KEYTIMEOUT=1
Run this command to automatically install this script into ~/.zshrc
curl http://www.coryklein.com/assets/zsh-vi-mode-indicator.txt >> ~/.zshrc