article_image

20231025更新:在 Keyboard Maestro 11 中,可通过 %FrontDocumentPath% Token 获取多数软件当前窗口的关联文档路径,以大大简化本动作步骤。不过, %FrontDocumentPath% 在 Safari 等程序中无法使用,故原方案仍有一定价值。

macOS 的操作逻辑主要基于应用程序,而不是文件本身。想要打开一个文件?Apple 希望你做的第一件事情就是去 App Store 里下载一个软件——这不是 Tim Cook 的独创“刀法”,而是 Jobs 时代的思想遗产:正如 Jobs 所吹嘘的,以后只有专业用户才会需要文件管理工具。

但我们毕竟不可能不和原始文件打交道。日常的文件管理,当然是以文件夹为单位,以工作内容为中心;需要相关资料时,最直观的反应就是去所处文件夹中翻找。如此一来,macOS 的交互方式就和文件夹逻辑产生了龃龉:macOS 从来没有显示原始文件的统一方式,假使我写完了一个 Markdown 文档,试图将文件归档,通常需要一层一层点开文件夹才能看到原始文件。

本文将介绍一套显示原始文件的通用方案,适用于 macOS 上的多数软件,迨沉浸于工作之时,不必再被层层文件夹阻碍思路,只消波动几颗按键,就能访问原始文件之所在。

Keyboard Maestro 动作下载(GitHub)

Alt text
显示预览程序正在看的 PDF 文件

使用方式

注:由于部分版本的 Keyboard Maestro 不能正常运行内嵌脚本,故最好下载文章开头的单独脚本文件,并将其路径填入下图所示的“Execute AppleScript”步骤中。原因可参见 这个 讨论。
Alt text
填写脚本路径

使用本文动作非常简单,你只需要记住一个快捷键——默认是 ‌⌃Control-G,G 为“Go”之意——而不涉及其他任何操作;Keyboard Maestro 会根据目前所运行的软件,选取合适的方式显示原始文件。

例如,在用 Obsidian 做笔记时,或用 iA Writer 写文章时,我时不时想插入几张配图,此时就可以按下 ‌⌃Control-G,前往文稿所在的素材文件夹,把打算使用的图片置于手旁。

Alt text
显示 iA Writer 原始文件

又如,用 DEVONthink 阅读参考资料时,第一本很可能没有我要的信息,但同样可以打开原始材料所在的文件夹,看看相关文档中有没有可能记载有用信息(前提当然是文件整理有方,或起码不是胡乱摆放),就像走到书架边上,用手指指着一排书的书籍,目光一个一个移过去。我在做法律业务时,单位有个不成文的规定,就是至少要扫一眼相关文件,以免得鱼忘筌,不见舆薪,谓之浏览式的查询——苟若手动翻文件夹,当然很烦,这也促使我把显示原始文件的操作固定为自动化工作流。

Alt text
显示 DEVONthink 原始文件

本文提供的示例动作支持 Obsidian、DEVONthink、iA Writer、nvALT 以及多数系统原生软件,由于我使用的是英文界面,故本文动作也只能保证在英文环境下直接使用。如果你一上来就运行失败,最大的可能当然是我根本没有添加你正在用的软件;次之,则是语言不匹配—无论是何种情况,都请先根据下一节的内容尝试自定义动作。

原理以及自定义

就显示原始文件一事,多数软件的态度可以分为三类:第一类,举双手支持,主动提供显示原始文件的功能;第二类,无动于衷,但软件本身支持 AppleScript,不妨碍我自行编写脚本;第三类,完全采用封闭的数据库,比如原生备忘录或 Drafts,最后这一类恕鄙人无能为力。

其实第一类软件的存在,就说明不少第三方软件已经意识到了原始文件的查看问题,例如 DEVONthink 和 Obsidian 这样的靠谱角色也都愿意提供查看功能。只可惜各家的称呼截然不同,“Show in Finder”“Show in System Explore”或“Reveal”均有之;而 Keyboard Maestro 的首要任务,就是以简驭繁,用一个快捷键搞定所有支持显示原始文件的软件。

Alt text
第一类软件的解决方案

一个软件如果支持显示原始文件,通常都会将这一功能添加到菜单栏中;比较用心的,还会附上一个快捷键。当然,问题就在于菜单栏和快捷键的设计并无国际标准,大家各行其是,最后搞得要记一大堆快捷键。Keyboard Maestro 用统一快捷键统率各个软件的零碎操作,按下快捷键后,先判断当前软件是什么,再模拟快捷键或点击菜单栏,调用软件原生的文件显示功能。以 DEVONthink 为例,它显示原始文件的选项位于“Data - Show in Finder”中,那么移步 Keyboard Maestro 后,“Select or show menu items”中需要填写的也就是前述选项路径。

Alt text
填写 DEVONthink 的菜单栏选项

你可以在 if 判断的条件下继续添加其他软件,并配置好需要点击的菜单栏选项,即可将其他支持显示原始文件的软件也纳入同一个快捷键的管辖之下——但不建议太多,而且示例动作中对你无用的条件建议删除。Keyboard Maestro 论坛上 有人 提及,条件如果过于复杂,可能有碍速度。至于模拟快捷键,属于和点击菜单栏殊途同归的方式,无需着墨。

第二类软件比较麻烦,但只要解决过一次,就不需要为每个软件单独设置——能用 AppleScript 读取当前文件路径的软件,一般都可以更进一步,显示原始文件。只可惜 AppleScript 许久没有更新,诸如 Keyboard Maestro 和 LaunchBar 等自动化工具都开始出现瑕疵,这次是不能直接运行部分内嵌脚本,而需要单独的脚本文件,给诸位添了麻烦。

Alt text
第二类软件的解决方案

至于那些既没有直接给出原始文件访问途径,也不支持 AppleScript 的软件——有些根本就没有文件系统!——着实超出我的能力范围。这些软件往往采用封闭数据库,不提供可以用其他工具打开的文件,难以硬拗。

小结

本文用 Keyboard Maestro 填补了文件使用中的一小环,即快速访问原始文件。往小了讲,这也是三步并作两步,省下些许时间;往大了说,这是在打断软件对于个人数据的垄断,让工作从以软件为中心的范式,回到以文件、以数据为中心的范式。

Jobs 或许代表了未来,他留下的 iOS 至今没有传统文件管理系统,用户终日围着 App 打转,难觅文件的踪迹。可管见以为,这个未来,恐怕恰恰是他本人在一九八四年——无论为了营销还是真心实意——所要对抗的 1984。

🛍 我撰写的付费栏目《信息管理,文件为本位的方案》正在 UNTAG 售卖,对本文话题有进一步讨论,欢迎选购。

🔗 付费栏目链接


author_avatar

Lawyer, macOS/iOS Automation Amateur