在VIM中从函数声明的第一个字符移动到结束大括号

在VIM中从函数声明的第一个字符移动到结束大括号,vim,Vim,如果我有一个这样声明的函数: public static void main(String[] args){ blahblahlbah; } 是否要从函数的public中的“p”移动到函数的结尾“}” 可以假设方法主体具有相当长的长度,并且确实包含大括号(如果这有区别的话) 谢谢 /{将带您到开始的大括号,%将跳转到匹配的结束大括号。尝试以下按键顺序:f{%应该这样做。完成移动的方法不多 最合适的运动命令是 ]M 这是一个简短且切中要害的操作:它将光标移动到下一个操作的末尾 类Jav

如果我有一个这样声明的函数:

public static void main(String[] args){
    blahblahlbah;
}
是否要从函数的
public
中的“p”移动到函数的结尾“}”

可以假设方法主体具有相当长的长度,并且确实包含大括号(如果这有区别的话)


谢谢

/{
将带您到开始的大括号,
%
将跳转到匹配的结束大括号。

尝试以下按键顺序:
f{%
应该这样做。

完成移动的方法不多

最合适的运动命令是

]M
这是一个简短且切中要害的操作:它将光标移动到下一个操作的末尾 类Java源代码中的方法

还有三个卫星运动与
]M
一起给出 跳转到方法的下一个或上一个开始和结束的可能性,请参阅
:帮助
]因此,在这种情况下,除了
]m
之外,还可以 发行

答案的其余部分讨论了一些应该使用的技巧 仅当由于某种原因无法执行上述运动命令时 解决你的问题

另一个可以利用的简单方法是跳过参数列表, 找到下一个开始的花括号并移动到其结束对应项

%l%

甚至

/%
输入
%

将光标移动到方法主体的最开头也是一个类似的想法 然后跳转到下一个不匹配的结束大括号,导致以下结果 指挥部

但是请注意,最后四个命令中的三个命令仅在函数 标题是单行。如果不是这样,则需要修改

在一些关于代码格式的假设下,也可以实现 使用面向纯文本的移动也会产生相同的结果。如果开头卷曲 大括号是方法标题行上的最后一个字符,可以使用

$%

如果大括号是最后一个非空字符

总之,尽可能地坚持
]M
运动(它对您有效 在绝大多数情况下,应该依靠基于
其他文本运动命令的组合,否则。

][
移动到第一列的下一个
}
。因此,只要函数正确缩进,这将对您有效

请参见
:帮助][
:帮助部分


我在搜索文件时使用这一点,我的游标被定位在某个长函数中间的一个特定搜索结果中。通常,我想知道我在“<代码> >中的哪个函数”。[%
获取函数签名,然后
n
将我返回到我开始搜索的结果。

因此结果将是
public static…{…}p
?不,光标将位于最后一行的“}”上哦,很抱歉。看起来我完全忽略了“from”word并认为您试图修改文本。我甚至编辑了您的问题!抱歉。啊。两个动作..我猜这应该是显而易见的..谢谢!M也很好,因为它可以让您将光标放在函数的第一行,然后点击
zf]M
折叠该函数。很不错的!谢谢@3321thec:事实上,它拥有运动指令的所有功能!与许多其他运动组合不同,此运动也适用于多行方法标题。它是Vim中类似Java的源代码编辑的一个小内置gem,不是吗?对我来说,]m和]m的行为都是一样的。两个都跳转到了打开括号{不是关闭括号。我有一些设置要检查。@ Run44:首先检查正在编辑的缓冲区当前文件类型:<代码>:设置FT()。@ IB。我正在尝试C++文件(包含类定义)。希望C++有类似的东西。[]和{{,}}很好,但没有找到像]M
f{%
j]}
$%
g_%