我正在使用 vim 编辑文档 - 其中摘录是:
--
aaa bbb
ccc ddd
eee fff
--
ggg hhh
iii jjj
kkk lll
--
Run Code Online (Sandbox Code Playgroud)
我想选择带有“--”和新行的(两行)行之后的所有行。在这个例子中,我想选择“aaa bbb”和“ggg hhh”。在正则表达式中是否可以进行行级“后视”?
Vim 有一个很好的特性,你可以在这里利用它。以下命令将匹配请求的两行(以搜索为例):
/--\n\n\zs.*
Run Code Online (Sandbox Code Playgroud)
说明:
/ - 开始搜索--\n\n - 我理解的问题的谓词\zs - 告诉 vim 从这里开始真正的比赛并在此之前扔掉所有东西.* - 任何字符。该\zs令牌允许你告诉VIM,该模式匹配实际开始,即使正则表达式作为一个整体必须匹配。有一个补充标记\ze告诉 vim 在哪里结束匹配。
虽然我已经使用搜索功能来展示这个功能,但这些标记可以在任何可以在 vim 中使用正则表达式的地方使用。
有关此功能的更多信息,请查看:help /\zs和:help /\ze。