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

16 vim

我昨天刚开始使用 Vim,在理解复制和粘贴时遇到了麻烦。我理解复制我进入视觉模式,突出显示然后猛拉。然后我移动到我希望粘贴的行,但更多时候不是我需要从该行中删除一些文本。我使用x或执行此操作dw。这会导致我的原始副本被覆盖(x并且dw似乎被剪切)。我该如何解决这个问题?

把它放在一个例子中

$foo = $this->foo->property;
thislineuses($foo);
Run Code Online (Sandbox Code Playgroud)

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

Kri*_*sto 16

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

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


小智 12

如果问题是您只需要用 some 替换textsome text2,那么只需突出显示并猛拉text2。然后突出显示text并按pP粘贴text2以代替text

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

享受!

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


小智 7

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

但是,通常只更改您执行操作的顺序会更容易。先粘贴再删除,或者先删除再复制/粘贴。

或者,您可以删除到黑洞寄存器中"_d。见/sf/ask/3797881/