Tmux:如何在嵌套远程 ssh 会话和本地计算机之间复制文本

SFb*_*007 6 macos ssh tmux

我在本地有 tmux 会话,它连接到多个远程 tmux 会话。

我无法弄清楚如何从这些远程 tmux 会话和本地计算机复制文本。

神秘的是,打开远程 ssh 会话(不是嵌套在本地 tmux 中)是有效的。

基本上,如果我启动 ssh 会话并附加到远程 tmux,那么一切正常(复制/粘贴)。另一方面,如果我启动本地 tmux,然后 ssh 到远程系统并附加到它的 tmux 会话,那么我无法从该远程会话复制到本地计算机(我在 Catalina/MacOS 上)。这对我来说似乎很奇怪。

Nic*_*ott 13

我假设你的意思是在 tmux 中使用复制模式复制文本?

tmux 可以使用 OSC 52 转义序列设置主机剪贴板,但需要注意外部终端支持此操作,并且需要配置外部终端以允许它。

如果只有一个 tmux,您可能有TERM=xterm外部 tmux 和默认允许此操作的终端,因此无需更改任何配置即可工作。

然而,对于两个 tmux,内部 tmux 将具有TERM=screenorTERM=tmux和一个外部终端(外部 tmux),默认情况下不允许这样做。

因此,要使其发挥作用,您需要做两件事:

1) 配置外部 tmux 以允许内部程序设置剪贴板set -g set-clipboard on(不要忘记在更改 .tmux.conf 后完全重新启动 tmux,或者也从命令提示符执行此操作)。

2) 配置内部 tmux,以在外部终端也是 tmux 时通过Ms向terminal-overrides 添加条目来设置剪贴板(如果有内部 tmux,则更改为)screen*tmux*TERM=tmuxset -as terminal-overrides ',screen*:Ms=\\E]52;%p1%s;%p2%s\\007'。执行此操作后,如果不重新启动 tmux,则需要分离并重新连接 tmux。

如果内部 tmux 非常旧,您可能还需要set -g set-clipboard on对其进行处理。