如何跳转当前缓冲区中的下一个标记-vim?

如何跳转当前缓冲区中的下一个标记-vim?,vim,Vim,有没有办法跳转到当前缓冲区中的下一个标记 sub A { /* ... */ [cursor] } sub B { /* ... */ } 我知道A和B都是当前缓冲区中的标记。 是否有方法跳转到[光标]之后的下一个标记?(在本例中是B)没有内置功能,但您可以自己实现: 您可以通过获取当前缓冲区内所有标记的列表 :let tags = filter(taglist('.*'), 'v:val.filename ==# expand("%:p")') 然后转义标记名以在正则表达式中使

有没有办法跳转到当前缓冲区中的下一个标记

sub A { 
  /* ... */
  [cursor]
}

sub B { /* ... */ }
我知道
A
B
都是当前缓冲区中的标记。
是否有方法跳转到
[光标]
之后的下一个标记?(在本例中是
B

没有内置功能,但您可以自己实现:

您可以通过获取当前缓冲区内所有标记的列表

:let tags = filter(taglist('.*'), 'v:val.filename ==# expand("%:p")')
然后转义标记名以在正则表达式中使用,并将其作为可选搜索分支连接:

:let tagsExpr = '\V' . join(map(tags, 'escape(v:val.name, "\\")'), '\|')
最后,执行搜索以定位当前缓冲区中的下一个标记:

:call search(tagsExpr)

我不知道Vim能够做到这一点(开箱即用),但是
]
会跳转到
B
(和
[
A