Vimのキーマッピングで入力待ちを発生させない!

概要

\rwというキーマッピングをVimに設定したのですが入力待ちが発生していました。(より長いキーマッピングが定義されているため入力をまっている)
\rwを入力した時に入力待ちをなくしたい。という話です。

Vimのキーマッピングについて

nnoremap rr  :echo "すぐ実行して欲しい"<CR>
nnoremap rrr :echo "あまり実行しない"<CR>

上記のようなrrrrrというキーマッピングを定義した時、rrまで入力した時に入力待ちが発生します。
enterを押せばrrで実行できますが、せっかくキーマッピングを設定しているのでrrを入力したらすぐに実行して欲しいです。

<nowait> をつけると入力待ちが発生しない

rrrを意図して設定している時はこちらを削除するなりリネームしてやったり、<nowait>をつけてやるとrrを入力した時に入力待ちが発生しません。

nnoremap rrr :echo "r"<CR>
nnoremap <nowait> rr :echo "r"<CR>

ただし、プラグインがキーマッピングのrrrを設定しているとそうはいきません。
使っているプラグインマネージャーによるとは思うのですが、NeoBundleの場合は.vimrc読み込んだあとにプラグイン本体を読み込むので、プラグインで定義しているキーマッピングに対しては<nowait>は効きません。
なぜなら<nowait>がついているキーマッピングを読み込む時点で、より長いキーマッピングが既に定義されている必要があるからです。
つまり、下記の設定では、rrで入力待ちが発生します。

nnoremap <nowait> rr :echo "r"<CR>
nnoremap rrr :echo "r"<CR>

今回、入力待ちの発生するキーマッピングは、入力待ちの原因となるキーマッピングが.vimrcに書いていなかったのでプラグインだと疑いました。

キーマッピングを探す

:map でマッピングされている一覧を得ることができます。下記のキーマッピングが原因でした。

   \rwp          <Plug>RestoreWinPosn

grepすると定義場所が下記というのがわかりました。
~/.vim/bundle/Align/plugin/cecutil.vim

if !hasmapto('<Plug>RestoreWinPosn')
 map <unique> <Leader>rwp <Plug>RestoreWinPosn
endif

.vimrcに下記のような1行を書くとmapが実行されなくなるので、そのようにすると便利機能と引き換えに入力待ちを消することができました。

nmap none <Plug>RestoreWinPosn

参考