群雄林立的 macOS 自动化生态
macOS 上的第三方自动化工具,要想入我们这些 高级用户 的眼,都逃不开脚本支持(scriptable)。而名符其实的高级工具,又颇具默契地具备了两个特点:
- 脚本通用:多数自定义脚本稍作修改就能移植到其他工具上。
- 操作各异:每个工具有自己擅长的操作方式,比如 Keyboard Maestro 的快捷键、LaunchBar 的全局快速启动或 BetterTouchTool 的触控板。
这就允许我们:选择喜欢的操作方式,实现需要的功能。同样是想清理电脑里的 DS
缓存文件,喜欢快捷键的读者可以用 Keyboard Maestro,喜欢全局跳转的用户会呼出 LaunchBar——而不常清理缓存的人,可能就把这个功能塞进了使用率相对较低的右键菜单。
总之,玩到脚本这个等级,常见的功能我们都能造出来(或者找现成的轮子)。再来挑工具,主要就看各自独特的功能和操作方式。
通用型自动化工具:Keyboard Maestr
从编辑界面到操作方式,Keyboard Maestro 都像是 Automator 的增强版,我们先来看看 Keyboard Maestro 的应用场景。
Keyboard Maestro 里面有大量自带功能,可以像 Automator 一样拖拽组合成工作流,当然也支持通过脚本来扩展。由于操作方式丰富、编辑动作的流程也和 Automator 相似,Keyboard Maestro 很适合作为进阶到第三方自动化工具的第一站。
操作方式上,Keyboard Maestro 比 Automator 更丰富,几乎可以用任何你喜欢的方式启动:
- 快捷键
- 菜单栏
- 悬浮窗
- 光标手势
- 输入文本
- ……
我把 Keyboard Maestro 成为「通用型自动化工具」,就是看着它齐全的操作。我曾用 Keyboard Maestro「模拟」TextExpander,实现键入关键词即展开大段文本的功能。
通用归通用,Keyboard Maestro 也有一系列特色的、难以被取代的 Trigger(触发条件),可以在后台默默检测电脑、应用和用户的操作,不需要你去按下「扳机」,就可以自动触发预设的动作。这些 Trigger 包括:
- 开盖合盖
- 应用启动/关闭
- 窗口激活/静默
- ……
我为 IINA 播放器做过一个动作,可以在离开 IINA 播放界面自动开启画中画、回到播放界面后自动退出画中画。
这个动作利用的就是 windows Trigger(窗口触发条件),Keyboard Maestro 会捕捉光标的位置,通过它所在的窗口来激活对应的动作。
另一方面,也正是因为 Keyboard Maestro 的全能,不少人把 Keyboard Maestro 作为唯一的自动化工具,并且研究出代替 TextExpander、Alfred 的方案。
但是全能不代表最合适,比如 Keyboard Maestro 的输入框就很逼仄,不如 LaunchBar、Alfred 那么大方。
毕竟术业有专攻,遇到 Keyboard Maestro 不能胜任的场合,还是需要果断转换工具。
全局启动器:LaunchBar 和 Alfred
macOS 上另一类自动化工具:启动器。启动器简单来说就是一个大气的输入框,你可以输入或键入一堆文本,然后启动对应的任何东西:
- 启动一个应用
- 启动一个文件
- 启动应用内部的一个功能
- 启动一个自定义的功能,比如一段 AppleScript 脚本
看过相关资料的话,是不是觉得这种「启动」的操作和在终端里输命令特别像?没错,启动器的鼻祖 LaunchBar 最早就是个简陋的终端窗口,后面才慢慢演化成今天大家闺秀般的模样。你至今还可以在 LaunchBar 的主题中找到元祖级的输入框。
输命令这种操作方式,把我们从成堆的快捷键里解放出来。快捷键虽快,但一来键盘上拢共就这么几颗按键,到后来总不够分配;二来快捷键多了,你自己都记不住对应的功能是什么。
而命令千变万化同时可以完全自定义,加上 LaunchBar 的模糊搜索特性,基本上打几个关键字母,一条完整的命令就被选中了
如果说快捷键是快准狠的「剑宗」,启动器就是只可意会的「气宗」,两个流派招式不同但殊途同归,皆为效率而生。
macOS 上的启动器不少。和 LaunchBar 各占启动器半壁江山的是 Alfred,后者原生支持 PHP(被广泛用于网站开发),所以在在线搜索方面具有更大的优势,**更容易实时呈现搜索结果。**
另外,Alfred 采用了图形化的编辑界面(工作流的形式),并且基础功能(不涉及自定义动作)免费,更适合新手拿来入门。
**总的来说,第三方启动器最厉害的就是自定义自动化动作。**
LaunchBar 支持脚本、Alfred 有工作流,它们和 Automator 的 Application/Services 一样能够处理输入的变量,其他系列文章中介绍过的脚本,统统可以嵌入 LaunchBar/Alfred。
文件自动化整理工具:Hazel
在 Automator 问世的次年,一个专司文件自动化整理的工具也出世了,它就是 Hazel。
我们可以把 Hazel 当作文件夹动作的加强版,它继承了 Automator 简单易懂的图形化编辑界面,同时又具有更高的稳定性、更丰富的功能。
Hazel 的工作原理很容易理解:
设置好文件夹、条件和动作,一条 Hazel 规则就成型了。编辑过程中你可以完全不写代码,只用预设模块就满足日常需求;但如果愿意折腾一下,就能实现更多进阶功能:
- 自动将乱码的文件名转换为正常的中文
- 连接上 Kindle 之后自动清理无用的 SDR 书籍缓存
- 下载文件后自动校对 MD5 值,防止下载来路不明的文件
尽管功能强大,但 Hazel 很低调,平时安安静静地呆在后台(只在菜单栏占用了一个小图标的位置),只在监测到预设情形时才会出来工作。
触摸板增强工具:BetterTouchTool
和 Keyboard Maestro、LaunchBar 等专供键盘操作的工具不同,BetterTouchTool 另辟蹊径,在触摸板手势上做起了文章。一些经典的手势如:
- 四指轻拍,关闭当前页面
- 三指轻点,删除选中的文件
- 双指重按,在新标签页打开网页
- 轻点触控版顶端,回到网页最上面
- ……
说到具体的功能,BetterTouchTool 可能没有 Keyboard Maestro 的预设动作那么全、也不比 LaunchBar 对于脚本支持那么到位,但是我们可以通过 BetterTouchTool 来触发别的自动化操作:
- 直接触发 Workflow
- 通过快捷键、菜单栏选项或 AppleScript 触发 Keyboard Maestro
启动 Keyboard Maestro 的 AppleScript 代码如下,把 Macro 名字
换成你的 Marco 名字就能使用:
tell application "Keyboard Maestro Engine"
do script "Macro 名字"
end tell
所以,我们完全可以把 BetterTouchTool 作为一个万能辅助工具,连接上 Keyboard Maestro 等功能更强大的自动化主力工具,把触控板变成自动化动作的控制中心。
文本处理自动化工具
上面提到的自动化工具基本都是全能型选手,不过 macOS 上还有一类工具不能忽视,它们就是文字处理自动化工具。不要以为这类工具只有「文字工作者」用得上,作为一个现代人,只要你还需要打字,就会遇到各种机械繁复的工作:
- 反复输入常用邮箱、电话号码
- 不断在 PDF 参考文档和笔记应用来回复制粘贴
- 手动修正标点错误、在中英文之间插入空格、去除多余的空行和空格
- ……
这些问题,就是文本处理自动化工具要解决的。
缩写工具:TextExpander
系统设置中的「文本替换」,就是一种最简单的缩写功能:输入 mmail
,即展开成完整的邮箱地址 [email protected]
。
而搭上自动化快车的缩写工具——以支持脚本拓展的 TextExpander 为首——还可以做到更多:
- 快速输入当日日期
- 快速将文本转大写/小写
- 在中英文之间自动插入空格
- 一键把弯角引号替换成直角引号
- 把图片链接换成 HTML 格式插入文章
- ……
邮箱、电话、邮件模版、客套留言、常用的文本格式转换,都理应存为一个模版,要用的时候打几个首字母就快速调用出来。
TextExpander 有句口号,特别能代表这类工具的价值,听着还让人舒服:
不要把你的时间浪费在重复已经完美的表达上。
剪贴板管理工具:Copied、Pastebot
无论在 macOS 还是 iOS 上,剪贴板都是一条系统级的数据传输通道,图文都能通过剪贴板进行共享。自动化工具们自然也不会放过这条高速公路。
在记录剪贴板历史、分组管理的基础上,一批工具慢慢发展出自动化的用法。其中 Copied 最具代表性:
- Rules:剪贴板历史记录自动分组
- Text Formatters:剪贴板文本格式转换
- Merge Scripts:组合多条剪贴板历史记录
- ……
Merge Scripts 卓尔不群。多数人每天都在用它批量处理文章标题、链接的格式。即使面对着剪贴板里上百条的文章信息,Merge Scripts 也能调好格式、拼接文本然后一次性粘贴到表格里。此功能堪称剪贴板自动化的巅峰。
Copied 的开发者非常低调,不说的话,你估计都不知道 TA 是中国人。雁过留声,Copied 留下的是工具本身的口碑,这是很多优秀工具的共同点。
剪贴板工具里,能和 Copied 同台竞技的只有 Pastebot。后者的资历更老,而且出自著名第三方 Twitter 客户端 Tweetbot 的开发团队之手,在功能上基本不输 Copied(可惜不能一次性处理多条剪贴板历史记录,也没有 iOS 客户端),并且不自带的功能也可以通过写脚本来实现。
另外,Keyboard Maestro、Alfred、LaunchBar 也有简单的剪贴板管理功能,并且支持自己编写扩展脚本。已经在用这些启动器的读者,可以先试试它们的剪贴板功能,如果确实有需求,再学习专门的管理工具也不迟。
文本格式清理工具:Text Soap
除了缩写和剪贴板管理,日常打字时还有一类特别令人头痛的场景:文本格式清理。在引用参考资料、复制现成文档时,我们总是遇到一些不合规乃至错误的格式,从而不得不做一系列文本格式清理的工作:
- 把英文逗号改回中文逗号;
- 去除重复的空格、多余的空行
- 把普通段落变成 Markdown 的引用格式
- ……
**平时越是不常处理文本的人,需要调整格式时就越吃亏。**
想象一个辛辛苦苦做了两个月实验的理工科学生,在 DDL 前却还要加班几个钟头甚至通宵,只为了给 Word 和 PPT 调整格式。这种事情本当交给文字格式清理工具来做,比如用 Text Soap 来完成枯燥的文本替换。
对了,用 TextExpander 能实现比 Text Soap 更强大的功能(因为前者的脚本更加丰富),但是 Text Soap 拥有图形编辑界面,普适性更强。
小结
除了文章中介绍的工具,macOS 上还有大量具备优秀自动化能力的工具,比如 Omni 系列、任务管理工具 TaskPaper 乃至原生的 iWork 办公套件,不过它们的专门性过高,这里先不深入。
总之,在脚本语言、图形化编程等一系列通用标准的推动下,macOS 上的自动化工具一片繁荣,不管你想找一个通用工具来提高使用快捷键的效率,还是想找一个应用在后台默默帮你整理文件,又或者希望借助文本处理增强工具摆脱繁复的输入,都能找到合适的选择。
让所有重复无聊的工作都见鬼去吧。