#if 1的Vim语法问题

萨拉斯

当我使用#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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章