no-image

「いやー、.vimrcがデカくなっちゃって」とかいってるやつは大抵初心者

昨日書いたvimでPHPを編集中、1秒で文法チェックする方法 – /halt/Snapshotですが、ゆどうふさんが自分流・vimでPHPを編集中、1秒で文法チェックする方法 – ゆどうふろぐというエントリでシンプルな方法を提示してて、

&ftじゃないのは故意です。PHP以外の時に間違って-l付きで実行ってなんかやだなと思ったので。
な に か も ん だ い で も ?

という話がありますが、これ。.vimrcに設定を書くから起こる問題なんですよね。
.vimrcに設定を記述すると、どのファイルタイプでも関係なく実行される為、ゆどうふさんの書き方だと、Rubyを編集しててもphpのlintが走る事になります。「,l」はlintという意味でmapしてんのにそのファイルタイプにあったlintができないなんてイミナサス。かといってifで&ft見て状況に応じてmapを切り換えるのもダサス。

結論は


:h ftplugins

を見ろ。という話。


.vim/ftplugin/php.vim

というファイルを作ると、そこに書かれた設定はファイルタイプがphpの場合のみロードされるようになります。ここに、ゆどうふさんの設定を書いておけばphpファイルを開いた時だけphpでlintできるようになるわけです。
私のftplugin/ruby.vimには

nmap ,l :call RubyLint()<CR>

""
" RubyLint
"
function RubyLint()
  let result = system( &ft . ' -c ' . bufname(""))
  echo result
endfunction

と書かれているので、rubyを編集している時に,lするとrubyのsyntaxcheckが走るようになってます。

というか、mapに限らずプラグインのロードなんかもftpluginで分岐させましょう。phpで使うプラグインが他のファイルタイプの時に使えても無意味です。たくさんプラグイン入れると重くなるとかゆってるのは関係ないプラグインをロードしてるんじゃ?

私の場合、各ファイルタイプごとの設定は(一部実行順序を気にする必要のある設定を除いて).vimrcから外して書いているので、.vimrcは451行しかないです。

というわけで.vimrcがデカい自慢をする人は大抵初心者なんじゃね?