Vim 如何粘贴指定行号的寄存器内容?

Vim 如何粘贴指定行号的寄存器内容?,vim,Vim,假设一个文本文件有5行,每行都有一个换行符。此文本文件在gvim中打开。在命令模式下,光标位于第1行时,当前行的内容被拉入默认寄存器 如何在不移动光标的情况下粘贴/放置不同的行号?例如,光标位于第1行。拉动的内容应放在第4行。如何在gvim中执行此操作而不将光标移动到第4行 这里有一个例子: :call setline(4, getline(4) . " " . @") 我们正在将第4行设置为第4行本身加上空格“” 加上默认寄存器@” 以防万一,你只要把内容 4号线类型上的1号线类型: :c

假设一个文本文件有5行,每行都有一个换行符。此文本文件在gvim中打开。在命令模式下,光标位于第1行时,当前行的内容被拉入默认寄存器

如何在不移动光标的情况下粘贴/放置不同的行号?例如,光标位于第1行。拉动的内容应放在第4行。如何在gvim中执行此操作而不将光标移动到第4行

这里有一个例子:

 :call setline(4, getline(4) . " " . @")
我们正在将第4行设置为第4行本身加上空格“” 加上默认寄存器@”

以防万一,你只要把内容 4号线类型上的1号线类型:

:call setline(4, getline(1))

光标位置是命令寻址的一个重要部分;对于交互式编辑,让命令“远距离”工作是没有意义的(在Vimscript中,您可以使用诸如
setline()之类的低级函数)
修改任意位置,但这不应该是正常使用的一部分,在这里我不同意@SergioAraujo的回答,该回答将此命令表示为适合交互使用。)


取而代之的是,Vim使您可以轻松地临时转到某个位置,然后返回您的来源地。尤其是用于此目的的。您的示例粘贴可以通过
4Gp
4Gp`
完成;要使用Ex命令,您必须显式设置跳转点:
m':4put`
。使用跳转列表的优点是粘贴目标现在也成为它的一部分,因此您也可以轻松地(使用
)前进到它。

使用
:t
命令(与
:copy
同义)。示例:

:1t 4
:.t 4

我没有确切的答案给你,但你总是可以做一些事情,比如移动到你想粘贴到的行,比如第3行,
:3
,而不是复制一行,比如第5行:
:5y
输入
p
。现在你可以在第3行确定,但你总是可以用
`
直接返回到你的最后一个光标位置,我不知道具体操作方法如下:
:4s/$/\r(“您的注册表)/g
(它不起作用,因为我不知道如何在命令模式下使用注册表),但它会移动光标,所以我知道的最简单的方法是使用
4gg
,移动到第4行,粘贴它并使用
p
,然后使用
'
(两个撇号)返回到最后一个位置Ingo,请参见我的答案vim在一定距离内提供交互式命令(在其真实根处使用命令寻址,例如)。有时候确实有道理。。。这里是最简单的解决方案
:to
扩展到
:topleft
;您必须使用
:t
:co[py]
。这些Ex命令仍然将光标移动到目标位置(并绕过寄存器),而不是OP所要求的。@IngoKarkat真的吗?由于某种原因,我的脑海中有它,他们没有;不过,他们这样做是有道理的。