2

私はいくつかのファイルタイプ固有の vim スクリプトを作成していましたが、C++ ファイルの場合、c.vimとの両方が実行されていることcpp.vimに気付きました。C++ は C のスーパーセットであるため、これは非常に理にかなっています。しかし、私の質問は次のとおりです。これを実現するロジックはどこにあるのでしょうか。c.vimcpp.vim

つまり、vim のコンパイル時に、C++ ファイルも C ファイルであることを伝える何かが組み込まれているのでしょうか、それとも .vim ディレクトリにこの動作を制御するファイルがあるのでしょうか? それともまったく別のものですか?

この質問で説明されているように、vim が私の C++ ファイルに割り当てたファイルタイプを ( を使用して) チェックすると、 のようなものではなく、:set ft?が返されることに注意してください。cppc.cpp

4

2 に答える 2

4

私のcpp.vimファイル(下/usr/share/vim/vim73/syntax)には次のものがあります:

" Read the C syntax to start with
if version < 600
  so <sfile>:p:h/c.vim
else
  runtime! syntax/c.vim
  unlet b:current_syntax
endif

だから、c.vimファイルを読んでいます。

于 2013-06-19T22:49:02.553 に答える
0

これについてはよくわかりませんがコンストラクトを使用するときに必要cpp.vimになると思います。vim の目には、C++ が C のスーパーセットと見なされているわけではありません。しかし、vim構文ファイルは読むのが面倒なので、それを確認するために構文ファイルを徹底的に読みませんでした;-)c.vimextern "C" {}

それ以外の場合、vim は編集中のファイルを C++ ファイルとして認識し、ファイルftの拡張子 (または最初の文字、iinw) を指定して、一連の構文、プラグインなどのみをロードするメカニズムを介してその構文をロードします。

HTH

于 2013-06-19T22:49:23.947 に答える