2016-07-27 139 views
0

基本上,我需要怎么做这里描述的是什么的相反建议:如何禁用vim粘贴到/从系统剪贴板?

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

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

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

我认为,它有事情做与“+ xterm_clipboard”和/或“+剪贴板” VIM的功能(VIM --version),我需要以某种方式改变他们“-xterm_clipboard”和/或“-clipboard”。我尝试用选项“--with-x = no”重新编译vim 7.4,但不知怎的,它没有帮助。

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

谢谢!

+0

你有两种选择。首先,最好避免使用剪贴板注册。其次,映射它或将其设置到其他寄存器。 :) – SibiCoder

回答

1

好了,回答您的标题的问题,你可以做

:set clipboard= 

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

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

Vim默认为“剪切”而不是“删除”。这意味着每个删除命令(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 

的“x”在“xnoremap”是指该映射适用于Visual模式(V)和选择模式(用鼠标)

Related SO link

+0

(这是对以前版本的回复的评论)非常感谢! **“:set clipboard =”**为我做的诀窍:)如果你将你的回答反转回来,建议我“:set clipboard =”,我会接受它;) –

+0

@ S.V很高兴我能帮上忙!另外,如果你还有更多的问题,那么你也知道,还有一个[专门的vim站点](http://vi.stackexchange.com/)。 – DJMcMayhem

+0

谢谢!事实上,我不知道http://vi.stackexchange.com/ - 不知何故,我的谷歌搜索引导我到了这里,而不是专门的vim站点。 –