web-dev-qa-db-ja.com

誤検出されているファイルのVIMファイルタイプ設定を保存する方法は?

私のウェブサイトのApache設定ファイルの名前はmywebsite.com。どうやら拡張子.comが原因でvimが間違ったファイルタイプをdclとして設定しているため、構文の強調表示も間違っています。他のすべてのホスト構成ファイルは、Apacheファイルとして正しく識別されます。

私は:set filetype=Apacheそしてすべてが素晴らしく見えますが、vimを閉じて編集に戻った後、ファイルタイプは再びdclに戻ります。

ホスト構成ファイルの名前を変更する以外に、これに対する解決策はありますか?この1つの特定のファイルのファイルタイプをvimに記憶させる方法はありますか?またはさらに良いことに、この間違ったファイルタイプの検出を修正する方法はありますか?

2
billynoah

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 Apachesetl ft=Apacheのどちらが良いかわかりません。)


検出が完全に間違っているわけではなく、単に不正確であることに注意してください。 OpenVMオペレーティングシステムは、シェルスクリプトやバッチファイルと同様に、「コマンド」ファイルの拡張子として.comを使用し、OpenVMSシェル言語DCL( DIGITAL Command Language )で記述されています。 )。

8
user1686

これを行う方法は、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
4
garyjohn

以下の両方の回答に加えて、メインの設定ファイル/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上記の私の質問へのコメントでこのようにすることですが、少なくとも、これらのファイルタイプの関連付けがどこから発生したかを明らかにするのに役立つため、これは便利だと思います。

0
billynoah