![如何在vim中不移动光标的情况下拉出特定行?](https://linux22.com/image/392/%E5%A6%82%E4%BD%95%E5%9C%A8vim%E4%B8%AD%E4%B8%8D%E7%A7%BB%E5%8A%A8%E5%85%89%E6%A0%87%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E6%8B%89%E5%87%BA%E7%89%B9%E5%AE%9A%E8%A1%8C%EF%BC%9F.png)
例如
如何将第 4 行仅复制并粘贴到第 12 行无需移动光标到4号线?
答案1
如果光标已经在第 12 行,那么一个简单的
:4年 磷
为我做的。
答案2
怎么样:光标位于第 11 行,您处于“vi”模式。
:4co.<return>
显然,您也可以使用模式来做到这一点:
:/^Yank/co.<return>
您可以使用“mo”(移动)而不是“co”(复制)来移动该行,而不是猛拉和放置。
答案3
尝试这个:
:4,4y
P
答案4
其他人已经提到了最直接的方法,即:4y
,但我想添加两个可能有用的注释:
第一,如果您输入,:help range
您将了解有关使用范围应用于 Ex 样式命令的所有信息。在许多情况下非常有用,并且比使用行号更通用。例如,如果您想在文档开始后提取以“yank”开头的第一行(即使它位于第一行),请使用:0/^yank/y
.范围最强大的部分是组合它们的能力,例如,:./^Chapter/+50?Pete?d
意味着“查找下一行以单词 Chapter 开始(从当前行向前搜索),然后向前跳 50 行,并向后搜索单词 Pete,并删除您找到它的第一行。”除了它实际上并不移动光标,它只是按照你的指示去做。
(我使用这种类型的范围规范来自动创建繁琐的文档,包括搜索光标下的函数名称,然后向前搜索下一行“描述”并将其拉到特定的寄存器......等等。)
另一个提示是,您应该了解跳跃。键入:help jump-motions
以充分了解它,但它与这里相关的方式是,您可以跳到第 4 行,将其拉出,然后使用 RETURN 4Gyy''
( 或使用反引号而不是撇号跳回到确切的起始位置,而不仅仅是同一行你开始于。)