Vim:在另一个模式的匹配后搜索第一个匹配

Sta*_*ten 2 vim search

如何在 Vim 中使用一个命令/搜索模式找到bar下一次出现的第一次出现?Foo

例如:假设我有一些文本,例如:

酒吧、酒吧、酒吧,我真是个野蛮人。

...

Foo:那家酒吧供应德国啤酒。

酒吧酒吧酒吧,这么多酒吧。

福:无关。

...布拉

不过接下来

如何在粗体​​条之间跳转

rom*_*inl 5

我想到的第一种方法(简单但不可重复)

\n

你可以这样做:

\n
/Foo/;/bar\n
Run Code Online (Sandbox Code Playgroud)\n

但“最后的模式”将是bar这样,这不能与 、 等重复nN这意味着您必须执行一次然后执行/<Up><CR>,这可能会也可能不会满足您的需求。

\n

请注意,一旦跳至第二场比赛,您可以``跳回第一场比赛并``跳回第二场比赛,依此类推。

\n

参见:help :;:help ``

\n

我想到的第二种方式(更复杂但可重复)

\n

使用单个模式,因此可以使用nN等重复,您可以执行以下操作:

\n
/Foo\\_.\\{-}\\zsbar\n
Run Code Online (Sandbox Code Playgroud)\n

其中\xe2\x80\xa6

\n
    \n
  • /Foo匹配下一个Foo,
  • \n
  • \\_.\\{-}匹配任何字符,包括 EOL,尽可能少,
  • \n
  • \\zs开始实际比赛,丢弃之前的内容,
  • \n
  • 我们希望成为这样的人bar
  • \n
\n

参见:help \\_.:help \\{、 和:help \\zs

\n