如何禁用vim 粘贴to/from 系统剪贴板?

How to disable vim pasting to/from system clipboard?

基本上,我需要有关如何执行此处描述的相反的建议:

How to make vim paste from (and copy to) system's clipboard?

不希望 vim 在编辑器中删除某些内容时覆盖系统剪贴板。我通常的工作流程是用鼠标 select 一段代码(让我们称之为#1),然后转到另一段代码(让我们称之为#2),select vim 中可视模式下的片段 #2,使用 "c" 将其删除,并使用鼠标中键粘贴片段 #1。有了新的行为,我不再粘贴第 1 块,而是向后粘贴第 2 块。

在 vim 7.2 中我可以做到,但在 vim 7.4 中我不能。由于正确的 C++11 语法突出显示,我想使用 7.4,但这种更改的默认行为让我很生气。

我认为,这与"+xterm_clipboard" and/or "+clipboard"[=37]有关=] vim 的功能(vim --version),我需要以某种方式将它们更改为 "-xterm_clipboard “ and/or ”-剪贴板。我尝试使用选项 "--with-x=no" 重新编译 vim 7.4,但不知何故它没有帮助。

请帮我禁用 vim 中的 copying/pasting 默认到系统剪贴板。

谢谢!

检查

:h clipboard-unnamed

此扩展可能对您也有用http://vimawesome.com/plugin/easyclip

好吧,要回答你标题中的问题,你可以这样做

:set clipboard=

这将使 vim 使用它的内部寄存器而不是系统寄存器。

但实际上,此行为与系统剪贴板无关。这只是对 vim 寄存器的普遍误解。

Vim 默认 "cuts" 而不是 "deletes"。这意味着每个删除命令(cd)同时猛拉到未命名的寄存器。要解决这个问题,只需使用黑洞寄存器,例如使用 "_c"_d 而不是只做 cd.

9. Black hole register "_               *quote_*
When writing to this register, nothing happens.  This can be used to delete
text without affecting the normal registers.  When reading from this register,
nothing is returned.  {not in Vi}

要使其成为您特定情况下的默认行为,您可以这样做

xnoremap c "_d

'xnoremap'中的'x'表示此映射适用于视觉模式(使用v)和select模式(使用鼠标)

Related SO link.