Vi 编辑器:删除文件中多行的最快方法是什么?

Vi 编辑器:删除文件中多行的最快方法是什么?

我想使用 Vi 编辑器删除文件中的多行。请给我想法或建议。

我的目标是这样的:

前:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
.
.
29
30
.
.

后;

1
10
20
30
40
.
.

答案1

如果您想保留每 10 行并删除其余行:

%norm 9ddj

解释:

%整个文件

norm在“正常模式”下执行以下命令

9dd删除9行

j向下移动一行(即保留)

笔记:这将删除第一行。

改编自http://www.rayninfo.co.uk/vimtips.html


或者使用全局命令:

  • 复制第一行ggYP
  • :g/^/+ d9

改编自https://stackoverflow.com/questions/1946738/vim-how-to-delete-every-second-row


或者你可以使用awk

%!awk 'NR \% 10 == 0 || NR == 1'

答案2

:2,$v/0$/d

0删除从第二行开始不结束的行。

相关内容