假定一个文本文件有5行,每行都有一个换行符。该文本文件在gvim中打开。在命令模式下并且光标在第1行中时,当前行的内容将被拖入默认寄存器中。
如何在不移动光标的情况下将粘贴/粘贴到不同的行号?例如,光标在第1行中。应将带上下划线的内容放在第4行中。如何在gvim中做到这一点而不将光标移到第4行?
假定一个文本文件有5行,每行都有一个换行符。该文本文件在gvim中打开。在命令模式下并且光标在第1行中时,当前行的内容将被拖入默认寄存器中。
如何在不移动光标的情况下将粘贴/粘贴到不同的行号?例如,光标在第1行中。应将带上下划线的内容放在第4行中。如何在gvim中做到这一点而不将光标移到第4行?
光标位置是命令寻址的重要部分;对于交互式编辑,“远距离”运行命令是没有意义的。 (在Vimscript中,您可以使用setline()
之类的低级函数来修改任意位置,但这不应该作为正常使用的一部分,在这里我不同意@SergioAraujo的回答,该回答将该命令表示为适合交互式使用。 )
相反,Vim可使您轻松地暂时移至某个位置,然后返回到您的来源。 :help jumplist
尤其是CTRL-O
是为此目的。您的示例通过4Gp<C-O>
或4Gp``
粘贴完成;要使用Ex命令,必须显式设置跳转点:m':4put<CR>``
。使用跳转列表的优点在于,粘贴目标现在也已成为其中的一部分,因此您也可以轻松地(使用<C-I>
)继续执行跳转目标。
这里有个例子:
:call setline(4,getline(4) . " " . @")
我们将第4行设置为第4行本身加上空格“” 加上默认寄存器@“。
只是在您只想放置内容的情况下 第4行的第1行的类型:
:call setline(4,getline(1))
,
使用:t
命令(:copy
的同义词)。例子:
:1t 4
:.t 4