一部のファイル拡張子が同義語であることをvimに伝えるにはどうすればよいですか?


21

.cppファイル内のC ++コードを編集しますが、テンプレートコードは.tccファイルに入ります。このようなファイルを開くと、構文の強調表示は使用できません。set syntax=cppでaa tpp.vimファイルで試しましたが~/.vim/ftplugin/、何もしませんが、エディターでは動作します。特定の拡張機能を他の拡張機能と同義語としてvimに処理させる方法はありますか?

回答:


19

Vim FAQ 26.8で説明されている~/.vim/filetype.vimように、を作成することをお勧めします。:help 43.2

上記のアプローチのより良い代替方法は、〜/ .vimディレクトリ(または 'runtimepath'オプションで指定されたディレクトリの1つ)にfiletype.vimファイルを作成し、次の行を追加することです。

" my filetype file
if exists("did_load_filetypes")
    finish
endif
augroup filetypedetect
    au! BufRead,BufNewFile *.x       setfiletype c
augroup END

編集:

did_load_filetypesあなたに何か問題が発生することはありません。変更後にVimを再起動するだけで済みます。

このファイルの複数の不必要なロードを回避するために必要であり、ベースファイル($ VIMRUNTIME / filetype.vim)から継承されます。

" Vim support file to detect file types
"
" Maintainer:   Bram Moolenaar <Bram@vim.org>
" Last Change:  2014 Jun 12

" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
  finish
endif
let did_load_filetypes = 1

詳細については、を確認してください:help new-filetype


なぜif声明?そのままにしておくと、autocmdは実行されません。
オアフィッシュ

Vimを再起動しても@oarfish?
mMontu

わかりました、これは奇妙です。私がしなければならないau!、すなわち、グループ内の文au! BufRead,BufNewFile *.py setfiletype pythonと下の行にau! BufRead,BufNewFile *.tpp setfiletype cpp。ただし、実際に機能するのは2番目の方法だけです。.pyファイルを編集しても、ファイルタイプはに設定されませんpython。私はまさにvim-guruではないので、おそらく何かが欠けています。
オアフィッシュ

@oarfish編集で言及したファイルをチェックするとau BufNewFile,BufRead *.py,*.pyw setf python、の行がすでに含まれていることがわかるので、最初の行は無関係です。問題はおそらく他の場所にあります。
mMontu

"Editing .py files does not set the file type to python"- :set ftその場合の出力は何ですか?Pythonでない場合は、Vim-FAQ 2.5の
-Vimに

14

あなたは(あなたのグローバルで.vimrc)することができます:

autocmd BufEnter *.tpp :setlocal filetype=cpp

autocmd BufEnter *.cuf :setlocal filetype=fortranCUDA FortranファイルをFortranとして扱う方法
khaverim

1

一つも持っている可能性があり:au BufRead,BufNewFile *.tpp setlocal filetype=cppその中で.vimrc、このようなファイルで開いた時という.tpp拡張子を、ファイルタイプが設定されているC ++


1
これは、@ edi9999の答えと基本的に同じようです。のBufRead,BufNewFile代わりに使用する理由を詳しく説明してもらえますBufEnterか?
オアフィッシュ

@oarfishそれほど重要ではないと思いますが、ドキュメント()で「BufEnter:.... BufReadPostオートコマンドの、バッファの編集を開始するときにも実行されます」と述べているので、私はBufRead,BufNewFile先を好みます。どこBufReadPostは代名詞であるBufRead。さらに、以前はこれが必要だとは思わなかったので、回答でも省略しました。(私はこれを完全に間違っていると解釈したかもしれません、さらなる議論を聞いてうれしいです)BufEnter:help BufEnter:setlocal
-tallamjr
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.