提问人:S.V 提问时间:7/27/2016 最后编辑:datUserS.V 更新时间:3/2/2023 访问量:3505
如何禁用 vim 粘贴到/从系统剪贴板粘贴?
How to disable vim pasting to/from system clipboard?
问:
基本上,我需要有关如何执行与此处描述的相反操作的建议:
当我在编辑器中删除某些内容时,我不希望 vim 覆盖系统剪贴板。对我来说,通常的工作流程是用鼠标选择一段代码(我们称之为片段 #1),然后转到另一段代码(让我们称之为片段 #2),在 vim 的可视化模式下选择片段 #2,使用“c”删除它,然后使用鼠标中键粘贴片段 #1。使用新行为,我不是粘贴片段 #1,而是粘贴回片段 #2。
在 vim 7.2 中我可以这样做,但在 vim 7.4 中我不能。由于正确的 C++11 语法突出显示,我想使用 7.4,但这种更改的默认行为正在杀死我。
我认为,它与 vim (vim --version) 的“+xterm_clipboard”和/或“+剪贴板”功能有关,我需要以某种方式将它们更改为“-xterm_clipboard”和/或“-clipboard”。我尝试使用选项“--with-x=no”重新编译 vim 7.4,但不知何故它没有帮助。
请帮我禁用默认情况下在 vim 中复制/粘贴到系统剪贴板。
谢谢!
答:
检查
:h clipboard-unnamed
此扩展也可能对您有用 http://vimawesome.com/plugin/easyclip
好吧,要回答标题中的问题,您可以这样做
:set clipboard=
这将使 vim 使用它的内部寄存器而不是系统寄存器。
但实际上,这种行为与系统剪贴板无关。这更像是对 vim 寄存器的一般误解。
默认情况下,Vim 会“剪切”而不是“删除”。这意味着每个删除命令 ( 和 ) 都会同时拉向未命名的寄存器。要解决这个问题,只需使用黑洞寄存器,例如使用 or 而不是仅仅做 or 。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)和选择模式(使用鼠标)
评论