惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
J
Java Code Geeks
B
Blog
腾讯CDC
博客园 - 三生石上(FineUI控件)
S
SegmentFault 最新的问题
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - Franky
罗磊的独立博客
月光博客
月光博客
Jina AI
Jina AI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
D
Docker
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
G
Google Developers Blog
V
Visual Studio Blog
I
InfoQ
有赞技术团队
有赞技术团队
D
DataBreaches.Net
Microsoft Security Blog
Microsoft Security Blog
WordPress大学
WordPress大学
阮一峰的网络日志
阮一峰的网络日志
宝玉的分享
宝玉的分享
Blog — PlanetScale
Blog — PlanetScale

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
我如何用 Keyboard Maestro 替代 TextExpander - 少数派
2017-06-04 · via 少数派

不知道大家还记不记得前阵子的 Mac ‘Pick a Bundle’ 2017(我派文章:《这也许是 2017 年省钱最多的 Mac Bundle 软件套装》),我当时犹豫了很久,因为我不知道我是不是真的需要这些 App,不过后来还是剁了。因为之前没有用过,我很天真的以为 TextExpander 是买断制的,激活的时候才发现自己亏了。

对很多人来说 TextExpander(下称 TE)的必要的功能 Keyboard Maestro(下称 KM)基本可以代替。而且 KM 在中文输入法下也能正常工作,TE 则会有很多问题。本文尝试给出一个全面的替代方案帮助你省钱省心。还没有尝试过这种效率工具的朋友也可以照着教程弄一个试试,说不定就有用呢。参考链接中还有一些 KM 的其他使用场景,希望你能帮到你。如果你已经用了一阵子 TE,还有比较方便的迁移方案

不过如果你比较在意在 iOS 上做这件事情,那恐怕还要继续用 TE,很显然在 iOS 上除了用功能单一的系统自带的文本替换,并没有什么好的办法来代替它。

基本的文本替换

这是一个邮箱地址的 snippet:

快速输入邮箱

这是其在 KM 中的实现:

快速输入邮箱

激活条件

点击 New trigger 添加一个激活条件。

激活条件

我这里选择的是 Typed string trigger,和 TE 的激活方法是一样的:用户在某一文本框中输入一些关键词。你也可以按自己的习惯把一部分常用的 snippet 改成用快捷键激活。

  • Case dose not matter 可以选择侦测是否大小写敏感,TE 也有类似的设置。
  • Match after any character 可以设置替换的时机,我目前的选择代表只要侦测到字符就替换。如果你改成了 Match after a word break 则在字符前没有一个空格作为分隔的话,就不会被替换。
  • Diacritical matter 我搞不懂有什么意义,不过改掉会让带有特殊符号的关键词失效,所以就这样吧。
  • Simulate n deletes before executing 如果不选中那就是只执行脚本不删除关键词。这是一个 TE 没有的功能。

你还可以再添加一个 trigger 来指定这个脚本只在某些程序内执行。避免不必要的干扰。

输入方式

点击 New Action 添加一个动作,在左边的列表里找到 Text 可以看到前两项是我们需要的东西。

这里又是一个 KM 的优势,在 TE 中建立的 snippet 是不能在密码框工作的,在网页中也需要调整 Safari 的安全选项才能输入密码。比如说我们移动文件到系统目录需要确认,这个时候就可以用 KM 做一个快速确认的脚本。

  • Insert text by Pasting 文本会被先复制到剪贴板再粘贴到区域。(输入到 Apple ID 登录框时要使用此选项)
  • Insert text by Typing 文本会被以模拟键盘的方式输入到区域。(输入到系统密码区域或想避免影响剪贴板时使用此选项)

一般我都会用前者,大部分情况下都是适用的。因为有用一些剪贴板管理软件,所以也不在乎影响剪贴板。顺便给出我输入系统密码的脚本。(不过注意,密码是明文存储的,如果别人有可能碰到你电脑,我不建议你这么做。)

输入系统密码的脚本

复杂点的模版输入

在 TE 中我们可以指定一个模版,比如说邮件回复的模版,在实际使用的时候可以直接在模版中填空来输入大段文字。下面是一个案例:

教你怎么节约时间

运行效果大概是这样的:

运行效果

这是其在 KM 中的实现:

教你怎么节约时间

运行效果大概是这样的:

运行效果

询问输入

添加的第一个 Action 是 Variables/Prompt for User Input。

  • Title 和 Prompt 没什么好说的,就是标题和提示语
  • Variables and Default Values 这里你可以定义需要输入的变量名和他们的默认值,注意变量名不能重复,必要时可以后面加 123 之类的。这些变量名也会显示在要求输入的提示框里。

构造文本

点击 Insert Token 就可以在文本中加入之前的变量。

菜单

只需要把光标定位在变量要放的位置然后加就行了,如果你熟悉语法也可以自己打字,这都没关系的。

我解释一下其他两个重要选项:

  • Calculation 会在你的文本中插入一段计算代码,默认是 %Calculate%1+2% 你可以利用这个语法来对输入的变量进行一些计算。比如说你有两个变量「单价」和「数量」,就可以写一个 %Calculate%单价*数量%,会输出相乘的结果。这是一个 TE 没有的功能。
  • Position Cursor 输入文本后将光标放在某处。如果你需要在模版中间再自己打字的话,这是一个很方便的选项。

再重点介绍一下和时间有关的公式:

Date 子菜单
  • Date/Formatted (ICU) Date Time 会插入一个格式化的当前时间戳,默认格式是 %ICUDateTime%EEE, MMM d, yyyy h:mm%。你可以调整百分号之间的 EEE(星期)yyyy(年)MMM(月)d(日)h(小时)mm(分)ss(秒)的位置和周围的字符串来形成一个自己需要格式的一般时间戳。
  • Date/Formatted (ICU) Date Time For 默认会插入一个 30 秒后的时间戳,默认格式是 %ICUDateTimeFor%NOW()+30%EEE, MMM d, yyyy h:mm:ss%。修改数字 30 可以指定距今多少秒,可以配合一些变量实现输入之类的。格式调整同上。
  • Date/Formatted (ICU) Date Time Minus 默认会插入一个 21 天前的时间戳,默认格式是 %ICUDateTimeMinus%3*7%Days%EEE, MMM d, yyyy h:mm%。可以修改数字和单位,都是时间单位英语的复数。格式调整同上。
  • Date/Formatted (ICU) Date Time Plus 默认会插入一个 21 天后的时间戳,默认格式是 %ICUDateTimeMinus%3*7%Days%EEE, MMM d, yyyy h:mm%。参数修改方法同上。

剩下的东西如果大家需要可以自己研究一下或者参见官方文档

富文本问题

有时候我们会需要输入一些带有格式的文本,KM 并不能原生对这种东西提供支持,这是一个很尴尬的缺点。不过办法还是有的,比如说可以用 RTF 文件。

我们先用文本编辑新建一个文件。内容如图:

文本编辑

然后在 KM 里加入 File/Read a File 和 Clipboard/Paste,把文件定位到刚才建立的文件上。

脚本内容

效果如下:

插入到邮件

你也可以把这个操作穿插到之前的「模版输入」章节中使用。

其它常用操作

插入图片

插入图片的做法如图,注意过程中会修改剪贴板。

脚本内容

分别是 Image/Read a File 和 Clipboard/Paste。

运行脚本

运行脚本的 Action 可以在 Execute 中找到。

运行脚本

用法也都很简单,和 Automator 类似。

脚本内容

模拟功能键

脚本内容

Interface Control/Type a Keystroke。

小技巧

你可以把一些 snippet 放在一个文件夹中,并制作一个弹出选择菜单的脚本来做备忘。内容和效果如图:

脚本内容
选择菜单

Keyboard Maestro/Show Macro Group 会让这个菜单一直显示,Keyboard Maestro/Show Macro Group for One Action 则会在执行后消失。

数据迁移

我在 Github 上找到了一个迁移脚本,可以帮助你把那些简单的 snippet 直接迁移到 KM。但是那个脚本中的配置文件位置已经是上一个版本的了,我更新了一下放在我自己的 GitHub,大家可以取用。(GitHub 链接

先把这个脚本下载到本地,再在终端中运行:python TE.py 就可以在桌面生成 KM 的配置文件,双击导入即可。

对于比较「花哨」的 snippet,你可能就需要自己去折腾一下了。可以先做一个模版,然后多复制几遍改一改。这里是我上面模版输入的 snippet 文件

小结

本文的内容是一些我个人的使用经验。在可以被众多工具代替的情况下,TE 采用订阅制销售真的是一个正确的做法吗?订阅制销售的关键在于「软件即服务」,而 TE 这样的工具类 App 仅仅凭借其自身有一个同步平台我觉得并不是能够做到这一点。而现在的销售方式无疑会让一些原来的 TE 用户去寻找更便宜的替代品。你对这件事情怎么看呢?不管是对本文内容有补充还是评价我的观点,欢迎在评论区和我交流。顺带吐槽一下,KM 这个 UI 啊,虽然大多数时候看不着,但是拜托能不能做的好看点 🌚。

相关链接