Vim 多行搜索模式

Ric*_*sin 2 vim substitution

我有一个替换命令,可以捕获并显示替换字符串中的 submatch() 值。但我想在这一行下面解析另一行信息。该行始终是空行之后的第一行,尽管该空行的行数有所不同。例如:

The first important line I want to capture is here
Stuff I don't want.
A few more lines of stuff I don't want...

Second line I want to capture.
Run Code Online (Sandbox Code Playgroud)

这种模式在文档中重复一百次左右。我可以很好地替换“第一条重要行”,但是该搜索模式不应该包含一种跳到第一个空行,然后选择下一个“我想要捕获的第二行”的方法。?? 然后,我可以将第二行的内容放入子匹配括号中,并在需要的地方替换它们(对吗?)。

如果是这样,我无法找到扩展第一个搜索模式以捕获“第二行”的方法建议或纠正我的方法将不胜感激。

Geb*_*ebb 7

有人已经处理过类似的问题。下面我提供他们的解决方案和详细描述。

/^\nF\d\_.\{-}\_^\n\zs.*/+

它的意思是“找到以 F 和数字开头的行块,然后向前扫描到下一个空白行并选择其后的行。”

正则表达式的一部分 意义
^\n 匹配行的开头,后跟换行符 - 即空行
F\d 下一行以 F 开头,后跟数字
\_.\{-} \_.类似于.,但也匹配换行符。\{-}匹配前面的最小数量\_.。(如果我使用*代替\{-},它将匹配到文件末尾附近。)
\_^\n 匹配一个空行。\_^类似于^,但^仅适用于正则表达式的开头。
\zs 比赛结束后,将比赛开始时间设置为此时。我使用它是因为我不想突出显示前面的文本。
.* 匹配整条线。

after+正则表达式告诉 Vim 将光标放在选择后的行上。