vimでphpファイル保存時に自動で構文チェックを行う

地味だけど意外と重要な構文チェック。「php -l 対象ファイル」で確認するアレです。
ブラウザで確認する段階になってエラーが出たりするとイラっとするので、
未然に防げるのはストレス軽減になります。

ちなみに「vim php 構文チェック」とか「vim php 文法チェック」とかで検索すると、
すでに他にも解決策があります。

vimrcに以下を追加

augroup PHP
  autocmd!
  autocmd FileType php set makeprg=php\ -l\ %
  " php -lの構文チェックでエラーがなければ「No syntax errors」の一行だけ出力される
  autocmd BufWritePost *.php silent make | if len(getqflist()) != 1 | copen | else | cclose | endif
augroup END

" なくてもいいけどあった方がより便利
syntax on

サンプル

なんかphpをいじってます。パッと見て分かりにくいですがカッコが一つ足りていません。

ここで保存。
するとquickfixが自動で開かれる。syntax onならエラー個所にカーソルが飛ぶ。
先ほどの画像から地味にカーソルが移動しています。

カッコを足して(修正して)保存すると、エラーがなくなったのでquickfixが自動で閉じる。

便利。

複数エラーがあっても一度に全て表示してくれないけど、これはphp -lの挙動だから仕方ないかな。
と、ここまで書いて「一度に一つしかエラー出せないならquickfixの意味あんまなくね」と思った。
まあいいか。