如何禁用vim粘贴到系统剪贴板/从系统剪贴板粘贴?

时间:2016-07-27 15:27:52

标签: c++11 vim editor clipboard

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

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

当我在编辑器中删除某些内容时,我不希望 vim覆盖系统剪贴板。对我来说,通常的工作流程是用鼠标选择一段代码(让我们称它为#1),然后转到另一段代码(让我们称之为#2),在视觉模式中选择#2 vim,使用“c”删除它,并使用鼠标中键粘贴#1。使用新的行为,而不是粘贴#1,我粘贴#2。

在vim 7.2中我可以做到这一点,但在vim 7.4中我不能。我想使用7.4由于正确的C ++ 11语法高亮,但这种改变的默认行为正在扼杀我。

我认为,它与vim的“+ xterm_clipboard”和/或“+ clipboard”功能有关( vim --version < / em>),我需要以某种方式将它们更改为“ - xterm_clipboard”和/或“ - clipboard”。我尝试使用“ - with-x = no”选项重新编译vim 7.4,但不知何故它没有帮助。

请帮助我默认禁用vim中的复制/粘贴到系统剪贴板。

谢谢!

2 个答案:

答案 0 :(得分:5)

嗯,要回答你标题中的问题,你可以做到

:set clipboard=

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

但实际上,这种行为与系统剪贴板无关。这更像是对vim寄存器的一般误解。

Vim默认为“cut”而不是“删除”。这意味着每个删除命令(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)和选择模式(使用鼠标)

Related SO link

答案 1 :(得分:0)

检查

:h clipboard-unnamed

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