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

dbf7pr2w  于 2023-03-02  发布在  其他
关注(0)|答案(2)|浏览(172)

基本上,我需要的建议是如何做相反这里描述的事情:
How to make vim paste from (and copy to) system's clipboard?
当我在编辑器中删除一些东西时,我不希望**vim覆盖系统剪贴板。我通常的工作流程是选择一段代码(我们称之为piece #1),然后转到另一段代码(让我们称之为piece #2),在vim的可视化模式下选择piece #2,使用“c”删除它,然后使用鼠标中键粘贴piece #1。我粘贴背面的#2,而不是粘贴#1。
在vim 7.2中我可以这样做,但在vim 7.4中我不能。我想使用7.4,因为正确的C++11语法突出显示,但这种改变的默认行为是杀了我。
我认为,这与vim的 "+xterm_clipboard” 和/或 "+clipboard” 特性有关(vim --version),我需要以某种方式将它们更改为 "-xterm_clipboard” 和/或 "-clipboard”。我尝试使用选项 "--with-x=no” 重新编译vim 7.4,但不知何故,它没有帮助。
请帮助我禁用复制/粘贴在vim到系统剪贴板默认。
谢谢大家!

uqzxnwby

uqzxnwby1#

为了回答题目中的问题,你可以

: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”表示此Map适用于可视模式(使用v)和选择模式(使用鼠标)
Related SO link .

bzzcjhmw

bzzcjhmw2#

核对

:h clipboard-unnamed

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

相关问题