如何在不移动光标的情况下将包含字符串的行复制到 vim 中的缓冲区中?

如何在不移动光标的情况下将包含字符串的行复制到 vim 中的缓冲区中?

假设我在一行中有一个正则表达式,我想复制光标位置上方具有该模式的第一行而不移动光标。例如(光标标有 ||):

This is a short example.  
On the other hand,  
I'm having trouble with it. ||

如何将“This is a short example”这句话复制到光标位置(II)?如果我搜索这句话,光标会移动到This(?This is)。

答案1

你可以这样做:

:?short?t.

short它对( )进行向后搜索?short,并将匹配的行 ( t) 复制到当前行 ( .) 之后。

您可以在 中阅读有关 Ex 命令的内容,:h :index并在 中阅读有关范围的内容:h range

编辑

实际上,它并不完全是那样工作的,但我认为上面的解释可能更有意义。

确切的机制简明扼要地解释如下:h :copy

:[range]co[py] {address}
    Copy the lines given by [range] to below the line given by {address}.

这里,[range]是当前匹配行上方的第一行short{address}是当前行,.

Vim。

答案2

我想到了一些方法和插件,但最自然的方法是搜索 ( ),拉出,然后使用+?This is跳转回原始位置并粘贴。借助跳转列表 (cp. ),临时移动并不那么糟糕。CtrlO:help jumplist

相关内容