c - #if 1 的 Vim 语法问题

标签 c 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 <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/

相关文章:

c - 除数之和(除了它本身)

c - 为什么在 char 变量中存储 255 在 C 中给出它的值 -1?

c - omap-4460 的 UART4 基址

vim - 在VIM中移动超过行尾的字符数

c++ - 为 libstdc++ 生成 CTAGS(来自当前的 GCC)

vim 将文本编码为 html 和 hex(用于 javascript)

ruby-on-rails - 使用 rails.vim 转到最后一个文件

时间:2019-03-17 标签:c++: Help correcting endless loop while modifying c-string array

c - 内存中的静态全局

vim - UltiSnips 不会自动重新加载对片段文件的更改