4

Vim 中有没有一种方法可以导航到下一个不同的缩进级别?

因此,例如从这里到那里:

-> var a = 1;
   var b = 2;
   var func = function(){
->     return a + b;
   }
4

1 回答 1

4

这应该适用于由空格(而不是制表符)组成的缩进:

call search('^ \{0,'.eval(indent(".")-1).'}\S\|^ \{'.eval(indent(".")+1).',}\S')

这由两个正则表达式组成:

  • ^ \{0,'.eval(indent(".")-1).'}\S使用与前面空格的\{n,m}from nto匹配的结构匹配较小的缩进。m
  • ^ \{'.eval(indent(".")+1).',}\S'匹配更大的缩进,使用\{n,}至少匹配n前面空格的结构。

正则表达式夹在中间^并且\S仅应用于行上的前导空格。然后它们由\|('OR') 运算符连接。

当然,search()为方便起见,可以将呼叫映射到组合键。

编辑

Chris Johnsen 指出调用 toeval()是多余的,所以命令可以简化为:

call search('^ \{0,'.(indent(".")-1).'}\S\|^ \{'.(indent(".")+1).',}\S')
于 2013-01-16T12:04:29.110 回答