2

我在远程机器上通过 ssh 连接在 tmux 中使用 Vim。我从多个位置访问远程服务器,包括工作地点和家中。这通常会导致过时的 $DISPLAY 变量和相关问题,我已经解决了大部分问题,除了一个:

如果我已经打开了一个 vim 会话,有没有办法在不关闭并重新打开它的情况下更改它连接到的 X 服务器?我需要能够做到这一点,这样我才能使用 X 剪贴板从 Vim 复制文本片段。我通常会保持多个垂直分割、换行符和行号,因此通过 tmux 执行此操作通常很麻烦,并且更愿意使用 vim 执行此操作。

4

3 回答 3

4

您可以使用xpra在不同的 X11 服务器上显示正在运行的 X11 程序(特别是 vim)。

该程序适用于 X11 程序,如 GNU screen 或 tmux,适用于终端程序。xpra 提供了一个用于运行程序的 X 服务器,它本身充当 X 服务器的 X 客户端,用于用户的显示。

您提到您正在通过 tmux 运行 vim;您可能应该在 tmux 之外运行 vim 并直接使用 xpra 。据我所知,该程序必须从一开始就通过 xpra 运行。

于 2013-09-28T23:18:23.440 回答
2

如果使用 X 的唯一目的是传输大量文本,请考虑使用scp代替。

从 vim 中标记您感兴趣的行并执行:w /tmp/foo

从外壳(或使用ctrl-z;暂停vim bg)做

scp your_username@remotehost.edu:/tmp/foo /some/local/directory
于 2013-09-28T20:51:49.527 回答
2

有一个名为 xrestore 的相对较新的命令可以执行此操作:

:xrestore :0

https://groups.google.com/g/vim_dev/c/G54XTJHAqXI

https://github.com/vim/vim/issues/3649

于 2020-02-24T17:20:23.740 回答