私のウェブサイトのApache設定ファイルの名前はmywebsite.com
。どうやら拡張子.com
が原因でvimが間違ったファイルタイプをdcl
として設定しているため、構文の強調表示も間違っています。他のすべてのホスト構成ファイルは、Apacheファイルとして正しく識別されます。
私は:set filetype=Apache
そしてすべてが素晴らしく見えますが、vimを閉じて編集に戻った後、ファイルタイプは再びdcl
に戻ります。
ホスト構成ファイルの名前を変更する以外に、これに対する解決策はありますか?この1つの特定のファイルのファイルタイプをvimに記憶させる方法はありますか?またはさらに良いことに、この間違ったファイルタイプの検出を修正する方法はありますか?
1つの方法は、ファイルの最初または最後にmodelineを追加することです。基本的な Vimモードライン は次のようになります:
# vim: ft=Apache
コメント文字自体はVimによって無視されます。次のコメント文字も許可する代替構文もあります。
/* vim: set ft=Apache: */
Emacsや他のいくつかのエディターは代わりに-*- mode: Apache -*-
を使用します。
ファイルタイプの検出を拡張子で上書きしたい場合は、~/.vim/filetype.vim
に以下を追加できます。
augroup filetypedetect
au BufNewFile,BufRead *.com setl ft=Apache
augroup END
(setf Apache
とsetl ft=Apache
のどちらが良いかわかりません。)
検出が完全に間違っているわけではなく、単に不正確であることに注意してください。 OpenVMオペレーティングシステムは、シェルスクリプトやバッチファイルと同様に、「コマンド」ファイルの拡張子として.com
を使用し、OpenVMSシェル言語DCL( DIGITAL Command Language )で記述されています。 )。
これを行う方法は、Vimの組み込みリファレンスマニュアルに記載されています。
:help new-filetype
セクションC.2で説明したように、次の内容で~/.vim/filetype.vim
という名前のファイルを作成します。
if exists("did_load_filetypes")
finish
endif
augroup filetypedetect
au! BufRead,BufNewFile *.com setfiletype Apache
augroup END
これにより、.com
で終わるファイルがファイルタイプApacheとして認識されます。 mywebsite.com
のみを認識させたい場合は、そのau
行を次のように変更します。
au! BufRead,BufNewFile mywebsite.com setfiletype Apache
以下の両方の回答に加えて、メインの設定ファイル/usr/share/vim/vim73/filetype.vimを次の場所から変更するという最終的に行ったことを共有したいと思います。
au BufNewFile、BufRead * .com call s:BindzoneCheck( 'dcl')
に
au BufNewFile、BufRead * .com call s:BindzoneCheck( 'Apache')
これは、特にdclスクリプトを作成する予定がある場合は、すべてのユーザーに適しているとは限りませんが、私の場合は問題ありません。
注:これを質問の編集から適切な回答に移行しました。それを書いた時点では、回答を追加するのに十分な担当者がいませんでしたが、今はそうしています。ユーザー@romainlはいくつかの正当な理由を提起しましたnot上記の私の質問へのコメントでこのようにすることですが、少なくとも、これらのファイルタイプの関連付けがどこから発生したかを明らかにするのに役立つため、これは便利だと思います。