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 替换text
some text2
,那么只需突出显示并猛拉text2
。然后突出显示text
并按p
或P
粘贴text2
以代替text
。
一些常见 vim 命令的快速进一步指南是http://www.catswhocode.com/blog/100-vim-commands-every-programmer-should-know
享受!
编辑:注意p
在光标之后和光标P
之前粘贴文本。
小智 7
您可以复制到命名寄存器中"ayw
,进行删除,然后从命名寄存器粘贴"ap
。
但是,通常只更改您执行操作的顺序会更容易。先粘贴再删除,或者先删除再复制/粘贴。
或者,您可以删除到黑洞寄存器中"_d
。见/sf/ask/3797881/