monoの開発ブログ

Vimのファイルタイプ自動検出に設定を追加する

(Updated on )

Vimは.vimrcにfiletype onと記述するとファイルを開くときにファイルタイプを検出して自動的に設定してくれます。この機能はかなり優秀で、ほとんどの場合は目当てのファイルタイプを設定してくれるのですが、ごく希に正しく設定されない場合があります。このような場合、自動検出の設定を追加することで対処できます。

ファイルタイプ検出の流れ

Vimのファイルタイプ判定は、$RUNTIME/filetype.vimで行われています。ここには大量の判定が記述されていますが、最後にruntime! ftdetect/*.vimという記述があります。すなわち、~/.vim/ftdetect (Windowsでは%HOME%\vimfiles\ftdetect) に拡張子が.vimのファイルを用意しておけば、デフォルトの判定結果に上書きして設定することができます。

設定の記述

拡張子.vimなので、中身はもちろんVimscriptです。以下の例は拡張子が.hppのファイルをC++の設定で開く記述です。通常、autocmd (au) ではグループを指定する必要がありますが、$RUNTIME/filetype.vim側でaugroupによってグループが指定されているため、ftdetect以下のファイルではグループの指定は必要ありません。

au BufNewFile,BufRead *.hpp setf cpp

記述例は前述の$RUNTIME/filetype.vimに大量にあるので、そちらを参考にするといいと思います。