在Vim中,如何从多行复制?(不是范围);


20

假设我有

1 - funct1
2- funct 2
3 - funct 3 
4 line 4

如何复制第1行和第3行(不是行范围)并粘贴,例如在第8行?如果我|像(1y|3y)这样用arg进行操作,我会将行拉到几个寄存器,对吗?但是,如何一次从多个寄存器中放入?

Answers:


33

您可以附加一个寄存器,而不是通过使用大写字母而不是小写字母来擦除它。

例如:

:1y a      # copy line 1 into register a (erases it beforehand)
:3y A      # copy line 3 into register a (after its current content)
8G  # go to line 8
"ap        # print register a

1
您也可以使用正常模式下执行此操作"ayyjj"Ayy"ap
wchargin '16

5
(或1G"ayy3G"Ayy8G"ap明确的行号)
wchargin '16

1
不只是G为了上网<C-G>吗?
大卫

1
太酷了 您可以根据需要添加任意数量的要缓冲的东西A,它会保留所有内容。首先,将某些内容记入寄存器中a
CornSmith '16

1
@CornSmith Nitpick:在vim上下文中,buffer是一个非常具体的术语。"a是一个寄存器
Doorknob '16

1

您可以使用以下:copy命令,可以将其缩写为:t

:1t8
:3t8

如果要复制一定范围的行(例如,从1到3的所有行),可以这样进行:

:1,3t8

我想按数字复制行,但不复制行的范围...我可以用t命令之类的内容附加行吗?
Whats Myname

0
1Gyy7Gp #use 7 if you wish to paste the line at 8
3Gyy8Gp #use 8 if you wish to paste the line at 9

这些可以用:t命令更好地表达,该命令也不会清除"0寄存器。
Doorknob '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.