noyのブログ

プログラミングとかゲームとか

vimに構文チェックのプラグインを入れた(C++)

syntastic

f:id:noy72:20170512093811p:plain
このようになりました。

導入の流れ

GitHub - vim-syntastic/syntastic: Syntax checking hacks for vim
丁寧に書いてあるので、特に迷うこともないと思います。
インストールの手順に沿って、上から順番にコマンドを実行していきましょう。

しかし、その状態ではエラーチェックが行われなかったので、正しく動作しているかを確かめるため以下のコマンドを入力しました。

:SyntasticInfo

f:id:noy72:20170511184017p:plain
明らかに動いていなさそう。

Q&Aによれば、構文チェッカーが有効になっていない可能性があるのこと。
以下を.vimrcに書き込みました。

let g:syntastic_cpp_checkers = ['gcc']

f:id:noy72:20170512093803p:plain
できまし……ん?

errorやwarningが出ます。
構文チェックがc++11に対応していません。

そこで、

let g:syntastic_cpp_compiler="gcc"
let g:syntastic_cpp_compiler_options=" -std=c++11" 

ちゃんとオプションをつけてあげましょう*1

これで正しくチェックしてくれるようになりました。

導入してわかったこと

ファイル上書き時に構文チェックされる。

リアルタイムで更新されると思っていました。
vimrcで設定を変えれば、編集モードに入ったときにチェックしてくれます*2

割と重い

チェックする時に微妙に止まります。
バニラのvimがぬるぬる動くように感じる程度には止まります。

w0rp/ale Asynchronous Lint Engine

f:id:noy72:20170521103009p:plain

こちら 脱VimしようとしてAtomを触ってたけど、やっぱりVimを使うことにした - console.lealog(); で速いとの情報を得たので、早速インストール

GitHub - w0rp/ale: Asynchronous Lint Engine
同じようにインストール。
syntasticがあると衝突するのでアンインストールしておきます。

導入してわかったこと

syntasticと比べて速い

確かに速い。スムーズに動きます。
ただ、エラー箇所を示す矢印(>>)の表示がやや遅いです。


結論

  • ファイルが小さいなら、syntasticが極端に遅くなることはない。
  • Asynchronous Lint Engineの方が速い。
  • 適当にコマンドをコピペするだけでインストールできる