# 日常工具包：关于通用生产环境的讨论

> 本文公开全文。

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

我们偶尔有这样的经历：长时间胶着于一个技术难题上，突然有人说，你按一下某某快捷键，或者把那堆乱糟糟的数据丢到文本编辑器里……忽然，所有问题迎刃而解。这就像你买了瓶瓶罐罐试图洗掉浴室台面上的污渍却无功而返，突然间有网友提议用牙膏抹在上面试试，随后一切势如破竹。每逢此际，我总会感叹：人们总是忘了自己所处的日常环境，忽视了许多唾手可得的工具与方法。

同时，我们又常常质疑别人所处的环境，结果陷入了消费主义和过激的反消费主义应激之中：一个人推荐了一款A软件，马上有另一个人跳出来说，为什么不尝试一下B软件呢？难道C软件不香吗？D软件不了解一下？此时，通常又会有第三个人跳出来，痛批前面的人中了消费主义的陷阱，只知道买买买。最后，争论变成政治意见的垃圾场，大家只是丢出不健康的情绪，却得不出任何有益的结论。任何一种立场，任何一个标签，如果推行到极致，结果就是什么事情都做不了。若不停购买工具，最后就容易陷入娱乐主义，娱乐至上，把玩弄工具当成了目的；而什么都不买实际上根本不可能，因为一个人只要在网上发表了这个言论，就意味着他买了一台电脑或手机——起码也是租的——那他就没有资格反对消费（尽管可以反对消费主义）。

以上种种弊端，根源在于讨论参与者只是闷头相斗，没有抬起头来尝试观察日常环境。此处的“日常”难有严格标准，盖各人各异，就像北方人所谓的家常菜，在南方人看来或许就丰盛如年夜饭（至少就食材用量而言）。但如果继续深挖，则不难发现，所谓的日常环境，其实是由一系列物质材料组成的，而不是一堆小工具的简单拼凑。如果我们放弃把电脑看作软件缝合怪，转而把它当作一个堆满了原材料的游乐场，那么你就可以针对材料选择工具。在这种基于材料的视角下，各方不必剑拔弩张，不用诘屈聱牙，因为只要大家在处理的同一个问题、面对同一类材料，双方就有继续沟通的基础。

我们不妨试着从材料视角出发，看看我们平时在处理什么东西，然后再反过来确定用什么工具。我惊讶于事情之简单：大多数工作其实不用花钱，真的可以放心交给日常工具——通常是原生软件和常见的开源软件——而相当一部分稍微棘手一些的材料，一般也只需要购买少数工具或服务。

久之，我尝试用日常工具包来描述一个理想中的通用生产环境，以期消除中文圈——或许也包括欧美互联网——讨论中的隔阂，建立新的交流基础；即便做不到这一切，在最差的情况下，想必读完本文后，读者多多少少也能掌握一些零散但实用的技巧。

## 处理文本的工具

正如一个家里肯定能翻出剪刀或刻刀等最基础的工具，电脑上也必定安装了文本处理工具，无论是 Windows 上的写字版还是 macOS 上的文本编辑器，通常足以处理大部分的纯文本和富文本。

——文本编辑器有什么好谈的？看上去如此简陋，像是上个世纪的古董，没有时髦笔记软件中的按钮，更没有在线服务的同步和分享功能，何必费口舌？有这种想法的人，大概率根本就不知道怎么用文本编辑器。不妨做个测试：假设有几行文本，现需在每一行前面加上项目符号，让文本看上去整洁一点，你会怎么做？在文本编辑器中，有个又快又准且不用写代码的方法：按住 ⌥Option 键，进入列编辑模式，在各行开头竖着拉一下，就能同时在各行开头输入符号。

拓展阅读：工具论ABC：普通用户也用得上的列编辑

再做一个测试：假设你从某个不太讲究的微信公众号上复制了一篇文章，发现里面全是手打的换行符号，现在需要将其批量清楚，如何最简单？答案依旧是文本编辑器：启用查找和替换，插入一个换行符号，接着将其消除掉或者缩减到只留一个。

以上都只是文本编辑器的初级用法，如果你懂一点正则表达式或者愿意稍微了解一下轻量级代码编辑器——如果你害怕写代码，大不了把代码高亮功能关掉，那么这些代码编辑器看上去就和系统自带的文本编辑器差不多——你几乎可以对文本做任何事，无论是一键修整全文格式、修改网页的原始代码、超越系统限制打造自定义多文件夹搜索甚至批量改动 Shortcuts 动作中的细节，只要你想处理的东西是一段文本或者可以转化成文本格式，那么文本编辑器就是解牛的利刃。

拓展阅读：

- 为什么，以及如何制作 Markdown 版民法典

- 如何修正对照翻译中的排版瑕疵：修复数学公式

- Hum：同时在 Finder 里搜索几个指定文件夹里的文件

- 如何在 Finder 中同时搜索多个文件夹（附自动化）

相反，如果没有意识到眼前之物实则是文本，而是把它们看作代码、智能文件夹、Shortcuts 动作或连打开方式都搞不清的配置文件，那么这些纸老虎确实会膨胀成拦路虎。

持材料和功能两种视角的人，就像一个熟练使用少数几把菜刀的厨师，和一个被淹没在花式切菜新奇特小工具堆里的新手，两者差距，不可谓不大。

## 现代的浏览器

文本编辑器自然见于每台电脑——但不包括 iPad，所以我不用 iPad——还有另一个工具，相信没有哪台电脑敢不预装的：浏览器。且让我们抛开各种意识形态不谈，以免被浏览器圣战的战火波及，至少可以就浏览器之常见达成共识：macOS 上的 Safari 和 Windows 自带的 Edge 都不算太糟糕，如果你实在受不了，大不了装一个免费的 Chrome 或 Firefox，总之，鉴于现代的主流浏览器如此易得，我们大可将现代浏览器也视作生产环境的一部分。

紧随其后，便轮到材料视角的转换：谁说浏览器只能浏览网页？几乎所有浏览器也可以查看各类本地文件，并且常常带来惊喜。较早版本的 Edge 就可以阅览 EPUB 电子书，很多人在电脑上没有装专门的阅读器，结果发现自带的浏览器可以看书，还挺流畅（但是更换内核后似乎不行了）。事实上，相当一部分本地文件都可以用浏览器打开，包括 PDF 文档、图片当然还有 HTML 文件。

PDF 阅读器倒也是日常工具包的一员，不过我偶尔还是会用 Safari 浏览器检索 PDF，因为它可以高亮当前文档中的全部搜索结果，而不仅限于当前这一页。在浏览一份较长的陌生文件时，我通常会先确定几个关键词，然后用 Safari 快速扫一眼。

浏览器在处理图片时也有奇效。我曾摸索到一套打印长截图的方法，原理很简单，无非用浏览器打开图片，再尝试打印它，其间只需微调参数，原本细细长长的截图就会被自动分割在几个页面里，打印后不至于细小到连内容都看不清。

拓展阅读：更漂亮地打印长截图，一种低技术方案

HTML 文件更是潜力无限。在很早的文章里，我就将想要翻译的文章或书籍弄成 HTML 格式，然后丢给 Safari 翻译，借用浏览器自带的翻译功能，免费、无限量翻译外文资料。后来我又继续薅羊毛，用 Safari 批量翻译 RSS 文章的标题，配合适当的自动化工具，几秒钟就能翻译成百上千篇文章。

拓展阅读：

- 一种几乎永不失效的网页中英对照翻译方案

- 将外文电子书翻译成双语对照版本，并在任何设备上阅读

- 本地 RSS 标题翻译高速方案（DEVONthink 版）

以上种种做法，固然不是浏览器的“正确打开方式”，然而我们要抛弃的恰恰是功能主义，不要认为浏览器只能浏览网页——它还可以处理本地文档。在北美曾有过一阵子关于用户端编程的讨论，浏览器就是重要案例，有人发现，部分初学者或业余玩家并不使用专门的代码编辑器，而是直接在网页控制台里面运行 Javascript 代码，肯定不“正统”，但往往非常有效。这就好比，如果你恰好能够用刀背刮掉鱼鳞并且不算费力，那么为什么非得买一个专门的刮刀呢？

## 一款主流的免费自动化工具

所谓环境，并不完全自然生成，使用者也在改造环境。对于稍微有一些动手能力的读者来说，自动化工具恐怕也如自然环境中的山川湖海一样稀松平常。

在 Apple 环境中，“日常”“自然”就意味着你起码要掌握 Shortcuts 和 Automator 两款免费工具（都是原生的），如果有可能的话，最好再学习一下 Keyboard Maestro 等人气较高的工具。这几款软件都积累了几年甚至十几二十年的素材，小到扫码，（貌似）复杂如从网页上扒图片，你找到的热门方案很可能就是一个 Shortcuts 动作或 Automator 工作流。

拓展阅读：

- 一键打开健康码，以及更多：Shortcuts 的物理外挂

- 用 Automator 批量下载 Safari 网页图片

- 独辟蹊径：Shortcuts 设计之道 \| 产品详情 \- \#UNTAG

- Automator 手册序章：人人都有机会成为 macOS 高手

但是，常见或主流并不代表着就得限于这些工具。正如买菜一样，你可以找个水龙头洗干净直接吃，也可以带回去精心烹调。自动化动作说到底也只是一系列材料，你可以从 Shortcuts 动作或 Automator 工作流中挖出你所需要的那部分。其实，很多自动化动作都是脚本套壳，特别是不及第三方软件那么灵活的 Shortcuts 和 Automator，往往稍微进阶一些的功能就要依靠脚本，此时你就可以挖出里面的核心代码，塞到其他更顺手的工具里。

## 运行脚本的工具

既然谈到自动化工具，就不得不提及自动化的两种主要方式。

> 在设计自动化动作时，还会权衡一下哪种方案最省力，一般来说，我会面临两类自动化方案： 第一，GUI Scripting，即基于 GUI（图形界面）的自动化，主要是模拟键鼠操作，需要懂点脑筋、观察一下实际操作，把人的动作翻译成有规律的键鼠操作，交给电脑执行。多数场合下，GUI Scripting 往往简单有效，而且不需要深层的编程知识。这类自动化中最常用的工具就是 Keyboard Maestro。不过，GUI Scripting 恐有临时建筑之嫌，盖其并不需要了解软件背后做了什么，纯粹模仿使用者的动作，你甚至有机会看到光标自己在屏幕上跳动，绝对和“优雅”二字沾不上边。随着软件界面本身的改动，原先的 GUI Scripting 自动化动作也很可能失效，毕竟它们本身就仪仗图形界面。 第二类是更底层的脚本，直接和软件交流。比如写一个 AppleScript 脚本用于开关暗色模式，就不需要模拟键鼠操作，速度更快、更无痕。显然，这类自动化门槛也更高，前述 AppleScript 就有专门字典（Dictionary），以便使用者可以掌握自动化工具的“方言”。在发现自动化可能性的时候，我会预估一下以后遇到类似问题的概率如何，若是很可能还要打照面，我会写一个相对底层的脚本，尽量确保长期有效；但很多时候，如果只是想临时凑合用，或者任务太急、没工夫打磨自动化动作，这时候就倾向于使用 GUI Scripting。相较于动辄几百上千个可用元素的脚本，制作 GUI Scripting 动作只需要知道两类操作：鼠标点击，以及键盘按键，因为我们和电脑交互时，基本也只涉及这两类输入方式。

本节关注第二类。日常的自动化工具方便我们获得现成资源，而其中偶尔有代码，与之配套，就需要准备一款跑代码的工具——在 macOS 的环境里面，你可能会遇到 AppleScript、Shell Script、Python 和 JavaScript。

——但，不用把事情想得太复杂，本文无意讨论如何编写自动化动作（或代码），此处只考虑更日常、更简单的情况：你得到一串代码，想微调其中几个参数。通常，你只需要文本编辑器；若有不愔代码的读者还想顺便掌握一点代码技巧，或起码和这些花花绿绿的玩意儿混个脸熟，则可以趁机用一用轻量级代码编辑器。

免费的编辑器甚至不能直接跑代码——例如我在用 CotEditor——但无妨，毕竟本节也不考虑调试代码的复杂情况。所谓日常环境中的“编程”，其实是一道缓冲地带，在这里，你只需修改现有材料，就像拧松自行车上的螺丝而不是从头开始造一辆车。不过，这恰恰可以让编程门外汉若有所得，并愿意稍稍往日常地带之外迈步。

材料视角之下，自动化语境中的代码片段并无神秘之处。

## 模拟键鼠的工具

即便是一个接受了材料视角的人，恐怕也要稍微做些心理工作，才能接受如下事实：在数字世界中，屏幕上的每一个像素点，以及几乎任何键盘和鼠标操作，也都可以作为自动化的材料。这一路径就是上一节提及的 GUI Scripting。

GUI Scripting 一般不需要太复杂的代码知识，而在 Keyboard Maestro 之类的软件中，你压根就不用写代码。一个经典用例即模拟输入信用卡信息，老外经常在网上报税，而网页千变万化，写代码反而把简单问题复杂化，不如直接模拟键鼠操作；类似的，在国内登录校园网或公司内网，也可以取道 GUI Scripting。

在暂时找不到其他方法，或者情况紧急、无暇细细设计自动化动作时，键鼠模拟常常最直接、最有效。我在工作中常和 PDF 文件打交道，但 macOS 上的进阶编辑工具——不考虑天价的 Adobe Acrobat Pro——屈指可数，而且不少已经停止更新或沦为跨平台的套壳玩具。不过，我借助 GUI Scripting，还是完成了编页码和加目录的辛苦活，虽说和成熟的商业软件不可同日而语，但是原本半个小时的工作如今被被压缩到去一趟洗手间的时间，也非常划算。

关键在于，要学会把抽象的操作视作具体的材料。

## 图片、PDF 和其他：作为瑞士军刀的预览工具

上一节提到了用 Keyboard Maestro 制作 PDF 加工工具，这也要归功于系统自带的预览工具：它本身就是一个多功能 PDF 阅读器和轻量级编辑器。

同时，预览工具还有常见的图片标注功能，可以简单拼接、叠放图片，这貌似简单的特性，实则打开了全新的窗口——自定义图片标注。我曾编写过一个轻量级标注工具，原理很简单，无非实现准备一些个性化的标注素材，再叠放在图片上，随后调整一下位置、拉伸一下尺寸、旋转一下角度，就实现了那些时髦标注工具中的大部分功能。类似的事情在 Shortcuts 中也可以完成。

拓展阅读：

- 轻量级图片标注方案：Keyboard Maestro 篇

- 轻量级图片标注方案：Shortcuts 篇

当你眼中是一系列可随意处置的原材料时，就不会被局限在专有工具的固有概念里。

## 小结

从文本编辑器、浏览器、轻代码编辑器、Shortcuts、Automator、Keyboard Maestro 到预览工具，本文尝试勾勒了一个 macOS 下的日常工具包，描摹了一种相对容易打造的通用生产环境，而这些简单的工具——只有 Keyboard Maestro 需要付费——足以完成相当一部分任务。

我对工具包概念的重新关注源自技术作家 Venkatesh Rao 的启发，他除了写代码，平时还喜欢做木工或摆弄电子小玩具，在刻板印象中，他这样的 Geek 想必拥有挂满了工具的工作间吧——就像那些 YouTube 网红一样？事实完全相反，Rao 并没有购置那些所谓的专业工具包，相反，他用厨房、浴室和汽车后备箱中的常见工具完成了大部分工作（包括一个拿了奖的机器人）。这些小东西，或许你家现在没有，但只要去楼下转一转，半个小时内基本就可以采购齐全，而且花不了两顿饭钱。何为“日常”，莫过于此。

---

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