重新连接 tmux 会话后,vim 忘记了寄存器(*、+);E353:寄存器中没有任何内容

重新连接 tmux 会话后,vim 忘记了寄存器(*、+);E353:寄存器中没有任何内容

我通过 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+tmuxvim+screen使用 X11 服务器更改然而,我还没能找到快速解决方法。

现在我使用dhruvasagar/vim-prosession在保持上一次编辑会话的同时恢复丢失的-registries。使用默认配置,当从某个目录+启动 vim 会话时,整个会话将在退出时存储。现在,记录目录并处理上一次编辑会话。vimtmuxvim-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.04VirtualBox,这是我的远程虚拟机。每次我尝试重新连接时,我都会丢失寄存器。我过去常常在虚拟机上保存状态并进入虚拟机。

这些天,我改用tmux-resurrecttmux-continuum扩展。它们保留了tmux-splits,以及vim带有的 -states vim-obsession。接下来,我没有在 VM 上使用 savestate,而是将其关闭。

当我启动它时,寄存器工作得非常可靠。

相关内容