我想从 Vim 缓冲区中删除每隔一行,从第二行开始,即第 2、4、6 行等。例如,如果缓冲区的内容是:
aaa
bbb
ccc
ddd
eee
fff
然后,在删除所需的行后,它应该变成:
aaa
ccc
eee
哪些 Vim 命令可用于自动执行此操作?
最佳答案
完成任务的一种优雅而有效的方法是调用 :delete
命令(请参阅 :help :d
)了解 +
行范围(.+1
的缩写)寻址
当前行之后的行(请参阅 :help {address}
),每一行
(请参阅 :help/^
)使用 :global
命令(请参阅 :help :g
):
:g/^/+d
<小时/>
如果缓冲区中的行数是奇数,则最后一次运行:delete
:global
发出的命令会引发错误,因为没有下一行
让它删除,但缓冲区的结果状态仍然是正确的
在这种情况下,因此可以安全地忽略该错误。如果需要的话,错误
可以使用 :silent
命令从一开始就抑制消息:
:sil!g/^/+d
关于vim - 如何删除 Vim 中的所有其他行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1946738/