如何连接到在重新连接的屏幕会话中运行的 vim 服务器?

如何连接到在重新连接的屏幕会话中运行的 vim 服务器?

我通常ssh -X将远程 Linux 机器启动并在服务器模式下GNU screen运行。断开并重新连接到会话后,我无法再将文件发送到服务器。我猜是因为重新连接的会话丢失了与 X-window 服务器的连接,而服务器使用该服务器进行通信。有没有办法解决这个问题?vimscreenscreenvimscreenvim

答案1

$DISPLAY这是因为您的新 ssh 连接使用了和/或环境变量的新值$XAUTHORITY,但屏幕会话仍将使用原始 ssh 连接的值。

您可以创建一个包含以下内容的脚本,在重新连接到屏幕会话之前运行该脚本,然后在屏幕会话内的每个 shell 中运行source ~/.Xsetup

#!/bin/sh
exec > $HOME/.Xsetup
echo DISPLAY=$DISPLAY
echo XAUTHORITY=$XAUTHORITY

这会将新值复制到您从中获取生成的脚本文件的任何 shell 中。但屏幕会话本身仍将具有旧值,并且任何启动的新程序仍将获得这些值。在获取 .Xsetup 文件后,可以通过运行以下命令来修复这些值。

screen -X setenv DISPLAY $DISPLAY
screen -X setenv XAUTHORITY $XAUTHORITY

相关内容