これまで、シンタックスチェックには scrooloose/syntasticを使っていて、特に問題なく快適でした。
ところが、最近プロジェクトの肥大化に伴い、syntasticでのシンタックスチェックに数秒〜10数秒ほどかかるようになってしまって、ついつい :w
しちゃう僕としては辛かった。
syntasticのgoチェッカーを読んでみると、どうやらgofmtしてgo buildしてるっぽい。
gofmtはvim-goでgoimports使うよう設定しているので必要ない。
あとはgo buildさえ出来ればsyntastic使わなくてもいいという発想から、quickrun+vimprocを使うことに。
結果かなり快適になりました。
設定は以下。
"" vim-quickrunとvimprocのインストール
"" vimprocは別途makeの必要あり。詳細は省略。
Plugin 'thinca/vim-quickrun'
Plugin 'Shougo/vimproc'
"" quickrun
let g:quickrun_config = get(g:, 'quickrun_config', {})
"" quickrunのランナーにvimprocを使用する
"" 成功時はバッファへ
"" エラー時はquickfixへ出力
let g:quickrun_config._ = {
\ 'runner' : 'vimproc',
\ 'runner/vimproc/updatetime' : 60,
\ 'outputter' : 'error',
\ 'outputter/error/success' : 'buffer',
\ 'outputter/error/error' : 'quickfix',
\ 'outputter/buffer/split' : ':rightbelow 8sp',
\ 'outputter/buffer/close_on_empty' : 1,
\}
"" quickrunにgo buildを登録
let g:quickrun_config["gobuild"] = {
\ 'command': 'go',
\ 'exec': '%c build %s',
\ "errorformat": '%f:%l: %m,%-G%.%#',
\}
"" *.goファイルを保存したら非同期にgo buildを実行
autocmd BufWritePost *.go :QuickRun gobuild