You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让tmux窗格按创建顺序自动排序?

解决方案:实现tmux窗格3x3按创建顺序横向排列

当然可以自动实现这种布局,你原来的脚本用垂直分割(split-window -v)的方式没法得到想要的横向每行三格的排列,需要调整分割的顺序和方向,先横向分割出每行的窗格,再纵向分割出下一行的位置。

完整脚本示例

#!/bin/bash
PROGRAM_NAME="<ProgramName>"
SESSION_NAME="peers"

# 创建后台会话,初始窗格0
tmux new -s "$SESSION_NAME" -d

# 第一行:横向分割两次,得到窗格1、2
tmux split-window -h -t "$SESSION_NAME"  # 分割窗格0,得到右侧的窗格1
tmux split-window -h -t "$SESSION_NAME"  # 分割窗格1,得到右侧的窗格2

# 第二行:选中窗格0,纵向分割得到下方的窗格3,再横向分割出4、5
tmux select-pane -t "$SESSION_NAME":0
tmux split-window -v -t "$SESSION_NAME"
tmux split-window -h -t "$SESSION_NAME":3
tmux split-window -h -t "$SESSION_NAME":4

# 第三行:选中窗格3,纵向分割得到下方的窗格6,再横向分割出7、8
tmux select-pane -t "$SESSION_NAME":3
tmux split-window -v -t "$SESSION_NAME"
tmux split-window -h -t "$SESSION_NAME":6
tmux split-window -h -t "$SESSION_NAME":7

# 给每个窗格发送启动命令
for pane in {0..8}; do
    tmux send-keys -t "$SESSION_NAME":"$pane" "$PROGRAM_NAME" C-m
done

# 应用tiled布局确保窗格对齐
tmux select-layout -t "$SESSION_NAME" tiled

# 连接会话
tmux attach -t "$SESSION_NAME"

脚本说明

  • 先通过split-window -h(横向分割)创建第一行的三个窗格(0、1、2)
  • 回到第一个窗格,用split-window -v(纵向分割)创建第二行的起始窗格3,再横向分割出4、5
  • 回到窗格3,纵向分割出第三行起始窗格6,再横向分割出7、8
  • 最后循环给每个窗格发送启动命令,确保按创建顺序0-8对应到你想要的位置

备选方案:自定义布局参数

如果你已经创建了所有9个窗格,也可以通过指定自定义布局来强制排列。先完成所有窗格创建后,执行:

tmux select-layout -t peers 'even-horizontal,3x3,0,0{154x43,0,0,0,154x43,0,44,1,154x43,0,88,2}{154x43,0,132,3,154x43,0,176,4,154x43,0,220,5}{154x43,0,264,6,154x43,0,308,7,154x43,0,352,8}'

注意:这个布局参数是基于特定终端尺寸生成的,不同终端大小需要调整数值,所以手动控制分割顺序的方法更通用可靠。

内容的提问来源于stack exchange,提问作者TheBaum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 00:05:19