在Vim中跳转到C++函数的结尾

20
如果我正在函数中间的位置,我想在vim中直接跳转到函数结尾。由于我们有时会遇到500多行长的函数(不要问为什么),所以我经常遇到这个问题。
我使用vim和gvim。
6个回答

31

][将跳转到第一列中的下一个 '}' 符号。

阅读 :help 29.3 以了解更多有关在程序中移动的信息。


我发现你的解决方案比被接受的解决方案更通用,因为被接受的解决方案在JavaScript中对我无效。 - Rafid
虽然这么想,但如果它到达第一列的下一个 '}',那么它可能会在嵌套函数中遇到困难。 - Rafid

22
您可以使用 "]}" 命令。根据您的嵌套程度,您可能需要重复执行该命令。

1
OP可能还想调查“%”命令,该命令可以跳转到与光标下的任何内容配对的大括号/圆括号/方括号的开头或结尾。 - rmeador
是的,% 也很有用,但不适用于快速跳出大型函数。 - jthompson
5
您可能也对[[和]]感兴趣,它们可以带您到函数的开头或下一个函数的开始。 - Amjith

11

使用 [ 或者 ] 可以帮助您完成这项任务。


3
只有当函数的起始和结束花括号是行首字符时,才符合要求。 - Nathan Fellman

2

确保你充分利用 :split 和代码折叠功能 - 在屏幕顶部保持折叠视图,展开函数,分割窗口,编辑函数,关闭分割窗口,折叠代码。


这个也不错,但老实说,到目前为止我还不太喜欢在Vim中折叠代码,感觉比较困难,也许需要花些时间去研究一下,但很遗憾我现在没有这个时间。你有什么快速建议可以让我喜欢它吗? :-) - Rafid

1

按下SHIFT+5可以在{和}之间切换。您可以使用它来识别代码的最顶层块。


2
我相信那是百分号,它会移位 :-) - MighMoS
1
是的...但是为了让它更简单,我使用了这种方法 :) - Shree
@MighMoS,这在某些情况下似乎更好,因为“%”只在您处于括号内时才起作用。 - Rafid

0
我发现在经过将近一小时的“研究”后,@Ana Betts的回答是最有帮助的。我尝试添加一些缓冲区映射来完美处理:
autocmd BufReadPre *.js nnoremap <buffer> [[ []%0
autocmd BufReadPre *.js nnoremap <buffer> ]] ][%0

将以下代码添加到您的 .vimrc 文件中,然后输入 ]][[ 即可看到神奇的效果 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接