![如何连接到在重新连接的屏幕会话中运行的 vim 服务器?](https://linux22.com/image/1338903/%E5%A6%82%E4%BD%95%E8%BF%9E%E6%8E%A5%E5%88%B0%E5%9C%A8%E9%87%8D%E6%96%B0%E8%BF%9E%E6%8E%A5%E7%9A%84%E5%B1%8F%E5%B9%95%E4%BC%9A%E8%AF%9D%E4%B8%AD%E8%BF%90%E8%A1%8C%E7%9A%84%20vim%20%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%9F.png)
我通常ssh -X
将远程 Linux 机器启动并在服务器模式下GNU screen
运行。断开并重新连接到会话后,我无法再将文件发送到服务器。我猜是因为重新连接的会话丢失了与 X-window 服务器的连接,而服务器使用该服务器进行通信。有没有办法解决这个问题?vim
screen
screen
vim
screen
vim
答案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