让 neovim 同时使用 tmux 缓冲区和系统剪贴板作为两个寄存器

have neovim use both tmux buffers & system clipboard as both registers

我是neovim的新手(nvim)所以请原谅我的知识不足,很多问题与我的相似,但不完全相同。

我想要这个:

我做了一些研究,但(到目前为止)没有任何东西对我有用。

信息:

以下是我认为适用于我的情况的方法:

let g:clipboard = {
  \   'name': 'TmuxTermux',
  \   'copy': {
  \      '*': ['tmux', 'load-buffer', '-'],
  \      '+': ['termux-clipboard-set'],
  \    },
  \   'paste': {
  \      '*': ['tmux', 'save-buffer', '-'],
  \      '+': ['termux-clipboard-get'],
  \   },
  \   'cache_enabled': 1,
  \ }

现在当我 cut/copy、tmux 缓冲区共享 vim 的内容时,完美! (几乎...), 我不能使用 + 缓冲区来使用系统剪贴板,如果我按 '+' 它只是将我的光标向下移动一行,如果我交换上面的顺序(使 termux-clipboard-get/set * 注册,而不是 +),当我按 * 时,它会突出显示我的光标所在的单词的所有实例。

根据阅读,我预计:

问题:

如上所述,+ 将我的光标向下移动一行,当将其更改为 * 寄存器时,* 突出显示当前单词和它的任何其他出现

向有更多经验的人道歉,我刚从 emacs 毕业(小指非常酸痛!:)

为了从一个特定的寄存器中提取或放入,你必须在寄存器的名称前加上 ":

Bad Good
+dd "+dd
*dd "*dd
+yy "+yy
*yy "*yy

以下是在 macOS 上的 tmux 下的 neovim 中对我有用的东西:

init.vim (vimscript):

let g:clipboard = {
    \   'name': 'macos+tmux',
    \   'copy': {
    \      '+': ['pbcopy'],
    \      '*': ['tmux', 'load-buffer', '-'],
    \    },
    \   'paste': {
    \      '+': ['pbpaste'],
    \      '*': ['tmux', 'save-buffer', '-'],
    \   },
    \   'cache_enabled': 0,
    \ }

在 neovim 的源代码中,pbcopy/pbpaste 在没有 cache_enabled 的情况下使用,关于该设置的文档让我感到困惑,所以我认为将其保留更安全。

请注意,您不能仅使用此配置覆盖其中一个寄存器——这意味着如果您只想更改其中一个寄存器的行为,您仍然必须使用此 g:clipboard 复制另一个寄存器的功能配置。来源可以作为有用的参考:

https://github.com/neovim/neovim/blob/22b538139606321bb1083665c510e81adb3d6670/runtime/autoload/provider/clipboard.vim

此外,由于没有准确记录,这些配置的想法是每个数组都是一组命令行参数,其中 copied/pasted 文本预计分别在 STDIN 和 STDOUT 上生成.