chocokanpan BLOG

2010 年 5 月 12 日

zshのvi keybindでモードを表示する

Filed under: 未分類 — タグ: , — chocokanpan @ 10:30 AM

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つのサイトを参考にして作成した。

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を呼べば使えるはず。

コメントはまだありません »

コメントはまだありません。

この投稿へのコメントの RSS フィード。 TrackBack URL

コメントする

Powered by WordPress