我在本地计算机上打开了 tmux 会话,并通过 ssh 连接到远程计算机。之后,我tmux attach
在远程计算机上输入内容,然后在本地 tmux 会话上获得了远程 tmux 会话。
现在我想脱离远程 tmux 会话,我已经尝试过CTRL+B D但它脱离的是我的本地 tmux 会话而不是远程会话。
我如何分离远程 tmux 会话?
答案1
CTRL+ B CTRL+B D
(假设默认绑定)
第一个CTRL+B由您的本地tmux(因为它是第一个看到你所有击键的命令)。第二个CTRL+是一个命令,它使你的本地 tmux向其活动窗格B发送一个CTRL+ ;这个生成的+到达远程BCTRLBtmux.D经过当地tmux不变;当它到达遥控器时tmux它触发detach
命令。
- 您输入CTRL+ B。
您的本地tmux将其解释为前缀键;不会向在本地运行的进程发送任何内容tmux。 - 您输入CTRL+ B。
您的本地tmux是否已将其绑定到send-prefix
命令。- 您当地的tmux向活动窗格中运行的进程发送CTRL+ (B远程控制)。
- 远程控制转发(通过sshd等)到远程端(远程tmux)
您的遥控器tmux将其解释为前缀键;不会向远程运行的进程发送任何内容tmux。
- 您输入D。
您的本地tmux正常通过(因为第二个CTRL+B完成了本地的完整命令键序列tmux)
您的遥控器tmux将其绑定到detach-client
;它会分离活动客户端。
这与你需要CTRL向B在tmux会话。如果您想将CTRL+发送B到您的普通 shell(例如,因为您的 shell 使用 Emacs 样式的编辑,其中CTRL+B是backward-char
(并且您不喜欢使用箭头键)),您需要使用CTRL+ B CTRL+B将单个CTRL+发送B到 shell。
答案2
tmux detach
另一种方法就是在远程 tmux 会话中输入,而不用担心键绑定是否正确。
答案3
我尝试了第一个答案,但没有成功。
通过执行以下操作,我能够获得我想要的结果:
tmux attach
我进入 tmux 并看到另一个会话仍然连接着
因此我分离了当前会话并返回到 shell:CTRL+B D
然后我发布了以下内容:
tmux attach -d
这表示附加到默认会话,并分离当前附加的所有其他会话。请参阅手册页客户端和会话
附加会话[-dr] [-t target-session](别名:attach)如果从 tmux 外部运行,则在当前终端中创建一个新客户端并将其附加到 target-session。如果从内部使用,则切换当前客户端。 如果指定了 -d,则连接到该会话的任何其他客户端都将被分离。 -r 表示客户端是只读的(只有绑定到 detach-client 命令的键才有效)
答案4
我更喜欢tmux detach
,因为它是一个命令,所以不需要键盘。