vi/vim - 自定义格式取决于代码中是否存在特殊文件或标签

Clo*_*oud 4 c linux vi vim rc

问题

有没有一种简单/可靠的方法让 VIM在项目/目录特定的基础上检测特殊文件(即:.vimrc具有几个设置的自定义),或者根据特殊标签/的存在来更改运行时设置源文件 ( .c) 或头文件 ( )开头的注释中的字符串/哈希值.h字符串/哈希必须映射到文件中的函数/设置.vimrc,并且不得包含实际设置本身。


背景

我有一个多开发人员项目,其中我们都有一组针对各种编辑器(主要是)的通用代码样式设置,并且我们都严格遵守这些设置,例如换行符样式(CRCR+LF)、缩进(长度、硬制表符与扩展为空格),等等。


问题

我正在创建一些新项目,由于我们无法控制的原因(即:我们必须使用静态代码分析工具),这些项目将需要与我们不同的样式设置。在静态代码分析工具中,有一些方法可以绕过这个问题,但是有一个非技术/法律要求,即我们避免禁用该工具的“功能”。

对于每个新项目,我想以某种方式让 / 知道一些特殊标志,要么通过项目目录结构根目录中存在特殊文件,要么通过特殊关键字/标签/哈希/等我可以放入一个/* C-style block comment */. 当 / 知道这个“触发器”的存在时,我希望它调用一个函数来覆盖换行符、缩进等的样式设置。如果这是可能的,是否也可以有多个互斥的这样的“触发器”让每个人都有一个共同点.vimrc,项目决定使用哪种风格?


问题-redux

有没有一种简单的方法可以实现这一点?

rom*_*inl 5

一种解决方案::help modeline Vim 的模型行 ( ) 和Emacs 的文件变量。

\n\n

这些是您放入文件中并由编辑器解释的特殊注释。您可以使用它们来设置缩进样式、文件编码等。

\n\n

在我看来,模型行是丑陋的噪音。

\n\n

Vim 的一种解决方案:( .exrc ) :help \'exrc\'

\n\n

您可以将项目特定的设置放在.exrc项目根目录下的文件中。该手册声称该解决方案不安全,但我不明白正常功能的成年人如何会被它击败。YMMV。

\n\n

Vim 的一种解决方案:特定于目录的自动命令。

\n\n

这是最后提到的更安全的替代方案,:help \'exrc\'但它要求每个贡献者向自己的贡献者添加内容vimrc,所以我认为\xe2\x80\xa6 没有那么有用。

\n\n

最终的解决方案: editorconfig

\n\n

您将设置放在.editorconfig项目根目录下的 a 中,并让每个贡献者的 IDE/编辑器处理它。

\n