如何在vim中不移动光标的情况下拉出特定行?

如何在vim中不移动光标的情况下拉出特定行?

例如

替代文本

如何将第 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''( 或使用反引号而不是撇号跳回到确切的起始位置,而不仅仅是同一行你开始于。)

相关内容