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

</p>

<p>function accept_line{</p>

<p>  VIMODE=&quot;I&quot;</p>

<p>  setprompt</p>

<p>  builtin zle .accept-line</p>

<p>}</p>

<p>zle -N accept_line</p>

<p>bindkey -M vicmd &quot;^M&quot; accept_line</p>


<p>function zle-keymap-select {</p>

<p>  VIMODE=&quot;${${KEYMAP/vicmd/N}/(main|viins)/I}&quot;</p>

<p>  setprompt</p>

<p>  zle reset-prompt</p>

<p>}</p>

<p>zle -N zle-keymap-select</p>


<p># set prompt</p>

<p>function setprompt(){</p>

<p> if [ ! $VIMODE ]; then</p>

<p>   VIMODE=&quot;I&quot;</p>

<p> fi</p>

<p> PROMPT=&quot;%n@[${VIMODE}]%# &quot;;; </p>

<p>}</p>

<p>

あとは、どこかでsetpromptを呼べば使えるはず。

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

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

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

コメントする

Powered by WordPress