在 Vim 中复制、删除然后粘贴

在 Vim 中复制、删除然后粘贴

我昨天刚开始使用 Vim,对复制和粘贴有点不理解。我知道要复制,我进入可视模式,突出显示,然后拉出。然后我移动到要粘贴的行,但更多的时候我需要从这一行删除一些文本。我使用x或 来执行此dw操作。这会导致我的原始副本被覆盖(因为xdw似乎被剪切了)。我该如何解决这个问题?

举个例子

$foo = $this->foo->property;
thislineuses($foo);

因此,对于上面的代码,我复制了$this->foo->property,然后我想转到第 2 行,删除$foo并粘贴。问题是,当我$foo从第 2 行删除时,粘贴的就是这个,而不是$this->foo->property

答案1

看一下:h copy-move。默认的复制或删除操作会进入一个叫做寄存器的地方(名为 的寄存器")。如果您需要在粘贴之前删除一些文本,则需要避免覆盖寄存器 x,正如您所发现的那样。幸运的是,您可以使用任何其他字母或数字来命名不同的寄存器。

  • "ayy(将一行拖入寄存器a
  • x,,dd等(删除一些文本到未命名的寄存器中,"
  • "ap(从注册表粘贴文本a

答案2

如果问题在于您只需要将某些替换text为某些text2,那么只需突出显示并拉出即可text2。然后突出显示text并按pP粘贴text2代替text

一些常见的 vim 命令的快速进一步指南是http://www.catswhocode.com/blog/100-vim-commands-every-programmer-should-know

享受!

编辑:请注意,p将文本粘贴在光标之后和P光标之前。

答案3

您可以复制到命名寄存器中"ayw,执行删除操作,然后从命名寄存器中粘贴"ap

但是,改变执行操作的顺序通常更容易。先粘贴然后删除,或者先删除然后复制/粘贴。

或者,你可以删除到黑洞寄存器中"_d。请参阅https://stackoverflow.com/q/54255/70863

答案4

v如果您使用(而不是)可视模式,则不必突出显示整行V。如果这就是您所要求的。

如果您要修改复制的文本,那么您首先复制并删除部分。

如果你想复制,然后修改原件,然后粘贴,那么你可以将其拖放到其他寄存器中。例如"2y,然后修改,然后转到其他地方"2p

相关内容