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

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 司徒正美
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Last Week in AI
Last Week in AI
大猫的无限游戏
大猫的无限游戏
博客园 - Franky
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
爱范儿
爱范儿
The Cloudflare Blog
阮一峰的网络日志
阮一峰的网络日志
博客园 - 叶小钗
博客园_首页
有赞技术团队
有赞技术团队
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享
V
V2EX
V
Visual Studio Blog
博客园 - 三生石上(FineUI控件)
S
SegmentFault 最新的问题
量子位
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
美团技术团队

少数派

派早报: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 - 少数派
aText 与系统文本替换的同步 - 少数派
2018-04-10 · via 少数派

文本替换是 iOS、macOS 上一项很实用的功能,但是对于各位 Power User 来说,iOS 上的文本替换或许是够用了,但 macOS 上大家都会选择其他更专业的文本替换软件,比如大名鼎鼎的 TextExpander,或是性价比更高的 aText

TextExpander 作为订阅类 App,iOS、macOS 双平台都有,但是价格不菲,而且 iOS 版对中文支持不好,所以我选择的方案是在 iOS 上用系统的文本替换,在 macOS 上用 aText。

但是这就产生了一个问题:同步。在 aText 里存储的短语,如果不能在 iOS 端使用是一件很苦恼的事。为了解决这个问题,就要用到 macOS 文本替换和 iOS 能同步这一特点。我利用这一点打造了一套自动化地同步 aText 和系统文本替换的工作流。
首先我简述一下这个工作流。

  1. 导出 aText 数据,为 .rtf 格式。
  2. 用命令行将 .rtf 格式 转化为 .txt 格式。
  3. 用 Python 处理 .txt 文本,获得 .plist 文件。
  4. 系统文本替换能够自动解析 .plist 文件,并在双平台同步。

处理 .rtf

这里用到了 macOS 自带的命令行工具 textutil,使用格式为:

textutil -convert txt FILE.rtf

处理 .txt

这里用到了 Python 自带的库 plistlib,可以生成 macOS 独有的 plist 格式。在这之前我们来看看为何是 plist 文件。打开 macOS 文本替换,将其中的一个短语拖出来,用 Xcode 打开,可以看到其中的数据结构是这样的:

null

整体是一个数组形式,里面的 item 是字典,两个键分别是 phrase 和 shortcut 。任何具有这样结构的 plist 文件,都可以被系统文本替换解析。这样一来,用 Python 就可以很简单的生成这样的 plist 文件了。核心代码如下:

import plistlib 

def writeToPlist(array):
    plistlib.writePlist(array,"/Users/bigice/Documents/text.plist")

def main():
    with open("/Users/bigice/Documents/aText Snippets.txt",encoding="utf-8") as file:
        #处理文本
        text = file.readlines()
        for i in range(len(text)):
            text[i] = text[i][:-1]
        t = text[1:-1]
        shortcut = []
        phrase = []
        for i in range(len(t)):
            if i%2 == 0:
                shortcut.append(t[i])
            else:
                phrase.append(t[i])
        array = []
        for i in range(len(shortcut)):
            array.append(dict(phrase=phrase[i],shortcut=shortcut[i]))

        writeToPlist(array)

main()

自动化

最后将生成的 plist 文件拖入文本替换中,在通过 iCloud 同步,一切都完成了。
但是这样还是不够自动化,我们再把这些步骤用自动化工具整合一下,当文件夹中检测到 .rtf 文件,自动调用命令行工具生成 .txt 文件,当检测到 .txt 文件,自动调用 Python 程序,生成 plist 文件,移动到桌面,然后自动打开文本替换界面,最后再拖一下,大功告成。这里我用 Hazel 写了几个动作,仅供参考。
首先是将 rtf 转化为 txt:

null

然后将 txt 转化为 plist:

null

然后将 plist 移动到桌面:

null

最后打开文本替换界面:

null

OK,一个自动化同步文本片段的功能就完成了。整个过程其实很简单,但对于一些没有编程基础的人来说,这个教程应该有些许参考价值。