Vim のプラグイン開発時に g:loaded_xxx を一時的に無効にする

この記事は Vim Advent Calendar 2012 295日目の記事になります。
さて、Vim Advent Calendar ですが、明日以降の予定は決まっていません。
明日以降書きたい方がいれば @osyo_memo までご連絡下さい。


上記の記事は元ネタ…というかおもいっきり同じ内容が記述されています。
まぁ知らなかった人向けに宣伝という事で。


さて、プラグインが読み込まれる時に実行される plugin/xxx.vim スクリプトファイルなんですが、

if exists('g:loaded_xxx')
  finish
endif
let g:loaded_xxx = 1

" ここにプラグインのコード記述する


みたいな記述が行われていることが多いです。
これはスクリプトファイルが再読み込みされないようにするテクニックです。
しかし、プラグインの開発中はこのファイルを変更して意図的に :source % することが多いです。
その際に変更した内容が反映されないのは不便です。


これを解消する為に次のように autocmd SourcePre で g:loaded_xxx 変数を一旦削除します。

" plugin のディレクトリにある .vim ファイルを :source した時に
" g:loaded_xxx 変数を削除する
augroup remove_g_loaded_xxx
    autocmd!
    autocmd SourcePre */plugin/*.vim unlet! g:loaded_{expand("<afile>:t:r")}
augroup END


今までは一時的に exists() の部分をコメントアウトしたりしていたんですが、これでだいぶ楽になります。
判定する変数名やファイル名は各々の環境に合わせて変更してもらうといいと思います。