如何在 Vim 中使用一个命令/搜索模式在 Foo
之后找到第一次出现的 bar
?
例如:假设我有一些像这样的文本:
Bar and bar and bar, I'm such a barbarian.
...
Foo: That bar serves German beer.
Bar bar and bar, so much bar.
Foo: Unrelated.
...bla
but then next bar.
如何在粗体栏之间跳转?
最佳答案
想到的第一种方式(简单但不可重复)
你可以这样做:
/Foo/;/bar
但“最后一个模式”将是 bar
所以这不能用 n
重复, N
等,这意味着您必须执行一次然后执行 /<Up><CR>
,这可能会或可能不会满足您的需求。
请注意,一旦您跳转到第二个匹配项,您可以执行 ``
跳回到第一个和``
跳回到第二个,依此类推。
参见 :help :;
和 :help ``
.
想到的第二种方式(更复杂但可重复)
使用单一模式,因此可以用 n
重复, N
等,你可以这样做:
/Foo\_.\{-}\zsbar
哪里……
-
/Foo
匹配下一个Foo
, -
\_.\{-}
匹配任何字符,包括 EOL,尽可能少, -
\zs
开始实际匹配,丢弃之前的内容, - 我们想成为
bar
.
参见 :help \_.
, :help \{
, 和 :help \zs
.
关于search - Vim:在匹配另一个模式后搜索第一个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66658895/