当我使用#if 0、#else 和#endif 预处理器注释掉我的代码时,vim 正确地显示了语法。但是如果我使用像这样的序列 #if 1, #else 和 #endif vim 应该显示 #else 和 #endif 之间的代码作为评论,但事实并非如此。我的 vim 版本是 7.2.411。我在我的代码中的很多地方都使用了这些,有时会因为没有突出显示而感到困惑。有没有办法启用此功能。感谢您的帮助。
例如:
#include <stdio.h>
int main()
{
#if 1
printf("inside #if 1\n");
#else
printf("inside #else\n"); // <-- This part should appear in commented syntax
#endif
return 0;
}
最佳答案
可能您需要升级到 vim 7.3+,或者至少更新 C 的语法文件。我的 $VIMRUNTIME/syntax/c.vim(对于 vim 7.3)的前几行是
" Vim syntax file
" Language: C
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2012 May 03
使用:help synID()
下的例子,我试过了
:echo synIDattr(synID(line("."), col("."), 1), "name")
并得到“cCppInElse2”。可能你会得到一些不同的东西。
覆盖默认语法文件(或其他 vim 脚本)时,通常的建议是将其放在您自己的 vimfiles 目录中。如果新文件是更新的标准发行版的一部分,我会异常(exception):我确实希望在我升级到某个 future 版本的 vim 时替换它。
关于c - #if 1 的 Vim 语法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21987673/