复制,删除然后粘贴到Vim中


15

我昨天刚开始使用Vim,但在理解复制和粘贴方面遇到困难。我了解要复制后进入视觉模式,突出显示然后拉动。然后,我移至希望粘贴的行,但通常不需要从该行删除一些文本。我使用x或进行此操作dw。然后,这导致我的原始副本被覆盖(x并且dw似乎被剪切了)。我该如何解决?

举一个例子

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

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

Answers:


16

看一看:h copy-move。默认的拉动或删除操作进入一个称为寄存器(名为的寄存器")的地方。如果需要在粘贴之前删除一些文本,则需要避免覆盖寄存器x,这已发现。幸运的是,您可以使用任何其他字母或数字来命名其他寄存器。

  • "ayy(将一行插入寄存器a
  • xdd等等(将一些文本删除到未命名的寄存器中"
  • "ap(从寄存器粘贴文本a


7

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

但是,通常只需更改工作顺序就更容易。先粘贴然后删除,或者先删除然后再复制/粘贴。

或者,您可以删除黑洞寄存器"_d。参见/programming//q/54255/70863


3

您可以使用各种寄存器来保存不同的文本值。如果您想将文本保存到与删除的文本不同的寄存器中(即使用xd w),请使用以下命令:

要将文本保存在寄存器中a

  • " a[拖动和移动命令](将文本保存到寄存器中a
  • 转到您要粘贴文本的位置
  • 按下" a p(从寄存器粘贴文本a

您可以为键盘上的每个字母和每个数字使用一个寄存器。删除文本不会使用这些寄存器,因此文本将保留在寄存器中,直到您结束会话或在其中手动放入其他内容为止。


0

如果使用可视化模式v(相对于V),则不必突出显示整个行。如果这就是您要的。

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

如果要复制,请先修改原稿然后粘贴,然后再拉入其他寄存器。像"2y,然后修改,然后去其他地方"2p

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.