如何在Vim中自定义宏标识符,仅显示匹配条件的C代码#ifdef块
实现方法
方法1:Vim原生语法高亮实现(无需额外插件)
- 先在你的Vim配置文件(
~/.vimrc)中添加基础配置,开启C语言条件编译的语法识别逻辑:
" 启用条件编译分支的语法判断 let g:c_no_if0 = 0 let g:c_allow_conditional_constants = 1
- 自定义宏的取值:如果要全局生效,直接在配置文件中添加如下格式的定义,键为宏名,值为宏的取值,无取值的宏直接赋值为空字符串即可:
let g:c_predef_macros = {'ID1': '1'}
如果需要临时针对当前打开的文件生效,直接在Vim命令行输入上述赋值命令,再执行:syntax sync fromstart刷新高亮即可。
设置完成后,符合条件的分支会正常高亮,未生效的分支会默认以注释灰度展示,完全匹配需求:设置ID1=1时// code 1正常高亮,设置ID1=2时// code 2正常高亮,未定义ID1时两段代码都显示为注释色。
方法2:使用条件编译专属插件实现内容隐藏/多层嵌套精准判断
如果需要完全隐藏未生效的分支、或者处理复杂多层嵌套的条件编译逻辑,可以安装C条件编译处理插件,配置更简单:
- 设置宏定义直接在命令行输入
:Define ID1=1 - 取消宏定义输入
:Undef ID1 - 切换到「仅显示生效分支」模式输入
:IfdefHideDisabled,恢复显示所有分支输入:IfdefShowAll
这种方式对宏表达式的计算精度更高,不会出现原生语法识别的误判问题。
提示:修改宏定义后如果高亮/显示没有更新,执行
:e重新加载当前文件即可触发重新计算。
内容的提问来源于stack exchange,提问作者Harsh
相关产品推荐
相关产品推荐

