基本上,我需要有关如何执行此处描述的相反的建议:
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中的复制/粘贴到系统剪贴板。
谢谢!
答案 0 :(得分:5)
嗯,要回答你标题中的问题,你可以做到
:set clipboard=
这将使vim使用它的内部寄存器而不是系统寄存器。
但实际上,这种行为与系统剪贴板无关。这更像是对vim寄存器的一般误解。
Vim默认为“cut”而不是“删除”。这意味着每个删除命令(c
和d
)同时都会向未命名的寄存器移动。要解决这个问题,只需使用黑洞寄存器即可。使用"_c
或"_d
代替c
或d
。
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)和选择模式(使用鼠标)
答案 1 :(得分:0)