# 用LaunchBar填上Finder窗口管理的空白

> 本文公开全文。

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

标签页管理，原本是浏览器不可绕开的话题，事实上，Chrome 和 Firefox 自不待言，Vivaldi 和 Brave 迎头赶上，就连几乎成为新时代 IE 的 Safari 都渐渐引入标签组，以至于当我们再看到标签页管理工具时，第一反应是“ it's just another tabs manager”。

然而，涝的涝死，旱的旱死，在网页浏览器（web browser）已经厌烦了标签页管理的同时，文件浏览器（file browser）这边却几乎没有管理工具可用，而 Apple 推出的 Stage Manager，竟然还可以引发旷日持久的讨论。原因不难理解，为网页浏览器开发插件本身就比较容易，没有多少人为限制，还有可能很快变现；而给 Finder 写一个标签页管理工具？老兄，现在已经是二十一世纪啦，有没有人关心 Finder 都是问题咯！

我大概就是那极少数还在用 Finder，并且仍然记得其“文件浏览器”之古早称谓的人。本文从网页浏览器那边借鉴了一些标签页管理的方法，尤其是树状标签栏（Tabs Tree）和 LaunchBar 本身在浏览器标签页管理方面的积淀，并在 Finder 中实践。我的目标非常简单：像管理浏览器标签页那样，在 LaunchBar 中纵横于 Finder 标签页和窗口之间，而不凝滞于纷繁的原始窗口。

\>\>示例 LaunchBar 动作下载\<\<

## 动作安装与使用

下载（可能需要解压）本动作后，双击后即可安装至 LaunchBar 中，随后可通过缩写词（Abbreviation）Finder Tabs 定位到此动作——当然，LaunchBar 用户应当知晓，随着使用频率上升，缩写词可以越发简短。定位后，按一下空格键或右键头，即可列出当前所有已打开的 Finder 窗口和标签页。无论目前打开多少个虚拟桌面（Desktop），也不管每个窗口中的标签页有多少，最终所有打开的文件夹（标签页或窗口）都会显示在一处。

接着，可以通过 LaunchBar 最特色的方式进一步过滤、定位 Finder 标签页：按下任意字母、数字或标点符号键，即可过滤出相应的标签页，例如下图所示，在同时列出“Timeline”和“Premium”下各个子文件夹后，继续按 PRE，即可把路径带有 Pre 的项目滤出，即聚焦到“Premium”文件夹，忽略掉其他无关项。此处列出的所有文件夹均可继续操作，例如复制、重命名或删除，也可以按一下 ⇥Tab 发送给其他 LaunchBar 动作，与处理寻常的文件夹无异。

打开的文件夹越多，窗口摆放得越是杂乱，本文 LaunchBar 动作就越是能够快刀斩乱麻，从一系列窗口中精确命中目标。有时候，手头的事情堆积起来，一不小心就开了连串的 Finder标签页——浏览器也有类似情况，标签页管理应运而生——此时比起用肉眼挑选（可能还要在好几个桌面间来回检视），我更愿意直接呼出 LaunchBar，直接键入目标文件夹路径中有代表性的字符，再果断按下回车，就能将其挑出。

使用 LaunchBar 的另一好处是，启动器随时可以呼出，而文件夹则和工作区（Workspace）绑定，故借此可在各工作区间切换。如果你有很强的工作区概念，习惯围绕文件组织任务，往往会形成好几个桌面，每个上面打开一个核心文件夹，而这个——或这几个——文件夹，完全可以作为工作区的路标，只要显示某个文件夹，就意味着跳到了对应的工作区。

方法非常简单。以写杂文为例，我的习惯是同时写七八篇文章（这是真的），有的工作区可能就一个文件夹加一个编辑器页面，而有文章比较复杂，或许则同时开着文本编辑器、草图工具和大纲，如果靠肉眼区分，简直就是找茬游戏了——相信经历过繁重工作的读者，也有这种窗口堆积如山、喘不过气来的时候。而如果一开始就以（项目相关的）文件为中心，则每个打开的文件夹就对应了各个工作区，只要通过 LaunchBar 定位一个文件夹，拔出萝卜带出泥，就能马上定位到相应工作区，严阵以待的各个工具也就迎上前来。

话说回来，以上操作，似乎 macOS 近年引入的 Stage Manager 也能胜任，可惜一旦论及自动化、全键盘操作、用户自定义等等进阶内容，这种出自加利福尼亚白人中心主义设计师的玩意儿，就会暴露出其玩具本质了。至于为何不用更经典的 App Exposé，盖此功能非常依赖图形界面，窗口一旦较多，还是需要肉眼盯着看，不及 LaunchBar 这般不假思索。

此外，关于启动方式。在 Finder 中，快捷键 ⇧Shift\-⌘Command\-L 用于打开下载文件夹，管见以为这实在是暴殄天物，而且也没有保持快捷键设计的逻辑一致性。须知在 Safari 中，⇧Shift\-⌘Command\-L 用于打开侧边栏，可进一步展示纵向排布的标签页，更具效率。为此，可参考《快马加鞭，用快捷键加速 LaunchBar 的常用功能》一文，将启动 Finder Tabs 动作的快捷键设置为 ⇧Shift\-⌘Command\-L，且仅在 Finder 中生效，以免影响其他软件，同时与 Safari 的逻辑保持连贯——话说回来，如果你本来就喜欢用 LaunchBar 的 Safari Tabs 动作，不妨在 Safari 中也将其设成 ⇧Shift\-⌘Command\-L，彻底用 LaunchBar 替换 macOS 的原生浏览方式。

最后，关于为何不使用 LaunchBar 自带的 Finder 项目。LaunchBar 倒是可以直接列出 Finder 最近打开过的文件夹，其中自然也包含了当前打开的标签页——然而，Finder 项下列出的文件夹均只有一个文件名，路径则作为副标题，是故只能在文件名中过滤，而无法将整个路径作为过滤依据。假设我打开了 UNTAG Timeline 文件夹下的三个草稿文件夹 A、B 和 C，那么通过键入 Timeline，原生方式只能识别出 UNTAG Timeline 这个上位文件夹，下面的子文件夹则跳过了。这就极大限缩了过滤功能，尤其在使用者习惯用中文命名文件夹时，可能直接导致导航和过滤功能作废。

## 原理简析

与我以往制作的绝大多数 LaunchBar 动作不同，本文的动作并无输入的概念，没有任何输入框，完全依靠字母、数字和符号键等导航（Navigation）。如果你打开 LaunchBar Action Editor，可以看到本文动作根本不要求输入任何参数。

而导航模式，正合我意。前已述及，本文动作参考了浏览器标签页管理的形式，事实上，我是直接受到 LaunchBar 自带的 Safari 标签页显示方式启发。LaunchBar 博客上早年曾介绍过一个列出 Safari 当前标签页的脚本，后来已经被吸收到 LaunchBar 中，名为“Safari Tabs”。其使用方式也是按键导航，无需搜索。也有人为 Chrome 编写了类似的插件。

当然，本动作完全可以做成搜索版，但管见以为，此系画蛇添足。盖无论列出当前浏览器标签页还是 Finder 窗口，其总数仍然有限，恐怕远远不到需要搜索的地步，此时直接按几下键盘，可以更快地导航到目标。至于我以往编写的许多动作——例如 Rime 词典管理、标签（Tag）管理或启动 Shortcuts 动作——则是在几千上万条数据中检索，并且很可能要用到多种语言，自然离不开搜索框。一言以蔽之，决定是要搜索还是要导航，端视对象数量，少则导航更快，多则搜索更佳；也有一些坚持只用中文命名文件的人士，那可能也只能选择搜索，盖导航的前提是利用字母等键盘自带的按键，而中文则与此无缘。

至于从何处获取数据，纯粹是代码层面的苦功夫了，大致思路是用 AppleScript 获取 Finder 标签页信息，再用 Python 传递给 LaunchBar，具体内容本文不再深入。

## 小结

从 Finder 标签页管理的立场说，本文将 Safari 的范式迁移过来，填补了 Finder 缺少相关插件的遗憾，以便汇集当前标签页，并快速过滤、导航或打开文件夹。

从启动器的角度看，LaunchBar 与 Alfred 等启动器不同，它本质上是 macOS 的索引、字典或者——干脆说，导航手册，而 Finder 当前标签页，完全应当列入其中。事实上，除去 Finder 标签页，Safari 标签页、历史记录、书签栏也适合通过导航方式浏览，而各个软件最近打开过的文件，道理相同，且 LaunchBar 均已将它们纳入索引。本文的工作，便是补上了这一空白。

---

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