我可以使用...
:g/match/-1d
...多次删除比赛开始前多于一行...
...并将其与对...的一些调用组合在一起。
:g/match/+1d
...要在匹配项后删除多行...
但是有没有办法删除一条命令匹配项之前,之后和包括的一系列行?
#1 楼
你快到了;您还可以指定行的范围,形式为[line1],[line2][command]
,而不只是[line][command]
(就像您现在使用的那样)。您可以使用
.
引用当前行。 br /> 当前行和下一行:
:g/match/.,+1d
当前行和上一行:
:g/match/-1,.d
对于上一行,当前和下一行:
:g/match/-1,+1d
有关更多信息,请参见
:help [range]
。在此答案中,还有更多示例。
评论
sed中的语法是否相同?
–leeand00
15年5月27日在14:27
@ leeand00不。:g所做的全部工作就是在与模式匹配的行上运行一个ex命令。因此,键入:g / match /.,+ 1d与访问所有具有match的行完全相同,然后键入:。,+ 1d
–马丁·图尔诺伊(Martin Tournoij)
15年5月27日在14:29
这是我一段时间以来在vim上学到的最酷的东西。感谢分享!
–lps
18年8月30日在22:18