让 neovim 同时使用 tmux 缓冲区和系统剪贴板作为两个寄存器
have neovim use both tmux buffers & system clipboard as both registers
我是neovim的新手(nvim
)所以请原谅我的知识不足,很多问题与我的相似,但不完全相同。
我想要这个:
- 默认应该cut/copy到缓冲区,而不是系统剪贴板。
- 它是另一个寄存器(我认为是
+
,如果是*
请指正!)应该进入系统剪贴板。
我做了一些研究,但(到目前为止)没有任何东西对我有用。
信息:
- 我使用
tmux
所以推送到 tmux
缓冲区。
- 我不在家,所以目前正在使用
termux
所以 termux-clipboard-get/set
以下是我认为适用于我的情况的方法:
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
*
注册,而不是 +
),当我按 *
时,它会突出显示我的光标所在的单词的所有实例。
根据阅读,我预计:
- 默认情况下,
nvim
使用 *
注册,这似乎是正确的,因为它成功注册到 tmux
缓冲区 dd/yy
并粘贴 p
(或者在 tmux
中,我的绑定是 [PREFIX]+[p]
- 如果我想cut/copy/粘贴到我的另一个寄存器
+
(系统剪贴板),那么我会使用+dd/+yy
然后用+p
粘贴(或者甚至 *dd/*yy/*p
) 但这对我不起作用。
问题:
如上所述,+
将我的光标向下移动一行,当将其更改为 *
寄存器时,*
突出显示当前单词和它的任何其他出现
向有更多经验的人道歉,我刚从 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
复制另一个寄存器的功能配置。来源可以作为有用的参考:
此外,由于没有准确记录,这些配置的想法是每个数组都是一组命令行参数,其中 copied/pasted 文本预计分别在 STDIN 和 STDOUT 上生成.
我是neovim的新手(nvim
)所以请原谅我的知识不足,很多问题与我的相似,但不完全相同。
我想要这个:
- 默认应该cut/copy到缓冲区,而不是系统剪贴板。
- 它是另一个寄存器(我认为是
+
,如果是*
请指正!)应该进入系统剪贴板。
我做了一些研究,但(到目前为止)没有任何东西对我有用。
信息:
- 我使用
tmux
所以推送到tmux
缓冲区。 - 我不在家,所以目前正在使用
termux
所以termux-clipboard-get/set
以下是我认为适用于我的情况的方法:
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
*
注册,而不是 +
),当我按 *
时,它会突出显示我的光标所在的单词的所有实例。
根据阅读,我预计:
- 默认情况下,
nvim
使用*
注册,这似乎是正确的,因为它成功注册到tmux
缓冲区dd/yy
并粘贴p
(或者在tmux
中,我的绑定是[PREFIX]+[p]
- 如果我想cut/copy/粘贴到我的另一个寄存器
+
(系统剪贴板),那么我会使用+dd/+yy
然后用+p
粘贴(或者甚至*dd/*yy/*p
) 但这对我不起作用。
问题:
如上所述,+
将我的光标向下移动一行,当将其更改为 *
寄存器时,*
突出显示当前单词和它的任何其他出现
向有更多经验的人道歉,我刚从 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
复制另一个寄存器的功能配置。来源可以作为有用的参考:
此外,由于没有准确记录,这些配置的想法是每个数组都是一组命令行参数,其中 copied/pasted 文本预计分别在 STDIN 和 STDOUT 上生成.