我使用 vim/cscope/ctags 浏览 C 源代码。很多时候我发现使用 #ifdef
定义了一个宏两次甚至更多次,而我正在查看我不想要的定义。
所以我的问题是,在 vim 中是否有任何快捷方式可以使用它来确定我正在查看的行是否在 #ifdef
宏中?
我可以使用 :tselect
获取所有定义的列表,但我正在寻找一些快捷方式,例如我用来查找我所在函数的快捷方式(下面的示例)。
" Show function name
fun! ShowFuncName()
let lnum = line(".")
let col = col(".")
echohl ModeMsg
echo getline(search("^[^ \t#/]\\{2}.*[^:]\s*$", 'bW'))
echohl None
call search("\\%" . lnum . "l" . "\\%" . col . "c")
endfun
map f :call ShowFuncName() <CR>
谢谢。
最佳答案
我发现,在我的日常使用中,以下这些已经绰绰有余了
- [#
]#
在当前#if* 条件 block 的分支之间来回导航
% 在相同的 while 之间循环 on 条件 block 的预处理器指令行之一
有时我发现自己添加了一个 fold addhoc:
- [#zf%
- zf%
- v%%zf
我刚测试过
#ifdef BLA
#if BLO == 1
#include <something>
#else
#pragma error "oops"
#endif
#elifdef BLU
#include <something_else>
#endif
嵌套条件之间没有混淆,也没有与非条件指令混淆。我还发现它不依赖于文件类型(或者,text 的文件类型插件也支持它:))
关于vim - 在vim中,如何查看我当前所在的#ifdef宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8601280/