blogこの広告は、90日以上更新していないブログに表示しています。片手にご機嫌の年越しと相成ったであろうことは想像に難くない。私とてそのクチであり同じ穴の狢というやつである。微妙に日本語の使い方を間違っている気もする。autocmdを使用して自動的に処理を実行する"で紹介されている、"保存時に構文チェックを実行する"技が簡単に導入できる上になかなかどうして便利そうなので早速我が.vimrcにも書いてみた次第である。END構文エラーを含む*.rbファイルを保存すると、ウィンドウの下の方に...Good.しかし問題があって...構文に問題が無い場合もなにか言ってくるのである。構文エラーの有無にかかわらず、ファイルを保存するたびにEnterキーを一回余計に叩かなければならない。理想としては、問題が無いときは黙っていて、なにか失敗した場合にだけ文句を言ってきて欲しい。シンタックスチェックの出力をQuickFixに追い出して、必要に応じて:cwして見る、というやり方にしたい。使うところで、同書籍6-7で、:compilerと:makeを使ってコンパイルないしシンタックスチェックを行う方法が紹介されている。この場合、:makeの出力はQuickFixに流れるので、まさに望んでいる通りの処理である。:makeを使う方法にふれた。少なくともRubyに関しては、あれを併用すればいいのではなかろうか。いうわけで、設定してみた。事前にvim-rubyをインストールしておく。Vimプラグインの管理にはpathogenやvundleを使うのが今風であるが、いまどきunite.vimと連携できないプラグインなんて...という風潮もあるのでneobundle.vimを使うといいと思う。~/.vim/after/ftplugin/ruby.vimに、次の一行を書き加える。コマンドが走るようになる。.vimrcのautocmd設定部分を書き換えて次のようにする。ファイルパターンは*.rbだけでもいいのだが、ついでにRakeにも対応させよう*1。わかっていないのだが、これを付けないと画面表示がガタガタになる。QuickFixを自動的に開く最後に、:cwを自分で叩くのも面倒なので、これもautocmdに任せることにする。:makeしたら勝手に:cwするよう設定するのである*2。ENDこれで、ファイル保存時に構文エラーがある場合のみQuickFixウィンドウが表示され、エラーが解消され次第勝手に閉じるようになる。QuickFixウィンドウ上のエラーメッセージ行上でEnterキーを叩けばエラー箇所までカーソルが跳ぶようにもなる。いいやり方があるのかもしれないが、自分のVim力ではこのくらいが限界。vim-rubyが適切にfiletypeを判別してくれているのに、autocmd側でも似たような設定(*.rbとか)を書かねばならないのが、なんかなぁ。さんに教えていただいた。詳しくは本記事のコメント参照なのだが、autocmdを~/.vimrcではなく~/.vim/after/ftplugin/ruby.vimに書けよ、という話。起動してしまい、まったく見当違いな文法エラーを警告してくるという非常に困った動作をしていたのだが、原因がわかった。vim-hamlのftplugin/haml.vimと、vim-rubyのftplugin/eruby.vimが、内部でftplugin/ruby.vimを読み込んでいた。ftplugin/ruby/*.vimそのため、それぞれfiletypeはhamlだのerubyだのと言っておきながら、内部的にはruby用のcompiler設定を行ってしまっていたらしい。