その他
    ホーム 技術発信 DoRuby Vimでファイル保存時に自動でrubocopを実行する
    Vimでファイル保存時に自動でrubocopを実行する
     

    Vimでファイル保存時に自動でrubocopを実行する

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    Rubyのコードを変更したら忘れずに Rubycop でチェックしたい。というときに使えるTipsです。

    前提

    • Rubocop がインストール済みでrubocopコマンドにpathが通っていること

    準備:NeoBundle のインストール

    以下のページを参考に Vim に NeoBundle を導入します。(今時のVimプラグイン管理は dein.vim らしいのですが、自分の環境はまだ NeoBundle です…)

    既に NeoBundle がインストール済みの場合、次の手順に進みます。

    NeoBundleの導入 – Qiita

    Vim に syntastic をインストールする

    syntastic は Vim 上でのシンタックスチェックしてくれるプラグインです。

    ~/.vimrc に以下の行を追加します。

    " syntastic インストール
    NeoBundle 'scrooloose/syntastic'
    
    " syntastic から rubocop を実行する設定
    let g:syntastic_mode_map = { 'mode': 'passive', 'active_filetypes': ['ruby'] }
    let g:syntastic_ruby_checkers = ['rubocop']
    

    上記を簡単に解説すると…

    • NeoBundle 〜
      このの行はプラグインを使用することを NeoBundle に対して知らせるためのもので、もしそのプラグインがインストールされていなければ、vim の起動時に GitHub のしかるべき場所からローカル(標準では ‘~/.vim/bundle` の下)に clone して、vimのプラグインとして自動的に読み込んでくれる。
    • let g:syntastic_* = 〜
      この行は syntastic プラグインからRubocopを呼び出すための設定

    これらを設定して Ruby のソースコードを編集して保存すると Rubocop のチェックが走ります。

    実行してみる

    ためしに以下のようなコードを入力して保存してみます。

    class Hoge
      def foo
        puts "hoge"
      end
    end
    

    実行結果は以下のようになります。
    警告が出てる行に$>が表示されます。また、:Errors と打つとエラーの一覧が表示されます。
    他にもいろいろ便利機能あるので詳しくは、syntasticの公式ページを見て頂くと良いと思います。

    enter image description here

    これで、ローカルでrubocop流し忘れて jenkins おじさんに怒られずに済みますね。

    参考

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