首页 > 解决方案 > Vim:如何删除第三行并粘贴到文件末尾

问题描述

如何在 Vim 中实现:

前:

Text1
Text2
Digit1
Text3
Text4
Digit2

后:

Text1
Text2
Text3
Text4

0
1

有近 19000 行类似的模式。有些数字是负数,有些文本也包含开头的数字,我正在考虑文本的一部分。我已参考此 stackoverflow 帖子删除行 Vim:如何删除每隔一行?

我只想删除数字并将其复制到文件末尾。

标签: vim

解决方案


如果您不想移动的行不以数字或减号开头,您可以使用:

:g/^[-\d]/m$

这会将以数字或减号开头的每一行移动到文件的底部。

要仅匹配完全由数字(正数、负数或零)组成的行,请使用:

:g/^-\=\d\d*$/m$

这假设这些行中没有前导或尾随空格,否则您可以使用:

:g/^\s*-\=\d\d*\s*$/m$

推荐阅读