VimScriptつらいですね。
僕はたまにしか書かないのですが、たまにしか書かないからこそ何度も何度も同じ罠にハマって辛いです。一説によるとVimScriptは怒りの言語らしいので、ハマればハマるほど強くなるんでしょうがつらいものはつらいです。
そこでvintです。
ギッハブ
vintがvimrcアンチパターンに対応したというはなし
vimrc アンチパターンを自動でチェックする - Qiita
そこでvintですといいましたが、情弱なので今さっき存在を知りました。
vintとはVimScript用のlint(シンタックスやコードの書き方についてチェックをしてくれるツール)のことです。
例えば、引数の頭にa:
を付け忘れているとかのつらみを実行前に発見してくれるのは素晴らしいですね。
ですが、いちいちコマンドラインから叩いて何行目かを確認してVimに戻るのは大変です、腱鞘炎になります。ここはSyntasticみたく、リアルタイムにエラーや警告箇所を表示させたいです。
そういう時に便利なのがvim-watchdogsとかいう素敵プラグインです。
ようはシンタックスチェックなんかをする、Syntastic的なものを簡単に自分でも作れるようにしてくれる、フレームワーク的なものです。しかもquickrunを使っているので非同期に実行出来ます。
それと、もう一つvim-hier
という、quickfixの結果を適当にパースしてエラーの場所をハイライトしてくれるプラグインを導入します。
以下、設定例です。
" cohamaさんforkの方が高機能なのでこっちをつかう NeoBundle 'cohama/vim-hier' " カーソル化のエラーメッセージをコマンドラインに出力する。お好みで NeoBundle 'dannyob/quickfixstatus' " watchdogsの依存プラグイン NeoBundle "Shougo/vimproc" NeoBundle "thinca/vim-quickrun" NeoBundle "osyo-manga/shabadou.vim" NeoBundle "osyo-manga/vim-watchdogs" " vintコマンドが存在するときだけチェックを行うようにします let g:quickrun_config = { \ 'vim/watchdogs_checker': { \ 'type': executable('vint') ? 'watchdogs_checker/vint' : '', \ }, \ "watchdogs_checker/vint" : { \ "command" : "vint", \ "exec" : "%c %o %s:p ", \ }, \ } " ここはautogroup経由で定義するようにしないとvintに怒られます autocmd BufWritePost .vimrc,*.vim WatchdogsRunSilent
簡単のためにNeobundle、quickrun自体の基本設定などいくつか簡略化して記述しています。
また、watchdogs自体のカスタマイズは:help
が充実しているのでそちらを読むことをおすすめします。
ともかく上記の設定を入れておくことで、保存するたびに自動でlintが走り、凡ミスやVimScript/vimrcアンチパターンへの厳しいレビューが入るようになります。ありがとうございます。
どんな言語でも実行前にヤバイ場所がわかるに越したことはないです。チェックツールさえ存在すれば、vim-watchdogsで簡単にリアルタイムなエラー表示が出来るようになるので大変な便利がありますね?
なお僕のvimrcの警告数は107でした。よくないですね。
vint自体の導入はpipやpipsiを使うと良いでしょう。
pipsiについてはこのエントリが参考になります。
Pythonの開発をしている人でPython製の便利スクリプトを導入するならpipsiが便利っぽい - タオルケット体操
VimScriptやプラグイン開発については以下の書籍が最強に参考になります。

Vim script テクニックバイブル ~Vim使いの魔法の杖
- 作者: Vim scriptサポーターズ
- 出版社/メーカー: 技術評論社
- 発売日: 2014/08/06
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る
いじょうです。