如何使用vim跳转到C/C++函数的第一行?

如何使用vim跳转到C/C++函数的第一行?

是否有一组命令可以在 C/C++ 源代码的各个元素之间跳转vim?我知道,ctags但这提供的功能有限。

例如,是否可以跳转到 C/C++ 函数的第一行并从函数内的任何行返回。

我发现自己在检查代码或在源代码中搜索文本/模式时不断向上滚动以查找我所在的函数。

答案1

在代码被构造为类中的方法的语言中,[m跳转到方法的开头。这在 C++ 类中很好,但在 C 或 C++ 顶级函数中,它会将您带到第二个最外层块的开头。其他[{将带您到最外面的支架。

在具有类似 C 语法的语言中,在{函数开头使用单独一行进行格式化的文件中,[[跳转到第 1 列中的前一个大括号。

Ctrl-O跳回来。

答案2

据我所知,使用简单的 vim 命令是不可能的。

来自 vim 手册(:帮助部分):

“]”和“[”命令在第一列中的“{”或“}”处停止。这对于查找 C 程序中函数的开头或结尾很有用。

(...)

如果您的“{”或“}”不在第一列中,并且您仍然想使用“[[”和“]]”,请尝试以下映射:

:map [[ ?{<CR>w99[{ :map ][ /}<CR>b99]} :map ]] j0[[%/{<CR> :map [] k$][%?}<CR>


如果您需要它来进行代码定向,请考虑使用折叠。例如,在函数中set foldmethod=syntax按while 可以关闭它并查看函数名称,反转它并跳回到您所在的行。zCzO

另一种定位的可能性是使用插件,例如标签栏其中突出显示了当前的功能。

相关内容