VIM:查找空行并在之前和之后用1,2,3行打印它们

时间:2017-06-02 11:02:23

标签: vim

我可以找到执行此命令的空行:g / ^ $。如何扩展此命令以在确切的空行之前和之后打印1行(2行等)?

2 个答案:

答案 0 :(得分:3)

:g/^$/.,+2p

将打印每个空行和下面两行。如果您还想要行号,请使用:#代替:p

请注意,如果匹配的行是最后一行,这将不起作用。

请参阅:help :p:help :#:help :range

答案 1 :(得分:2)

您可以使用相对寻址,然后发出两个:print命令,一个用于之前的行,一个用于空行之后的行:

:g/^$/-1print|+2print

这也可以扩展到多行;这里有两个:

:g/^$/-2,-1print|+2,+3print

这可能会在开头或结尾给出E16: Invalid range。您可以通过:silent! unsilent ...

来抑制这些错误
:g/^$/silent! unsilent -2,-1print|silent! unsilent +2,+3print