我喜欢vim,但一个常见的问题是:
拉起一条线 去你想粘贴的地方 删除已有内容 粘贴你的yank,却发现它粘贴了你刚刚删除的内容
显然,工作流是先删除,再删除。但如果我不这么做就太好了。有人有诀窍吗?vim是否有一个工作良好的粘贴缓冲区,或者是否有一个我可以更改的.vimrc设置?
我喜欢vim,但一个常见的问题是:
拉起一条线 去你想粘贴的地方 删除已有内容 粘贴你的yank,却发现它粘贴了你刚刚删除的内容
显然,工作流是先删除,再删除。但如果我不这么做就太好了。有人有诀窍吗?vim是否有一个工作良好的粘贴缓冲区,或者是否有一个我可以更改的.vimrc设置?
当前回答
你的被拉拽的行应该仍然在寄存器0中。所以做
"0p
粘贴这一行(并随时删除)
其他回答
对于你的具体问题,你能不能把最后两步的顺序换一下?
扬克线(相同) 搬到新地方(不变) 粘贴拉绳(第4步) 删除你不想要的行(步骤3)
当然,我通常使用命名寄存器来处理这类事情,但有时解决方案比最初想到的要简单。
你的被拉拽的行应该仍然在寄存器0中。所以做
"0p
粘贴这一行(并随时删除)
我发现所有这些组合键都很麻烦。相反,我编写了一个函数来切换vim的“副作用”行为,即从删除操作覆盖缓冲区。这样你就可以关闭它,自由删除,然后在你完成后切换回来。
在这里可以看到我的答案:https://stackoverflow.com/a/12649560/778118
使用它只需把它放在你的。vimrc
另一种可能性如下:
像平常一样拉你的线 切换到你想要粘贴的位置,进入可视线条模式(V) 选择要替换的行 按p粘贴你的行。
这还有一个额外的好处,即缓冲区与被替换的内容进行了“交换”,我认为这非常方便
我使用下面的映射使删除黑洞寄存器更容易一些:
nnoremap R "_d
这样,dd变成了Rd, d美元变成了R美元。请注意,R通常会进入替换模式,但我发现我从未使用过这种模式,所以对于“真正的删除”特性来说,它是最容易记住的键。