vimの拡張子によるfiletype自動判定の正しい設定方法
2007/06/28
vimの拡張子によるfiletypeの自動判定を追加する場合、今までは適当な場所にaoutcommandを定義していたけど、ちゃんと用意されている正しい方法を調べてみました。
filetype on が実行されると、$VIMRUNTIME/filetype.vim が読み込まれる。(:h filetype)
filetype.vimでは、ユーザのために以下を実行している。
runtime! ftdetect/*.vim
そのため、filetypeを設定する正しいと思われる方法は、以下のようでした。
filetypeの設定方法
- windowsの場合は、$HOME/vimfiles/ftdetect/ft.vim。unixの場合は、$HOME/.vim/ftdetect/ft.vim を用意する。拡張子が、vmならファイル名は何でもいい。
- ft.vimにfiletypeの決定のためのautocommandを書く。下は、velocityテンプレートの拡張子をhtmlと判定する。
au! BufNewFile,BufRead *.vm setf html
- vim再起動
将来、新しい設定を追加する場合はft.vimに設定を書いて再起動。
ft.vimに定義する内容は、$VIMRUNTIME/filetype.vim を参考にすれば、拡張子以外の判定も行なえるようでした。
こうしておけば、filetype on off の設定に従いつつ、ユーザの設定を加えることができます。
追記 20070724
id:kminoru さんより、コメント欄で指摘頂きました。個人用設定ディレクトリは、unixでは、~/.vim でした。
runtimepathについての詳細は、:h runtimepath 参照。
追記 20070726
誤解のないように、~/vimfilesという表記を、$HOME/vimfilesに変更しました。
help new-filetypeを見ると~/.vim/ftdetectになってるから、
~/vimfiles/ftdetectというのはあまり正しくないのではないでしょうか?
まあruntimepathの値にもよりますけど。
kminoruさん、コメントありがとうございます。
windows の場合、~/.vim はruntimepathに追加されないので、~/vimfiles を使用していました。
以前 :h runtimepathを見たときに、unixでも~/vimfilesがruntimepathに含まれると勘違いしておりました。
:h runtimepath によると個人用設定を格納するディレクトリはOSによってバラバラなので、OSによって(少なくともunixとwindowsでは)変わることを、後で追記しておきます。
smegheadさん、こんにちは
確かに、htlp runtimepathを参照してみるとUNIXでは、$HOME/.vimとあり、PC(windows)では$HOM/vimfilesとありますね。
”~”(チルダ)をつかってるのでてっきりUNIXかとおもってました。しかし、windowsも~がつかえるとは。。先入観はいけませんね。
kminoruさん、こんにちは
そうでした。普段cygwinを使ってることもあり、HOMEディレクトリの意味で、~(チルダ)で書いてしまってました(汗。。。$HOMEという記述が正しいですね。再度修正しておきます。
#windows版のvimで、:cd ~ とすると$HOMEディレクトリに移動できるみたいです。さすがに、コマンドプロンプトでは認識されませんでした。