假设我在第20行,而我想拉第4行,该怎么办?上吗?

评论

如何使用行号将行复制到光标所在的位置?

#1 楼

:help :yank开始:

:[range]y[ank] [x]      Yank `[range]` lines [into register x].


所以,要拉动第4行,请输入:

:4yank


注意可以通过<C-o>从插入模式轻松完成此操作;这使您可以
执行一个命令,然后返回到插入模式;例如:

<C-o>:4yank


当然,您也可以使用其他范围。一些示例:


第1至3行::1,3yank

整个缓冲区::%yank

从当前行到行尾缓冲区::.,$:yank

当前行和下一行3::.,+3yank

当前行和前3行::-3,.yank

第3行在当前行上方::-3yank


关于范围最需要记住的内容:


:line1,line2command的形式。
.是当前行(大多数情况下实际上可以省略点; :.,+3yank:,+3yank是相同的)
+n-n指定相对于当前位置的行。 :help [range]了解更多
信息。

评论


提及的加分点,我没有充分利用。

– PhilippFrank
15年5月12日在11:37

还值得一提的是,您可以将:4yank缩写为:4y

– NewbieOnRails
15年5月12日在18:44



#2 楼

除了Carpetsmoker的答案外,我还应该指出令人敬畏的:help :m:help :t
:4t.


,或者,如果要复制当前行正上方的那一行:

:4t-


#3 楼

除了获得的ex模式命令外,您还可以在命令模式下实现该功能,例如通过:4GY''-表示:转到第4行(4G),拉行(Y),然后返回到上一行('')。对于第二个问题,例如通过:mm3kY'm-表示:设置标记m(mm),向上移三行(3k),拔行(Y),返回标记m('m)。

评论


使用``可能比''更好的建议,因为前者返回同一行和同一列。同上`m vs.'m。

–詹姆斯
2015年6月15日14:08



我同意。 (因为它们有特殊含义,所以有任何想法如何在Wiki标记中创建原义文本?)-否则,您的评论将很好地修正我的答案并为读者提供提示。

–贾尼斯(Janis)
15年6月15日在15:58

您必须使用多个反引号来分隔内联代码(例如,daringfireball.net / projects / markdown / syntax#code)。我知道它可以在问题/答案中使用,但是我无法在评论中使用它。

–詹姆斯
15年6月15日在16:10

#4 楼

只需键入

:4y


到第4行

,它将进入未命名的寄存器。然后,例如,您可以使用p将其放置在其他位置。您还可以使用[n]p,例如10p粘贴10次。

您可以使用
将其放入名为“ a”的命名寄存器中,


评论


将其放入带有“ ay4”的命名寄存器的部分看起来不正确。如果执行此操作,vim将等待您说“ 4 whats?”。例如,如果您按下Enter键,它将从开始的4行开始当前位置,如果您输入/ foo ,它将直到“ foo”出现之后的第4个开始,等等

–唐·哈奇
2015年5月13日下午5:34

最后一条命令应显示为4G“ ayy。

– romainl
15年5月13日在8:13

#5 楼

您可以

:10y <Enter> (to copy the line 10)
p (paste line 10 where the cursor is)


设置相对编号也有助于在代码行之间移动。

:set relativenumber


现在,您可以使用以下命令复制光标上方的第5行:

:-5y <Enter>
:p (to paste)