我通过 ssh 进入远程系统并使用 vim+tmux 工作流程。我喜欢它,因为我可以在一天结束时分离我的会话,当我第二天早上重新启动它时,它就在我离开的地方。
问题是:当我重新连接 tmux 会话时,任何打开的 vim 编辑器都无法再识别*
或+
寄存器。给出错误
E353: Nothing in register +
让它再次工作的唯一方法是退出所有 vim 选项卡并重新启动它。
vim --version
返回
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Nov 24 2016 16:44:48)
+clipboard
+xterm_clipboard
se clipboard?
返回
clipboard=unnamed,unnamedplus,autoselect,exclude:cons\|linux
:echo has('clipboard')
返回
1
:echo has('xterm_clipboard')
返回
1
:echo $DISPLAY
返回
localhost:10.0
<--这与附件一致DISPLAY
有没有办法让 vim 重新加载+
并*
注册?
答案1
这个问题困扰了我好几个月,有时我+
在 tmux-vim 中得到 -registry,有时却得不到。感谢你们参与这个帖子。有两个关于vim+tmux
和vim+screen
使用 X11 服务器更改然而,我还没能找到快速解决方法。
现在我使用dhruvasagar/vim-prosession在保持上一次编辑会话的同时恢复丢失的-registries。使用默认配置,当从某个目录+
启动 vim 会话时,整个会话将在退出时存储。现在,记录目录并处理上一次编辑会话。vim
tmux
vim-prosession
通过 SSH 访问剪贴板(Win10)
我使用 Windows 10 计算机访问 Linux 计算机上的 Tmux 会话,其中 X410 提供剪贴板支持。当+
-registry 不可用时,Windows 剪贴板很可能无法访问。手动重新启动 X410 应该可以解决此剪贴板问题。(据我了解,X410 卡在某个地方,禁止其他程序写入 Windows 剪贴板。)
另外,要让“Ctrl+C”写入+
远程计算机上运行的 Tmux 会话中嵌套的 Vim 实例中的 -registry,重新连接到 Tmux 会话也会破坏+
使用“Ctrl+C”写入 -registry 的能力。 ==> 当发生这种情况并且 Windows 系统剪贴板仍在工作时,解决方法是在 Tmux 中启动一个新的窗格/拆分,并加载一个“新”的 Vim 实例vim-prosession
。
(2021-11-17 编辑:在水平分隔线后添加了 Win10-WSL2 的故障排除步骤。)
答案2
我也遇到过这种情况。我运行Ubuntu 16.04
VirtualBox,这是我的远程虚拟机。每次我尝试重新连接时,我都会丢失寄存器。我过去常常在虚拟机上保存状态并进入虚拟机。
这些天,我改用tmux-resurrect
和tmux-continuum
扩展。它们保留了tmux-splits
,以及vim
带有的 -states vim-obsession
。接下来,我没有在 VM 上使用 savestate,而是将其关闭。
当我启动它时,寄存器工作得非常可靠。