article_image

编注:我在工作中常想,尽管已用软件A打开了某文件,如能快速用软件B再开启一次就好了。听上去有些任性,实则非常自然,例言之,起先用 FSNotes 打的简单草稿,常常中途发现要插入较长的大纲乃至表格,此际可能就要临时换上 Taskpaper 或 TableFlip,进一步编辑。无论在右键上下文菜单中翻找用其他软件打开的选项——这还要靠开发者自觉,多数软件甚至不作此想——还是直接翻出原始文件再用目标软件打开,均不方便。偶然发现 Apus 已搭建了基于 LaunchBar 和 Keyboard Maestro 的完善方案,遂邀他撰写此文。

Mac用户的常态,就是屏幕上堆满了重重叠叠的窗口。

@Minja在UNTAG Premium 第二十五期吐槽了这一点,并提出了一种不打开文件夹的文件浏览思路。方式转变后,用LaunchBar重命名、新建文件夹等都不在话下,“非必要不开Finder”成为现实。

但相比成熟的Finder,LaunchBar总有未及之处,获取当前窗口文件并展示在Bar中就是一例。若实现这一步,进可通过Instant Send实现便捷地“用另一应用打开”,退可通过LaunchBar的导航逻辑快速打开其同一文件夹(甚至是相邻文件夹)下的关联文件,还可以与重命名、移动文件位置等衔接,创造的可能性不可谓不大。

Alt text
用其他应用打开
Alt text
文件夹导航
Alt text
用LaunchBar重命名

思路和方法

发现需求后,技术上的实现反而没有什么难度:@Minja的“Ctrl Go”动作早就提供了用一个通用按键实现“在Finder中显示”的思路,Keyboard Maestro 11更新后新增的 %FrontDocumentPath% Token更是使得获取当前窗口文件路径不必再逐个App调整。整个动作的核心,仅两步而已:

Alt text
核心动作

第一步是用Token获取当前窗口文件路径,第二步是用LaunchBar打开。就这么简单。

长尾问题

本来事情到这里就结束了。但偏偏有些软件的当前窗口文件路径无法读取。Keyboard Maestro官方对%FrontDocumentPath% Token的介绍是:“若应用支持此属性(if the Application supports this property )”则可用,但未明确支持与否的简单判断方法或列举出不支持的应用。我自己试用下来,微软办公三件套都可以支持,暂时只遇到PDF Expert、FSNotes、Obsidian的窗口文件无法读取。

好在PDF Expert、FSNotes的菜单栏都有“在访达中显示”的选项,Obsidian也可以通过在应用内设置快捷键来实现“在访达中显示”,算是留了一条GUI操作的小径。我据此补全了这些“长尾”,步骤稍显冗长,但思路很简单,无非是经由访达获取文件路径,无需赘述。有需要的读者可以下载以下动作。

下载链接(GitHub)

如遇新的不支持 %FrontDocumentPath% Token的应用,在Switch模块中新增对应应用的专属Finder方案即可,可以是模拟菜单栏选择或者快捷键。

Alt text
在Switch模块中新增方案

小结

LaunchBar的Instant Send、不生成主应用窗口等特性提供了很好的交互方式,在大多数时候可以比Finder更好地承担枢纽的职能。相比于我原先所使用的“在Finder中显示后用Keyboard Maestro选择App打开”,新方案无论在便捷性还是通用性上都更上了一个台阶。

可见,踏上前往远方的火车之前,不妨先看看周围有没有传送门。