物置き

ChangeLogメモ周りの変更

Vim7.1でChangeLogメモを編集する際、oで新規アイテムを追加することができるんだけど、
一度ChangeLogメモファイルのバッファを閉じてから、再度開いた場合にoがきかなくなる。


2回目以降に :map o で確認してみたところ、何もマッピングが行われていない。
$VIMRUNTIME/ftplugin/changelog.vimを見たら、oをマッピングする箇所が次のようになっていた。

	if exists(":NewChangelogEntry") != 2
		map <buffer> <silent> <Leader>o <Esc>:call <SID>new_changelog_entry()<CR>
		command! -nargs=0 NewChangelogEntry call s:new_changelog_entry()
	endif

mapの部分がifブロック内に入っているせいで、2回目以降はmapが実行されていない。
mapの部分をifブロックの外側にだせば解決するのだけど、
標準で入っているものに手を加えるのはなんとなくためらわれるものがある。
というか、Vimインストールディレクトリの方はバージョン管理していないので、
Vimを使っている複数の環境それぞれで修正する必要があり、微妙。
できれば、バージョン管理下にある$HOME/vimfiles以下の修正でなんとかして、
他の環境では同期をとるだけで修正が反映されるようにしたい。

ということで、$HOME/vimfiles/after/ftplugin/changelog.vim側に
マッピングを上書きする設定を追加することに。

noremap <buffer> <silent> <Leader>o :<c-u>NewChangelogEntry<CR>

これで、複数回開いてもoが効くようになった。
あと、以前の設定だと、自分の環境ではなぜかoを実行するたびに
ビジュアルベルが火を吹いてくれてたんだけど、
:... という形に変更したらおとなしくなった。めでたしめでたし。