目前我已经set clipboard+=unnamed将未命名的 VIM 寄存器与系统剪贴板链接起来。
不过,我想要的是仅将 Vims 寄存器 0 与系统剪贴板关联,该剪贴板“将始终包含最近拉出的文本,但从未删除文本”[1]。
这将使我的系统剪贴板(有自己的历史记录)不会收到来自 Vim 的删除、更改和放置操作内容的垃圾邮件,例如,只有来自 Vim 的猛拉操作才会与系统剪贴板共享。
这可能吗?
1) https://sanctum.geek.nz/arabesque/advanced-vim-registers/
虽然这并不完全是您所描述的,但我想知道您是否喜欢以下行为:
set clipboard+=unnamedplus
Run Code Online (Sandbox Code Playgroud)
详细信息在:help clipboard. 本质上,这将系统剪贴板提供程序链接到拉取操作,以便当您拉取文本时,它会被放入以下寄存器中(至少在我的机器上):
""
"0
"+
Run Code Online (Sandbox Code Playgroud)
这就避免了和朋友的必要性"+y。删除将填充:
""
"1
"+
Run Code Online (Sandbox Code Playgroud)
因为在任何情况下删除通常都会跳过寄存器 0。那么这可能接近您所追求的?
我相信在某些系统上寄存器*是+相同的,所以您可能会发现它*也填充在您的系统上。+除非指定另一个寄存器,否则粘贴将来自。
选项无unnamedplus
另一种方法是使用领导者密钥将您的复制操作专门绑定到适合您的行为。我已经见过这个了init.vim,尽管我自己并不觉得它特别有用。例如:
nnoremap <leader>y "+y
vnoremap <leader>y "+y
nnoremap <leader>p "+p
vnoremap <leader>p "+p
Run Code Online (Sandbox Code Playgroud)
再说一次,不完全是你所要求的,但我怀疑除此之外你正在考虑编写一个响应寄存器变化的插件。