我正在编写一些特定于文件类型的 vim 脚本,c.vim当cpp.vim我注意到对于 C++ 文件时, 和c.vim都cpp.vim被执行。这很有意义,因为 C++ 是 C 的超集。但我的问题是:实现这种情况的逻辑在哪里?
也就是说,当 vim 编译时,是否有一些东西告诉它 C++ 文件也是 C 文件,或者 .vim 目录中是否有某个文件控制这种行为?或者完全是别的什么?
值得注意的是,检查 vim 已分配给我的 C++ 文件的文件类型(使用:set ft?)返回cpp,而不是像本问题c.cpp中讨论的那样。
我的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
Run Code Online (Sandbox Code Playgroud)
所以它正在读取c.vim文件。