目前我已经set clipboard+=unnamed
,它将未命名的VIM注册链接到系统剪贴板。
我想要的只是将Vims寄存器0与系统剪贴板相关联,其中"将始终包含最近被拉动的文本,但从不删除文本" [1]。
这样就可以了,我的系统剪贴板(有自己的历史记录)没有得到垃圾邮件,内容包括删除,更改和放置来自Vim的操作,例如只有来自Vim的抽头操作才与系统剪贴板共享。
这可能吗?
答案 0 :(得分:1)
虽然这并不是完全你描述的内容,但我想知道你是否喜欢这样的行为:
set clipboard+=unnamedplus
:help clipboard
中的详细信息。从本质上讲,这会将系统剪贴板提供程序链接到抽头操作,这样当您将文本放入以下寄存器时(至少在我的机器上):
""
"0
"+
这避免了" + y 和朋友的必要性。删除将填充:
""
"1
"+
因为删除通常会在任何情况下跳过寄存器0。那么这可能会接近你所追求的目标吗?
我相信某些系统寄存器*
和+
是相同的,因此您可能会发现它也填充了*
。除非指定了另一个寄存器,否则粘贴将来自+
。
没有unnamedplus
的选项
另一种方法是使用您的领导密钥专门将您的yank操作绑定到适合您的行为。我已经在一些init.vim
中看到了这一点,尽管我自己并不觉得这个特别有用。例如:
nnoremap <leader>y "+y
vnoremap <leader>y "+y
nnoremap <leader>p "+p
vnoremap <leader>p "+p
同样,不是你所要求的,但我怀疑你是否正在寻找一个能够响应寄存器变化的插件。
答案 1 :(得分:1)
另一种半解决方案是使用剪贴板集成的自动选择模式:
if has("clipboard")
if v:version > 703 || v:version == 703 && has('patch597')
set clipboard^=autoselectplus
else
set clipboard^=autoselect
endif
endif
这只会将扬声从可视模式选择同步到剪贴板。
如果启用了鼠标模式,则可以单击选择区域并将其y
放入剪贴板同步的+
缓冲区中。或者只需使用v
来启动选择。
我意识到,键击效率不如您建议的那样简单地从剪贴板集成中屏蔽未命名的寄存器,因此也可以同步简单的编辑模式(yy
),但是dd
和x
不会。但是autoselect
将使您的剪贴板保持清洁。