昨日書いた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がデカい自慢をする人は大抵初心者なんじゃね?

カテゴリー:

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

  1. kcrt より:

    僕は逆にすべて.vimrcにautocmd BufReadとかで書くことにしてます。autocmd BufNewFile,BufRead *.php :map :!php %:p
    みたいな感じで。

    ftpluginに書くよりも、管理するファイルが少なくてすむので、何台もマシンがある場合はとても便利です。

  2. halt より:

    なるほどー。ファイル数を少なくしたいというのであればそういうやり方はありですよね。
    自分の場合syntaxの事を考えると.vimrcだけじゃどうしようもないので.vimの下はファイルだらけになっちゃってます。

  3. pypupypa より:

    ftpluginsの話(ファイルタイプによる出し分け)

  4. setoazusa より:

    「.vimrcは451行しかないです。 」

  5. gologo13 より:

    ftplugins (file type plugins). in case of settings dependent on filetype, don't write the setting to .vimrc, but ~/.vimrc/ftplugins/perl.vim

  6. #TokyoVim 「.vimrc に設定を書くとファイルタイプ関係なく実行される」え、そうだったの!? / 「いやー、.vimrcがデカくなっちゃって」とかいってるやつは大抵初心者 | この先生きのこるには http://t.co/fRJ5JpYl

  7. @iaiabot より:

    NowBrowsing: 「いやー、.vimrcがデカくなっちゃって」とかいってるやつは大抵初心者 | この先生きのこるには – http://t.co/hEr6Emh1

  8. s より:

    「.vimrcは451行しかないです。 」
    こんなん草生えるわ

  9. michael26 より:

    “ftplugin/ruby.vim”

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ねこ認証:9つのパネルの中からねこを3匹選んでください