article_image

注意:在 Finder 中,一个已经打开的文件夹就是一个窗口,同时,一个窗口中可以有好几个标签页,分别展示各个文件夹。本文会视语境交替使用标签页、窗口和文件夹的称谓,不过它们在本文中基本是指同一个东西。

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

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

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

Alt text
在 LaunchBar 中浏览当前已经打开的 Finder 窗口

>>示例 LaunchBar 动作下载<<

动作安装与使用

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

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

Alt text
通过不断键入新字母,缩小列表范围

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

Alt text
导航、定位并显示已打开的 Finder 窗口

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

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

Alt text
借 LaunchBar 在不同工作区之间跳转

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

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

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

Alt text
LaunchBar 自带动作只能过滤文件夹名

原理简析

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

Alt text
关键设置:不能要求输入参数(arguments)

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

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

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

小结

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

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


  1. 尽管完全其设计完全违背了“不得伤害用户”的交互设计第一原则:当您离开一个 Safari 标签组时,其中的所有网页都会被关闭,再次进入时需要重新加载,原本的登录状态、浏览位置以及网页批注(如果您喜欢这么干的话)统统消失不见,重新来过。您在浏览器中所做的一切都会被标签组毁灭。
  2. 我非常尊重讨论本身,并且仔细研读,但竟然出现相关讨论、竟然要靠 Apple 推出新的交互方式,实在让人叹息文件管理领域的标签页或窗口管理现状。
  3. 天知道设计师是怎么想的,大概是 ⇧Shift-⌘Command-D 已被占用,故退而求其次,采用 Download 中第二个复印字母 L
  4. 至于原本的鸡肋功能请直接覆盖,用 LaunchBar 打开下载文件夹也很方便,实在不值得占用一个短小易按的键位。
  5. 区分 LaunchBar 当前是在搜索还是导航,也很简单:选中项为蓝色,就是搜索;为橙黄色,则是导航。
  6. 这个启动 Shortcuts 动作的 LaunchBar 动作写得很早,当时 LaunchBar 还不支持 Shortcuts。不过,LaunchBar 原生的 Shortcuts 动作经常崩溃,好像还是我这个稳定(截至 20230810,估计和我有写了几百个 Shortcuts 动作也有关系)。

author_avatar

Lawyer, macOS/iOS Automation Amateur