Vim 在VI中复制每一行

Vim 在VI中复制每一行,vim,Vim,我有一个包含以下行的文件: aa bb cc dd 我想将其转换为: aa aa bb bb cc cc dd dd 这在VI中可能吗?试试这个简单的方法: :g/^/norm yyp 还有一个(较短): 另一个: :%!sed p 使用全局命令g对文件中的每一行进行操作: :g/^/norm yyp g命令将在与模式匹配的所有行上运行^是一种与任何行匹配的模式norm执行命令yyp,拖动当前行并粘贴它:g/^/norm Yp也将起作用 有关该命令的更多详细信息,请参见:help gl

我有一个包含以下行的文件:

aa
bb
cc
dd
我想将其转换为:

aa
aa
bb
bb
cc
cc
dd
dd
这在VI中可能吗?

试试这个简单的方法:

:g/^/norm yyp
还有一个(较短):

另一个:

:%!sed p
使用全局命令
g
对文件中的每一行进行操作:

:g/^/norm yyp
g
命令将在与模式匹配的所有行上运行
^
是一种与任何行匹配的模式
norm
执行命令
yyp
,拖动当前行并粘贴它<代码>:g/^/norm Yp也将起作用


有关该命令的更多详细信息,请参见
:help global
,另请参见
g
I like
g/^/t.

g
(对于
global
)命令将查找与模式匹配的任何行。
我们指定的模式是
^
,它将匹配所有行。
t
将复制并粘贴,最后
点将告诉它在下面粘贴


我赢是为了简洁吗?

@Conner:这不起作用,因为%在原始范围内迭代,但命令会添加行。这里需要
:global
的“先标记,然后迭代”逻辑。感谢s选项,因为我希望这样做是为了视觉选择,这对我来说很有用。很多人可能对此感兴趣:使用atom dude!!:)。你可以用Cmd+Shift+D(或Ctrl+Shift+D)来做。我喜欢
g/^/norm yyp
,因为它可以非常简单地复制或三次复制。。或者根据需要添加
p
,甚至更多<代码>g/^/norm yypp
:)10x
:g/^/norm yyp