Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
151
Help us understand the problem. What is going on with this article?
@yuku_t

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

More than 3 years have passed since last update.

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

合わせて読みたい

151
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
yuku_t
FLYWHEEL社でソフトウェアエンジニアをしています。昔はIncrements社最初の従業員としてQiitaを開発したりCTOやったりしていました。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
151
Help us understand the problem. What is going on with this article?