- 更新日: 2015年9月28日
- Vim
RuboCopをVimで使う設定(Syntastic/プラグイン)
RuboCop は Ruby のコーディングスタイルをチェックしてくれる gem ライブラリです。Ruby の標準的なコーディングスタイルを強制する警告を出してくれるので、コーディングスタイルを身につけたい場合やチーム開発等でコーディング規約を統一したい時とかに便利かと思います。
https://github.com/bbatsov/rubocop
— 環境 —
Mac OS X Yosemite
Vim 7.3(MacVim)
rubocop 0.34.1
RuboCop の gem をインストール
以下 rbenv 環境下での rubocop インストール。
1 2 3 4 5 6 |
$ gem install rubocop $ rbenv rehash $ which rubocop /Users/user_name/.rbenv/shims/rubocop |
ターミナルで rubocop コマンドが使えるようになるので、チェックしてみます。
1 2 3 4 5 6 7 |
$ rubocop ./app/controllers/application_controller.rb Inspecting 1 file . 1 file inspected, no offenses detected |
編集したファイルを毎回ターミナルでコマンドを打ってチェックするのは大変なので、Vim 上でチェックが走るように設定します。以下 rubocop の Vim プラグインを使う方法と、Vim プラグインである Syntastic でチェッカーに rubocop を設定する2つの方法があります。
Vim プラグインで入れる
NeoBundle を使ってること前提です。rubocop の vim プラグイン vim-rubocop を入れる。
~/.vimrc
1 2 3 |
NeoBundle 'ngmy/vim-rubocop' |
上記を ~/.vimrc に追加して、
1 2 3 |
:NeoBundleInstall |
https://github.com/ngmy/vim-rubocop
Vim プラグインの管理に NeoBundle を導入 | EasyRamble
Syntastic で rubocop 実行
Syntastic(Vim プラグイン)でチェッカーに RuboCop を使う。私は既に Syntastic を使っていましたので、こちらの方法を採用しました。
~/.vimrc
1 2 3 4 |
NeoBundle 'scrooloose/syntastic' let g:syntastic_ruby_checkers=['rubocop', 'mri'] |
上記を ~/.vimrc に追加して、
1 2 3 |
:NeoBundleInstall |
ファイルタイプが Ruby の時のみにチェックする設定。
~/.vimrc
1 2 3 4 5 |
NeoBundle 'scrooloose/syntastic' let g:syntastic_mode_map = { 'mode': 'passive', 'active_filetypes': ['ruby'] } let g:syntastic_ruby_checkers=['rubocop', 'mri'] |
syntastic_mode_map の mode は、active または passive を指定。active だと保存時にチェックが走り、passive だと :SyntasticCheck コマンド実行時にチェックが走る。デフォルトは active っぽいです。
動かない場合
当初どこか設定をミスったのか Vim 上でチェックが走らなかった。いつの間にか動くようになったのですけれども。動作しない場合の確認のためのコマンド等を、いくつか紹介しておきます。いずれも Vim 上のコマンドモードで実行します。
1 2 3 4 |
:echo executable('rubocop') # => 1 |
1 が返ったら rubocop が有効になっている。これで、
1 2 3 4 |
:echo executable('rubocop') # => 0 |
と 0 が返ってきたら、Vim で RuboCop が有効化されていない。また、以下のコマンド等もチェックに使えます。
1 2 3 4 |
:echo syntastic#util#getVersion('rubocop --version') :echo syntastic#util#versionIsAtLeast(syntastic#util#getVersion('rubocop --version'), [0, 9, 0]) |
syntastic を使って RuboCop を入れた場合、Syntastic で用意されているコマンド(:SyntasticInfo)でもチェック可能です。
1 2 3 4 5 6 7 8 9 10 11 |
:SyntasticInfo # -------------------------------------------------- Syntastic version: 3.6.0-156 (Vim 703, Darwin) Info for filetype: ruby Global mode: active Filetype ruby is active The current file will be checked automatically Available checkers: mri rubocop Currently enabled checkers: rubocop mri |
Available checkers:, Currently enabled checkers: の箇所に、有効化されているチェッカーが表示されます。
以上 RuboCop を Vim 上で使うための設定でした。RuboCop で Vim 上でシンタックスを自動チェックさせると、チェックにちょっと時間がかかるので若干ストレスフルかもです…。個人的なプロジェクトでは OFF にしたい感じもしますが、標準的なコーディングスタイルを細かく指摘してくれるのは助かります。
- – 参考リンク –
- Ruby – Rubocopを使ってコーディングルールへの準拠チェックを自動化 – Qiita
- Rubocopをsyntasticを使ってVimから自動実行する – Qiita
- Ruby 2.1.3 だと Syntastic で rubocop が動かない – Qiita
- [vim]Syntasticでpython用の設定をする – dackdive’s blog
- https://github.com/scrooloose/syntastic/issues/1145
https://github.com/bbatsov/rubocop#editor-integration
- Vim の関連記事
- Vimでカーソル下の文字列をgrep(vimgrep)する.vimrc設定
- VimでURLをブラウザで開く
- Vimで正規表現の後方参照を使って置換
- CoffeeLintのインストール・Vimで使う設定
- scss-lintのインストール・Vimで使う設定
- Vimでインデント/タブ幅をファイル拡張子ごとに設定
- You must install neosnippet-snippets or disable runtime snippets(Vim)
- neobundle#rc() is removed function エラー(Vim)
- VimでSpaceを使った便利なキーバインド用vimrc設定
- Vimで行を結合、複数行を一発で連結する
Leave Your Message!