如何在vim中查找封闭块?

如何在vim中查找封闭块?,vim,Vim,向后搜索{正在查找同级块 文件已正确缩进,可能可以通过从“^”之前的一个字符向上移动到第一个非空白字符来实现 还有别的办法吗 例如: 有没有一种方法可以从这里导航到if 我正在考虑将光标放在此处之前,并调用一个函数,该函数将向上移动光标,直到找到非空白字符。%是正确的方法。在您所在行的任何字符上按光标 这正是您要查找的内容。有关详细信息,:h[{,或:h motion.txt。您的示例使用C代码,该代码使用大括号{和}对于分组,以下建议并不直接有用。对于许多使用匹配模式进行分组的语言,例如she

向后搜索{正在查找同级块

文件已正确缩进,可能可以通过从“^”之前的一个字符向上移动到第一个非空白字符来实现

还有别的办法吗

例如:

有没有一种方法可以从这里导航到if


我正在考虑将光标放在此处之前,并调用一个函数,该函数将向上移动光标,直到找到非空白字符。

%是正确的方法。

在您所在行的任何字符上按光标


这正是您要查找的内容。有关详细信息,:h[{,或:h motion.txt。

您的示例使用C代码,该代码使用大括号{和}对于分组,以下建议并不直接有用。对于许多使用匹配模式进行分组的语言,例如shell脚本中的if和fi,以及HTML中的my matchit.vim脚本(标准vim发行版的一部分),它扩展了%并定义了其他运动:

g%:向后循环 [%:像当前问题一样的封闭块的开始 ]%:封闭块的末端 a%:视觉模式仅选择匹配的块

:帮助匹配它安装


我没有得到你想要的。你能举个例子吗?只有当你在block end}你可以使用%正如你在例子中看到的,{可以在行中的任何地方。它不一定是该行的第一个字符。目标是到达块开始的行,不一定{%不是这样做的正确方法。至少不符合OP的要求。%n会将您带到该对。如果光标在%上,则%将移动到,而不是向后移动到第一个{
if (some condition) {
  for (;;) {

  }
  some statements;
  here you're;
  while (some condition) {

  }
}
[{