25

我有一个包含这些行的文件:

aa
bb
cc
dd

我想将其转换为:

aa
aa
bb
bb
cc
cc
dd
dd

这在VI中可能吗?

4

3 回答 3

46

试试这个简单的:

:g/^/norm yyp

还有一个(更短):

:%s/.*/&\r&

另一个:

:%!sed p
于 2012-09-18T00:54:18.880 回答
40

我喜欢g/^/t.
( gfor global) 命令将查找与模式匹配的任何行。
我们指定的模式是^,它将匹配所有行。
t将复制和粘贴,最后告诉它在下面粘贴
dot

我会因为简洁而获胜吗?

于 2012-09-18T01:15:39.607 回答
11

使用global 命令 g对文件中的每一行进行操作:

:g/^/norm yyp

g命令将对匹配模式的所有行进行操作。^是一个匹配任何行的模式。norm执行命令yyp,拉出当前行并粘贴它。:g/^/norm Yp也将工作。

有关:help global该命令的更多详细信息,请参阅 ,另请参阅此vim wiki页面g

于 2012-09-18T00:54:25.423 回答