zsh のbindkeyをviに設定した上でいざコマンドを打とうとした時、
Normal modeなのか、Insert modeなのかが分からない。
最近までは、Escキーを2,3度押してから始めていたのでコマンドを
入力するまで何回か手数を踏まないといけなかった。
さすがにまずいよね。っということで表示を出来るよう対応してみた。
examples:zlewidgets [ZshWiki]
http://zshwiki.org/home/examples/zlewidgets
Aaron Toponce : Add Vim Editing Mode To Your ZSH Prompt
http://pthree.org/2009/03/28/add-vim-editing-mode-to-your-zsh-prompt/
上記の2つのサイトを参考にして作成した。
>|shell|
function accept_line{
VIMODE=”I”
setprompt
builtin zle .accept-line
}
zle -N accept_line
bindkey -M vicmd “^M” accept_line
function zle-keymap-select {
VIMODE=”${${KEYMAP/vicmd/N}/(main|viins)/I}”
setprompt
zle reset-prompt
}
zle -N zle-keymap-select
# set prompt
function setprompt(){
if [ ! $VIMODE ]; then
VIMODE=”I”
fi
PROMPT=”%n@[${VIMODE}]%# “;;
}
||<
あとは、どこかでsetpromptを呼べば使えるはず。