# 标签页级高精度窗口管理（LaunchBar 为例）

> 本文公开全文。

原文：https://utgd.net/article/20895

窗口管理最艰难之处在于标签页。相信任何一个从事严肃工作或者认真发展业余爱好的读者，都有这样的感受：沉浸心流之中，等回过神来，往往发现标签页早已堆积如山。

或许有人会说，我实在过分扩大了窗口的内涵和外延，属于自找烦恼，然而只要稍微观察一下窗口和标签页的历史——或者扪心自问一下最自然的交互习惯——不难发现，两者完全应该放在一起讨论。现代桌面操作系统大量借用了传统办公用品的隐喻，一个窗口通常对应一个文件夹（马尼拉文件夹），而标签页就像那些纸质文件夹中的独立页面，通常还带有一个抓手，方便写上档案名称或拉着抓手将某一页抽出——这种在纸质通讯录和部分字典中也很常见的设计，便是“标签页”（tab）的由来。

惜乎，或许要怪不同软件对于标签页的认识是在相差太远，或者实现机制大不相同，绝大多数的窗口管理工具都不敢过多讨论标签页管理，反倒是很多浏览器插件专心于优化标签页显示和切换，切中一小块活跃的市场，反而比较吃香（在一个人所接触到的标签页中，来自浏览器的可能占了十之八九）。

但是，多数严肃的工作不可能一天到晚只用一款软；而无论在线服务如何流行，本地软件依然不可替代——否则便宜好看的 Chrome Book 为何没动静了呢——虽然很难马上找到万能工具，但起码在最常用的软件中，应该统一标签页切换效果。在此前的文章《用LaunchBar填上Finder窗口管理的空白》中，我就尝试为 Finder 编写了一个标签页切换工具。

后来在断断续续撰写窗口管理新论一文时，我意识到上述方案潜力不小：只要是遵从基本的 macOS 软件开发规范、采用标准的窗口和标签页控件，就有希望使用本方案，为其制作标签页切换工具。

紧接着 Finder 后，我试着为预览工具（Preview）制作标签页切换器。仅次于浏览器和文件管理工具，预览工具在我的工作也是标签页失控的混乱来源，因为我经常阅读大量 PDF 文件，比如在办案时遇到一个相对深奥的法律条文，我通常要打开条文原文、配套司法解释、最高人民法院出的理解和适用、原文的立法资料、相关的学者评注乃至论文和专著，随随便便就是七八个标签页（或窗口），管理压力绝对不亚于浏览网页或整理文件。

考虑到预览工具和浏览器文件夹一样，同为原生软件，我着手修改之前的插件，果然只需要调整少数代码就可以获得预览工具版的标签页切换器。

示例动作下载

这套标签页展示和切换的原理倒也简单。所谓的标签页，可是视作文件和软件的特殊组合，当你用一个软件打开特定文件后，一般来说就会得到一个独立的标签页或窗口，反过来思考，在当前软件中切换标签页的通用思路就是：

- 找到当前软件打开的所有文件，列成清单以供选择——具体用什么自动化工具，端视各人品位；

- 选好目标文件后，再用当前软件打开一次。

当然，大多数软件不会那么笨，重新打开某一文件时通常不会刷新，不至于丢失此前的操作进度，相反，包括 Finder 和预览工具在内的多数原生软件，都只会直接跳到目标文件所在标签页。貌似难以解决的标签页切换问题，实际上就这么简单。

虽说我的代码专为 LaunchBar 编写，但核心部分是通用的，如果你使用其他自动化工具，只要支持其支持 Python，就有可能移植。惟需注意，每换一个软件都要制作一个新动作，不过你可以统一 LaunchBar 中同类动作的快捷键，至少日常用起来觉察不到背后的割裂。

话说回来，还有一种完全不需要任何第三方工具的标签页切换方法：快捷键之王，直接在菜单栏的搜索框中查找你想要的标签页，然后敲下回车，就能够跳过去。

不过菜单栏搜索框毕竟又远又狭窄，实在不如横在屏幕正中央的启动器类工具直观（无论是本文所用 LaunchBar 还是 Alfred），还夹杂了太多标签页之外的东西（例如最近打开过的文件）。若是不想折腾代码，也可以退而求其次，试试 Keyboard Maestro 版的快捷键之王——这次倒是不得不用第三方工具了——界面大方了许多，但同样无法根除无关项的干扰。

总之，丰俭由人，就原生软件来说，标签页管理难题其实已有各种方案，日后关于窗口管理的讨论，大可不必再躲着标签页。

---

[前往标准阅读页](https://utgd.net/article/20895?audience=web)
