本文档描述了 Tabby 的分屏标签页系统,该系统允许用户将一个标签页划分为多个窗格,每个窗格都包含自己的终端会话。分屏标签页系统使用户可以在单个标签页内同时查看和操作多个终端会话,从而提高生产力并优化屏幕空间利用率。有关整体标签页管理系统的信息,请参阅标签页管理与恢复。
分屏标签页系统主要通过SplitTabComponent实现,该组件充当多个子标签页的容器。它允许以垂直和水平分割的层级结构组织标签页,管理窗格之间的焦点,处理拖放操作以重新排列标签页,并提供标签页恢复的序列化功能。
来源: tabby-core/src/components/splitTab.component.ts161-780
SplitTabComponent是实现分屏标签页功能的主要类。它继承自BaseTabComponent,并充当其他标签页的容器。
主要特性
SplitContainer对象排列的标签页层级结构来源: tabby-core/src/components/splitTab.component.ts161-780 tabby-core/src/components/baseTab.component.ts22-239
SplitContainer类是分屏标签页系统的基本组成部分,用于管理标签页和嵌套容器的层级结构。
关键概念:
BaseTabComponent实例或嵌套的SplitContainer实例来源: tabby-core/src/components/splitTab.component.ts16-125
分屏标签页系统使用多种类型定义来管理分屏操作
这些类型决定了新窗格的创建和排列方式
来源: tabby-core/src/components/splitTab.component.ts9-11
当用户分屏一个标签页时
来源: tabby-core/src/components/splitTab.component.ts707-713 tabby-core/src/components/splitTab.component.ts447-528
分屏标签页系统使用基于百分比的布局系统来定位容器内的标签页。这使得可以灵活地调整大小,并确保所有标签页始终可见。
布局系统的关键方面
layout()方法递归计算并应用这些值来源: tabby-core/src/components/splitTab.component.ts781-1028
分屏标签页系统允许用户通过拖动窗格之间的边界来调整其大小。这通过SplitTabSpannerComponent实现。
此外,用户还可以使用键盘快捷键调整焦点窗格的大小
resizePane()方法根据方向和数量调整比例来源: tabby-core/src/components/splitTab.component.ts572-636 tabby-core/src/components/splitTabSpanner.component.ts1-98
分屏标签页系统管理不同窗格之间的焦点
主要焦点机制
focus(tab):将一个标签页设置为焦点标签页并相应地更新UInavigate(direction):沿指定方向(左、右、上、下)移动焦点navigateLinear(delta):在线性顺序中向前或向后移动焦点navigateSpecific(target):通过索引聚焦特定标签页focusAnyIn(container):聚焦容器中的第一个可用标签页来源: tabby-core/src/components/splitTab.component.ts412-706
分屏标签页系统提供了多种操作标签页的方法
| 方法 | 描述 |
|---|---|
addTab(tab, relative, side) | 在指定方向上相对于另一个标签页添加一个标签页 |
removeTab(tab) | 从容器中移除一个标签页 |
replaceTab(tab, newTab) | 用另一个标签页替换当前标签页 |
splitTab(tab, direction) | 创建一个标签页的副本并将其添加到指定方向 |
maximize(tab) | 最大化一个标签页以填充容器 |
equalize() | 使所有标签页大小相同 |
来源: tabby-core/src/components/splitTab.component.ts447-528 tabby-core/src/components/splitTab.component.ts529-551 tabby-core/src/components/splitTab.component.ts553-567 tabby-core/src/components/splitTab.component.ts707-713 tabby-core/src/components/splitTab.component.ts428-431
分屏标签页系统实现了拖放功能以重新排列标签页
SplitTabDropZoneComponent实例来源: tabby-core/src/components/splitTabDropZone.component.ts1-64 tabby-core/src/components/splitTabPaneLabel.component.ts1-80 tabby-core/src/components/splitTab.component.ts761-772
分屏标签页系统与 Tabby 的标签页恢复系统集成,以保存和恢复分屏布局
SplitContainer.serialize()方法将容器层级结构转换为恢复令牌recoverContainer()方法从恢复令牌重建容器层级结构SplitTabRecoveryProvider类处理分屏标签页的恢复这使得在应用程序重启时可以保存和恢复复杂的分屏布局。
来源: tabby-core/src/components/splitTab.component.ts109-124 tabby-core/src/components/splitTab.component.ts1030-1059 tabby-core/src/components/splitTab.component.ts1062-1075
分屏标签页系统响应各种键盘快捷键,以实现高效导航和操作
| 键盘快捷键 | 操作 | 方法 |
|---|---|---|
split-right | 向右分屏标签页 | splitTab(tab, 'r') |
split-bottom | 向下分屏标签页 | splitTab(tab, 'b') |
split-top | 向上分屏标签页 | splitTab(tab, 't') |
split-left | 向左分屏标签页 | splitTab(tab, 'l') |
pane-nav-left | 导航到左侧窗格 | navigate('l') |
pane-nav-right | 导航到右侧窗格 | navigate('r') |
pane-nav-up | 导航到上方窗格 | navigate('t') |
pane-nav-down | 导航到下方窗格 | navigate('b') |
pane-nav-previous | 导航到上一个窗格 | navigateLinear(-1) |
pane-nav-next | 导航到下一个窗格 | navigateLinear(1) |
pane-nav-1 到 pane-nav-9 | 通过索引导航到特定窗格 | navigateSpecific(index) |
pane-maximize | 切换当前窗格的最大化状态 | maximize(tab) |
close-pane | 关闭当前窗格 | tab.destroy() |
pane-increase-vertical等 | 调整窗格大小 | resizePane(direction) |
来源: tabby-core/src/components/splitTab.component.ts283-368
分屏标签页系统与 Tabby 应用程序中的其他几个组件进行交互
关键集成点
AppRootComponent将SplitTabComponent渲染为内容标签页BaseTabComponent既可以作为SplitTabComponent的父级,也可以作为其子级TabsService用于创建和复制标签页TabRecoveryService用于保存和恢复标签页状态HotkeysService提供键盘快捷键处理来源: tabby-core/src/components/appRoot.component.ts1-258 tabby-core/src/components/appRoot.component.pug102-108
SplitTabComponent 的生命周期包括几个关键阶段
来源: tabby-core/src/components/splitTab.component.ts258-397 tabby-core/src/components/splitTab.component.ts772-780
分屏标签页系统是 Tabby 中一项强大的功能,它允许用户在单个标签页中处理多个终端会话。它提供了一个灵活且直观的界面,用于安排、调整大小和在窗格之间导航。该系统基于组件的架构和分层容器结构能够实现复杂的布局,同时保持性能和可用性。
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(c3dfb3)