Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos Tmux:如何在嵌套的远程ssh会话和本地计算机之间复制文本_Macos_Ssh_Tmux - Fatal编程技术网

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

Macos Tmux:如何在嵌套的远程ssh会话和本地计算机之间复制文本,macos,ssh,tmux,Macos,Ssh,Tmux,我在本地有一个连接到多个远程tmux会话的tmux会话 我无法理解如何从这些远程tmux会话和本地计算机复制文本 奇怪的是,打开远程ssh会话(不嵌套在本地tmux中)是有效的 基本上,如果我启动ssh会话并连接到远程tmux,那么一切都可以正常工作(复制/粘贴)。另一方面,如果我启动一个本地tmux,然后用ssh连接到一个远程系统并连接到它的tmux会话,那么我就不能从该远程会话复制到本地机器(我在Catalina/MacOS上)。我觉得这很奇怪。我想你是说在tmux中用复制模式复制文本 tm

我在本地有一个连接到多个远程tmux会话的tmux会话

我无法理解如何从这些远程tmux会话和本地计算机复制文本

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


基本上,如果我启动ssh会话并连接到远程tmux,那么一切都可以正常工作(复制/粘贴)。另一方面,如果我启动一个本地tmux,然后用ssh连接到一个远程系统并连接到它的tmux会话,那么我就不能从该远程会话复制到本地机器(我在Catalina/MacOS上)。我觉得这很奇怪。

我想你是说在tmux中用复制模式复制文本

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

由于只有一个tmux,您可能在tmux之外有
TERM=xterm
,并且默认情况下有一个终端允许这样做,因此它可以在不更改任何配置的情况下工作

但是,对于两个tmux,内部tmux将具有默认情况下不允许的
TERM=screen
TERM=tmux
和外部终端(外部tmux)

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

1) 将外部tmux配置为允许剪贴板由内部程序通过上的
set-g set clipboard进行设置(不要忘记在更改.tmux.conf后完全重新启动tmux,或者也可以通过命令提示符进行此操作)

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


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

我想您的意思是在tmux中使用复制模式复制文本

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

由于只有一个tmux,您可能在tmux之外有
TERM=xterm
,并且默认情况下有一个终端允许这样做,因此它可以在不更改任何配置的情况下工作

但是,对于两个tmux,内部tmux将具有默认情况下不允许的
TERM=screen
TERM=tmux
和外部终端(外部tmux)

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

1) 将外部tmux配置为允许剪贴板由内部程序通过
上的
set-g set clipboard进行设置(不要忘记在更改.tmux.conf后完全重新启动tmux,或者也可以通过命令提示符进行此操作)

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

如果内部tmux非常旧,您可能还需要对其执行
set-g设置剪贴板