vimでPHPのシンタックスチェック
最近、PHPなお仕事なんだけど、PHP用のvimの設定を何もしてないので、とても心細い。シンタックスハイライトくらいはデフォルトで用意されてるけど。
開発言語を変えると、エディタの設定も変えなきゃいけないから面倒だ。これは、vimに限らず、emacsでもeclipseでも同じはず。
極力エディタをカスタマイズしない派の人もいるみたいだけど、なんのために、拡張可能なエディタを使ってんだかわからない。メモ帳でも使ってろと言いたい。
サーバ管理を生業としている人は対象外だけど、複数の環境で作業する必要があるからカスタマイズしないという、よくある意見はスルー。そもそも、本番環境とかで開発するべきじゃないし、開発環境であれば、設定ファイルを共有する方法は、今ならいくらでもある。
シェルとエディタはカスタマイズしてなんぼ。どんどんカスタマイズするべきなんだよ。手に馴染むまで。そして、常に進化させる必要がある。現状に満足することはリスクだと思え。
ということで、まずは、PHPのシンタックスチェックを導入してみた。
ここで見つけて便利だなーと思ってたんだけど、しばらく使ってみて、いちいち手動で実行するのが面倒でたまらん。いつのまにか、こんなんじゃ満足できない体になってしまった。こういうのは、保存時に自動的にやるべき派なので、ちょっと修正した。.vimrcに追加すればok。
func PhpLint()
let rslt = system('php -l '.bufname(''))
if !strlen(matchstr(rslt, '^No syntax errors detected in .*$'))
echo rslt
endif
endfunc
au BufWritePost *.php :call PhpLint()
php -lを実行すると、シンタックスエラーがなくても、冗長なメッセージを吐きやがる。こういうのは、UNIXの哲学に反するし、ウザくてキライ。なので、エラーがあったときだけ通知するようにした。
systemで実行した外部プログラムの終了コードをチェックしたかったんだけど、やりかたがよくわからんかったので、とりあえず、文字列マッチングで対処。納得いかねーけど、まあ、目的のものはできた。
久しぶりに、vimスクリプト書いたけど、相変わらず、いい意味でキモイ。