在VI中复制每一行

aru*_*zhi 24 vim

我有这些行的文件:

aa
bb
cc
dd
Run Code Online (Sandbox Code Playgroud)

我想将其转换为:

aa
aa
bb
bb
cc
cc
dd
dd
Run Code Online (Sandbox Code Playgroud)

这可能在VI?

kev*_*kev 42

试试这个简单的:

:g/^/norm yyp
Run Code Online (Sandbox Code Playgroud)

又一个(更短):

:%s/.*/&\r&
Run Code Online (Sandbox Code Playgroud)

另一个:

:%!sed p
Run Code Online (Sandbox Code Playgroud)


Dim*_*rov 37

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

我是否因为简洁而获胜?


pb2*_*b2q 10

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

:g/^/norm yyp
Run Code Online (Sandbox Code Playgroud)

g命令将在与模式匹配的所有行上运行.^是一个匹配任何一条线的模式.norm执行命令yyp,该命令拉动当前行并粘贴它.:g/^/norm Yp也会工作.

请参阅:help global有关命令的详细信息,也看到这个VIM维基上的页面g.

  • @Conner:这不起作用,因为%迭代原始范围,但命令添加了行.你需要在这里使用`:global`的"先标记,然后迭代"逻辑. (2认同)