当我使用#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 <[email protected]>
" Last Change: 2012 May 03
使用下的示例:help synID()
,我尝试了
:echo synIDattr(synID(line("."), col("."), 1), "name")
并获取“ cCppInElse2”。可能您会得到一些不同的东西。
覆盖默认语法文件(或其他vim脚本)时,通常的建议是将其放在您自己的vimfiles目录中。当新文件是较新的标准发行版的一部分时,我会例外:我确实希望在升级到将来的vim版本时将其替换。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句