我有一个C代码库,源文件中到处都是#ifdef块。有多个标识符和对应的ifdef(ifdef嵌套到多个级别)。在查看vim
中的代码时,是否有一种方法可以定义多个标识符并查看/突出显示我的代码,这样我就只能看到定义标识符时适用的ifdef块。
#if defined(ID1) && (ID1 == 1)
// code 1
#elif defined(ID1) && (ID1 == 2)
// code 2
字符串
当设置ID=1
时,我的视图应该只显示/突出显示code 1
,当ID=2
时,我的视图应该只显示/突出显示code 2
,否则如果没有定义ID
,code 1
和code 2
都不应该突出显示或显示。
2条答案
按热度按时间oknrviil1#
字符串
也就是说,如果您想在阅读时隐藏代码,有几种方法可以实现
1.折叠:详见
:help fold
1.提示:junegunn/limelight.vim是一个很好的工具,可以选择性地关闭光标所在区域以外的代码空间的语法高亮显示。
bvjxkvbb2#
这里有一个折叠C++的稍微实用的解决方案。
首先设置通用ifdef折叠。这应该捕获
#if
,#ifdef
和#ifndef
:字符串
然后你可以这样做来关闭所有的
DEBUG
折叠:型
运行该命令后,此代码示例将如下所示(
set foldcolumn=3
,因此您可以看到折叠):的数据
你可能想写一些更聪明的东西来做
:foldopen!
,收集所有的定义,分为定义的和未定义的,构建适当的正则表达式,并使用改进的正则表达式执行上述命令。另一种方法是写一个
'foldexpr'
,它做类似的事情,但只折叠没有编译的块。然后你总是可以用:foldclose!
来隐藏所有没有编译的块,用:foldopen!
来再次查看所有的块。