如何在不同tmux会话间共享单个窗格?
在两个tmux会话间共享单个窗格的方法
当然可以实现这个需求!tmux内置了专门的机制,能让同一个窗格同时出现在多个会话中,完美匹配你描述的场景——让测试输出在一个会话持续显示,同时在另一个桌面会话里随时对这个窗格进行输入操作。
下面是具体的操作步骤:
步骤1:创建带共享窗格的初始会话
先打开一个终端,创建并进入第一个会话(比如命名为monitor,用来专门显示测试输出):
tmux new-session -s monitor
在这个会话里,打开你需要共享的窗格(比如运行你的测试命令,让它持续输出内容)。
步骤2:创建/进入第二个会话
打开另一个终端窗口,创建或者进入你的桌面大会话(比如命名为main):
tmux new-session -s main
步骤3:将共享窗格接入第二个会话
首先你需要获取monitor会话中目标窗格的标识符:
- 在
monitor会话里,按下Ctrl+b + q,tmux会短暂显示每个窗格的编号(比如0),对应的标识符就是%0; - 或者在任意终端执行命令查看:
tmux list-panes -t monitor
输出会类似0: [80x24] [history 0/1000, 0 bytes] %0,其中%0就是你要的窗格标识符。
接下来回到main会话,执行命令把目标窗格加进来:
tmux join-pane -t monitor:%0
执行后,你就能在main会话里看到那个共享的窗格了,而且两个会话里的这个窗格是完全同步的——在main里输入内容,monitor里会实时显示;monitor里的输出,main里也能看到。
进阶:设置快捷键快速接入
如果你需要频繁切换接入这个窗格,可以修改~/.tmux.conf配置文件,添加一个自定义快捷键:
bind-key j join-pane -t monitor:%0
保存配置后,在tmux会话里按下Ctrl+b + :,输入source ~/.tmux.conf加载配置。之后你在main会话里按下Ctrl+b + j,就能一键把共享窗格接入进来,非常方便。
内容的提问来源于stack exchange,提问作者Miles




