Vimのremap設定が思い通りに動作しない時は
この記事は Vim Advent Calendar 2012 の306
日目の記事になります。
下記の内容は id:thinca さんに vim-users.jp で教えていただきました。ありがとうございます。
また vim-users.jp の Hack #148 で id:thinca さんはすでに下記の内容を執筆されています。
再掲になりますがお許しください。
remap設定の調査方法
私は下記のようなvimrcで 7行目で意図する<C-l>がEscapeにならないと思い困っていました。
こういった場合まずremap command対象の右側を省略したcommandを入力します。
:inoremap <C-l>
するとcommand lineには
i <C-L> <C-R>=<SNR>2_DisableKeymap()<CR>
と表示され、たしかに意図するようにremapできていないことが確認できます。
つぎに「この2_DisableKeymap()がどのfileでremapされているのか」ですが先程のcommandの先頭にverboseをつけた下記のcommandで確認できます。
:verbose inoremap <C-l>
この結果は
Last set from ~/.vim/vimrc
となり、「自分のvimrcの31行目でふたたび<C-l>にremapしていることに気がついていなかった」というのがオチでした。
私の場合、日本語入力用pluginであるtcvimeの設定をそのままcopy and paste していたため再びremapしていることを忘れていた、という具合です。
似たようなシチュエーションは結構あるかもしれないのでVACに書かせていただきました。
おわり。