vim 的自动完成:如何防止 vim 读取一些包含文件?

10 vim

Vim 有方便的 Ctrl-N 键,可以用当前文件或任何包含的文件中的单词自动完成光标下的单词。如果一旦我包含 boost 库,这个功能就变得绝对没用了,因为读取整个 boost 包含需要几十秒钟,而且我真的不想完成任何在 boost 中定义的东西。那么如何在查找包含文件时告诉 vim 忽略 /usr/include/boost 目录呢?哦,我如何设置 'include' 选项以忽略任何 #include <boost/.*> ?

小智 16

您正在寻找的选项是'complete',但它没有定义您要求的粒度。您所能做的就是指定是否扫描包含的文件。要禁用扫描所有包含的文件,您可以

set complete-=i
Run Code Online (Sandbox Code Playgroud)

否则,设置'include'忽略提升可能是您的最佳选择。

set include=^\\s*#\\s*include\ \\(<boost/\\)\\@!
Run Code Online (Sandbox Code Playgroud)

请注意,正如我在其他评论中提到的,您不应该使用"来指定选项,因为那是 Vim 的注释字符。相反,您需要转义空格。


小智 1

好的,我找到了第二部分的答案:

set include="#include \\(<boost\\)\\@!"
Run Code Online (Sandbox Code Playgroud)