gpt4 book ai didi

vim - 在vim中,如何查看我当前所在的#ifdef宏?

转载 作者:行者123 更新时间:2023-12-05 08:44:31 26 4
gpt4 key购买 nike

我使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com