ファイル別の key-map設定で失敗した話

本記事は、Vim Advent Calendar 2012の 309日目の記事になります。

308日目は @manga_osyo さんの「[vim]unite.vim の action について理解する」でした。

今回は、私が キー配置の設定で失敗した話です。
色んな方の .vimrc 見てみたのですが、同じような設定方法をしている方も
いてどうしているんだろうなって気になりました。

失敗してしまった設定

  • help において、「q」で閉じる
autocmd MyVimrc FileType help nnoremap q :q<CR>

とこんな風に .vimrcに書いていました。
これが、失敗とも知らずに・・・

どんな場面で気づいたか

一度、Vim/gVim 立ち上げるとほとんど Vim内で作業しているのですが、
どうも FileTypeが helpで無くても「q」で閉じてしまうことが発生しました。

  • .vimrcを見直そうとして開く
:e ~/.vimrc

f:id:kocha2012:20131004231221p:plain

  • おっと。これどういう意味だっけ(helpを見る)
:help key-map

f:id:kocha2012:20131004231253p:plain

  • ふむふむ。なるほど!(help画面と閉じる)
q
(.vimrc)

f:id:kocha2012:20131004231310p:plain

  • あれ? .vimrcでも「q」で閉じてしまった

f:id:kocha2012:20131004231326p:plain

(´・ω・`)

なぜ???(調査)

  • .vimrcを見直そう
:e ~/.vimrc
:nnoremap q
なにも見つかりません
  • おっと。これどういう意味だっけ
:help key-map
:nnoremap q
n  q           *@:q<CR>
  • ふむふむ。なるほど!(help画面と閉じる)
q
(.vimrc)
:nnoremap q
n  q           *@:q<CR>

FileTypeが vim でも「q」のキーマップが有効になってる!!!

ということです。
知っている人からすれば当たり前かもしれませんが、
Globalでキーマップが設定されていたということです。

私がやるべき設定

  • help において、「q」で閉じる
autocmd MyVimrc FileType help nnoremap <buffer> q :q<CR>

と、このようにきちんと

<buffer>

をつけて、バッファ内でのみ有効にするすべきだった(;´∀`) 反省。

次回は @manga_osyo さんです。