Repository navigation
v1.8.33
v1.8.33 — 新增分屏(split panes,tmux 风格)
在同一个标签页内把终端切成多个同时可见、同时运行的窗格。
✨ 新功能
- 切分:
Ctrl+B -左右切分,Ctrl+B _(Shift+-)上下切分;新窗格继承同一 shell。 - 切换焦点:
Ctrl+B Tab/Shift+Tab循环切换窗格;Ctrl+B ↑/↓/←/→切到对应方向的相邻窗格(按「重叠优先 + 最近边界」选格,与 tmux 一致);- 鼠标点击任意窗格即切换焦点。
- 调整大小:
Ctrl+B Shift+方向微调分隔线,或鼠标拖拽窗格间的分隔线。 - 关闭 / 缩放:
Ctrl+B q关闭当前窗格(树自动收缩、兄弟接管焦点);Ctrl+B z当前窗格全屏缩放 / 还原。Ctrl+B x仍是关闭整个标签页。 - 窗格间 1 行/列分隔边框,活动窗格边框高亮(蓝)。
🔧 实现
- 新增
src/split.c分屏树(叶子 = pane,内部节点 = 分隔方向 + 百分比);split_layout()为纯函数(树 + 外接矩形 → 每 pane 矩形),不依赖 Win32,可在 Linux 单测。 - 渲染按矩形裁剪各 pane;每个 pane 的屏幕缓冲与 ConPTY 经
ResizePseudoConsole跟随窗格尺寸。 - 分屏子窗格标记
is_split_child,不单独占标签页;单窗格(未分屏)完全走原整屏路径,行为不变。
✅ 验证
- 新增
verify_split.py:编译真实split.c,断言切分/纯布局/边框留白/方向导航的重叠选择/Tab 循环/关闭后树收缩/拖线 frac 等。 - 单元测试 302 / 0 failed;
verify_all.py33 项全过;MinGW gcc / g++ 双-Werror。
📦 资产
termux.exe(240128 字节),64 位 MinGW 单文件构建。termux.exe.sha256:SHA-256 校验。