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