VI中如何复制不相邻的行?

How do you copy un-neighboring lines in VI?

在下面的例子中,我想复制第 1、2、4 和 5 行(没有第 3 行):

var copyMe=true;
var copyMeAsWell=true;
var doNotCopyMe = 123;
var copyMeWithLine1And2And5=true;
var alsoCopyMe=True;

所以当我粘贴抽出的行时,我会得到:

var copyMe=true;
var copyMeAsWell=true;
var copyMeWithLine1And2And5=true;
var alsoCopyMe=True;

你可以做到

:1,2yank q
:4,5yank Q

将内容放入寄存器q(大写Q表示'append to register q')。
然后你可以用 "qp 粘贴它(或者简单地 p 如果你没有改变两者之间的未命名寄存器)。

注::yank可以简写为:y


如果您更愿意退出正常模式,您也可以使用 "qy"Qy

如果你想用命令来做到这一点,你可以这样做:

:3d|1,4y|u

其实就是去掉#3行,复制你想要的那些行,然后撤销。