Rubocopをsyntasticを使ってVimから自動実行する

  • 155
    いいね
  • 1
    コメント

Rubyコードを静的にチェックしてくれるRubocopをVimから実行するプラグインには専用のvim-rubocopもあるんですが、このためだけのためにインストールするのが嫌だったので、syntasticから実行するようにしました。

追記: 2017年現在、 syntastic から ale に乗り換えました。ale は syntastic と異なり非同期で実行されるので Vim が固まりません。

インストール

何はともあれNeoBundleでsyntasticをインストール(NeoBundle自体の使い方については Vim - NeoBundleの導入 - Qiitaなどを参照してください)

.vimrc
NeoBundle 'scrooloose/syntastic'

それとRubocopもインストールします。

gem i rubocop

Rubocopを使うように設定する

.vimrc
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 を切り換えることもできます。

合わせて読みたい