Rubyコードを静的にチェックしてくれるRubocopをVimから実行するプラグインには専用のvim-rubocopもあるんですが、このためだけのためにインストールするのが嫌だったので、syntasticから実行するようにしました。
追記: 2017年現在、 syntastic から ale に乗り換えました。ale は syntastic と異なり非同期で実行されるので Vim が固まりません。
インストール
何はともあれNeoBundleでsyntasticをインストール(NeoBundle自体の使い方については Vim - NeoBundleの導入 - Qiitaなどを参照してください)
NeoBundle 'scrooloose/syntastic'
それとRubocopもインストールします。
gem i rubocop
Rubocopを使うように設定する
NeoBundle 'scrooloose/syntastic'
let g:syntastic_mode_map = { 'mode': 'passive',
\ 'active_filetypes': ['ruby'] }
let g:syntastic_ruby_checkers = ['rubocop']
syntastic_mode_map
は 'active'
もしくは 'passive'
を指定します。 'active'
だとバッファを保存するたびにsyntasticが走り、 'passive'
の場合は :SyntasticCheck
実行時に走ります。
'active_filetypes'
は保存の度にsyntasticを走らせるファイルタイプを指定します。
2つをあわせると、基本的にsyntasticは走らせないけど、rubyのときだけは自動的に走らせる、という設定になります。
syntastic_ruby_checkers
はrubyでsyntasticが走らせるツールを指定するものです。
使ってみる
あとはrubyファイルを開いて保存するだけです。
syntasticはVimをブロックするので大きなファイルだとストレスたまるかも知れません。その場合は 'active_filetypes'
ではなく'passive_filetypes'
に指定して、必要なタイミングで :SyntasticCheck
を実行するようにするといいでしょう。
もしくは :SyntasticToggleMode
を実行すると active と passive を切り換えることもできます。