Vim 如何阻止c)更改复制到粘贴缓冲区?

Vim 如何阻止c)更改复制到粘贴缓冲区?,vim,Vim,我想做的一件常见的事情是猛拉“一些文本”,然后用它来更改“一些其他文本” 因此,我将光标移到一些文本,然后用yi“抓取一些文本。现在如何替换一些其他文本?如果我这样做di”,则我的复制粘贴寄存器会被一些其他文本覆盖。我知道我可以使用命名寄存器,但我的问题是我的肌肉记忆已经完成了yi”。有什么方法可以覆盖y或d的默认行为吗?你可以重新映射d键来执行黑洞寄存器”的删除操作: 您需要使用一个noremap版本,这样它就不会进入无限循环。Vim中的“未命名”寄存器不是实寄存器,而是指向上次使用的寄存器的

我想做的一件常见的事情是猛拉
“一些文本”
,然后用它来更改
“一些其他文本”


因此,我将光标移到一些文本,然后用
yi“
抓取
一些文本
。现在如何替换
一些其他文本
?如果我这样做
di”
,则我的复制粘贴寄存器会被
一些其他文本
覆盖。我知道我可以使用命名寄存器,但我的问题是我的肌肉记忆已经完成了
yi”
。有什么方法可以覆盖
y
d
的默认行为吗?

你可以重新映射
d
键来执行黑洞寄存器
”的删除操作:

您需要使用一个noremap版本,这样它就不会进入无限循环。

Vim中的“未命名”寄存器不是实寄存器,而是指向上次使用的寄存器的指针。它甚至在Vim的源代码中作为指针实现(或者更准确地说,作为寄存器数组的索引)

因此,被拖动的文本不会被“delete”命令真正覆盖,因为默认情况下“yank”使用寄存器“zero”,而“delete”使用“one”或“减号”


因此,您总是可以通过按“0p”来放置最后一个拖动的文本。

您可以将
d
重新映射到
”\u d
。非常感谢-我已将p映射到
“0p
,我现在是一只快乐的兔子。教我SO帖子的kbd标签的额外荣誉:-)
nnoremap d "_d