vimの拡張子によるfiletype自動判定の正しい設定方法

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に変更しました。

4件のコメント

  • 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ディレクトリに移動できるみたいです。さすがに、コマンドプロンプトでは認識されませんでした。

コメントする

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


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください