[vim] syntastic + rubocop で保存時には実行しないようにする

概要

題の通りの備忘録。[Ruby] RuboCopをインストールしてvimで実用化するまで | qs Developersのオマケ。

問題点

[Ruby] RuboCopをインストールしてvimで実用化するまで | qs Developers にて、syntasticでrubocopを使うように設定することが出来たが、rubocopは案外処理に時間がかかってしまうので、保存のたびに発火されると困る。(非同期で動かせる方法があるなら良いけど…)

解決策

vimrcのsyntasticの設定周りを以下のように変更

NeoBundle 'scrooloose/syntastic.git'
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 0
let g:syntastic_check_on_wq = 0
let g:syntastic_mode_map = { 'mode': 'passive', 'passive_filetypes': ['ruby'] }
let g:syntastic_ruby_checkers=['rubocop']

上記のようにすると、ファイルを開いたときや保存した時に自動で解析が走らないようになる。

手動で解析を実行するには、:SyntasticCheck コマンドを叩く必要があるが、これはこれで面倒くさい。

なので以下のようなキーバインドを定義する。

nnoremap <C-C> :w<CR>:SyntasticCheck<CR>

これでノーマルモードでCtrl+Cキーをタイプすることで、バッファの保存と解析の実行をまとめて行うことができる。

普段の保存は従来どおり:wで、解析付きで保存したい場合はCtrl+Cと使い分けることで、保存のたびに一瞬重くなるのを避けることができる。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です