和许多效率类应用一样, TextExpander 对于不少 Mac 用户而言相比不会陌生,iOS 版本的 TextExpander touch 作为 Mac 版本的衍生,在 iOS 8 之前由于系统的限制只能在集成其 SDK 的应用中使用,所能发挥的空间非常有限,也因此被众多玩家戏称为「买了从没打开过的 App」。

现在,我们终于迎来了 iOS 8,得益于 iOS 8 的新特性——扩展插件(Extension),应用可以在不改变沙盒机制的情况下通过插件的形式互相通讯传输信息,这就使得原本只能在少数单独支持的应用中使用的 TextExpander touch 终于能像 Mac 上一样,在任何一款应用中发挥作用,提升你的文本输入效率。

TextExpander touch 能够做什么?

在移动设备上,我们除了获取信息之外,做得最多的是一件事情就是输入。比如给客户发邮件,或是将有趣的事情通过社交网络分享给别人,或者有时有感而发写写文章……日子久了,你会发现其实自己每天都在输入大量重复的内容:给客户的邮件往往就是那么几句万年不变的话,自己最经常和别人分享的也都是和某一方面的内容所相关的词句——这样日复一日输入同样的内容,简直就是对生命的一种浪费,特别是要在移动设备那巴掌大的虚拟键盘上,输入大量文本的效率更加低下。

TextExpander 就是为了解决这些需求而开发。TextExpander 能将那些需要重复输入的内容(Content)保存,并给其预设一个缩写词(Abbreviation),当下次需要时,你只需输入设定好的缩写词就会自动展开缩写词,获得完整的文本内容。

比如我为这篇文章创建了一个文本片段(Snippet),当我输入缩写「tet」就会被自动替换为「TextExpander touch」。当然这只是一个简单的例子,TextExpander touch 所能实现的功能要比这高级复杂许多,否则就这么点功能还不如系统自带的「用户词典(即自定义短语)」功能——实际上,TextExpander 也可以说就是高级版的自定义短语。

TextExpander touch 与「用户词典」横向对比

在 iOS 8 之前碍于系统的限制,要实现自定义文本短语的功能是比较困难的。作为 TextExpander touch 唯一竞争对手,「用户词典」秉承了苹果开发次要功能时「点到既止」的一贯作风——除了简单的单行文本替换功能外,「用户词典」没有任何的其他功能,其最大的优势就是:「用户词典」作为系统集成的一部分,它可以在任何应用内触发。但这唯一的优势终于因 TextExpander touch 借助 iOS 8 新扩展特性实现同样功能而抵消。

那么,这款单从应用名看来就显得「高大上」的 TextExpander touch 有那些主要的功能呢?除了和「用户词典」一样支持单行文本替换之外,它还支持:

  • 多行文本替换 在展开内容的同时,还能够保持你预设的格式,而不会像「用户词典」那样将所有的内容混合在一起,这一点在创建像邮件签名这种多行的内容时尤为重要。

  • 剪切板调用 在展开文本片段时可以将剪切板作为内容的一部分插入。你可以创建一个「缩写」为「ppp」的文本片段。这样你要粘贴剪切板里的内容时就只需要在键盘上快速敲击三次按键「p」来替代繁复的系统粘贴菜单。

  • 自定义光标位置 可以将光标定位到文本的任意位置,比如将光标自动定位到「 和 」之间,就不需要手动的去调整。我平时的工作流是结合 Droplr 以及上面提到的剪切版调用功能来快速实现在 Markdown 中插入图片,并移动光标到方形括号之间。

  • 默认选中文本 比如在邮件的开头我们通常是「Hello There,」。我们可以将 There 默认选中,在知道对方姓名的时候直接键入名字替换掉「There」,不知道时则直接移动光标跳过编辑。

  • 时间格式和计算 插入任意的时间格式,而且可以通过 TextExpander touch 自带的时间计算功能对日期进行计算。比如你可以插入一个时间计算标记,计算再过 27 天后的日期。

  • 跨平台同步 除了 Mac 和 iOS 平台的 TextExpander 外,Windows 和 Android 平台上还有一款叫做 PhraseExpress 的 Text Expansion 软件可以兼容 TextExpander 的数据库。也就是说:你只要通过 Dropbox 同步 TextExpander 的数据库,就能实现全平台同步,在任何平台上都能获得一致的体验,这是其他应用所不具备的。

  • 分组管理 TextExpander touch 可以通过将不同类型的文本片段,分配到相对应的分组中以便于管理。

以上就是 TextExpander touch 的主要功能简介,在长长的功能清单之下「用户词典」显得有点相形见绌。作为一次即不客观也不公正的横向测评,结果自然是高下立判。

TextExpander touch 键盘

TextExpander touch 键盘作为此次 3.0 最主要的功能更新,它可以让你在任意一个 iOS 应用中触发保存在 TextExpander touch 数据库中绝大多数的文本片段。之所以要强调「绝大多数」,是因为 TextExpander touch 中的「默认选中文本」以及「填充文本框」功能,已经超出了键盘插件所能够实现的范围。

第一次观看开发商公布的 TextExpander touch 键盘演示视频时,我的脑海里除了激动和兴奋之外,还浮现着一个大大的「」字。果然,开发商 SmileOnMyMac 又一次用自己的产品设计使我更加确信了之前的一个猜想:「我们应用的用户界面是工程师设计的」。

1. 添加键盘

首次添加键盘需要依次进入「设置 > 通用 > 键盘 > 键盘 > 添加新键盘 > 第三方键盘:TE > English > 完成」。添加完键盘后,会自动返回到添加键盘前的设置界面,在这里点击才添加的「English-TE」键盘并开启「允许完全访问」选项。

完成所有操作后,就可以通过系统键盘上的语言切换按键切换到 TextExpander touch 键盘。如果遇到键盘不自动弹出,你通过可以关闭「允许完全访问」选项后再开启,这个 Bug 不知是应用还是 iOS 8 系统的,使用这一方法可临时修复问题。

2. 键盘按键

如果你足够细心的话,应该会发现 TextExpander touch 键盘上的按键大小和系统键盘的按键尺寸是不一致的。为了这件事我特意咨询了开发者,可是开发者却告知 TextExpander touch 键盘上的按键尺寸以及触发范围和系统键盘完全一致。此后,我也一度以为是键盘上大小写字母的差异造成了我视觉上的误差,所以才会在快速输入时频频失准。

为了弄清楚这一问题,我对同是大写状态下的两个键盘进行截图对比,结果却和开发者所说的不太一样。虽然二者长宽只有分别两个像素的区别,但在长期习惯了 iPhone 系统键盘的按键大小后,使用 TextExpander touch 键盘难免会造成体验上的不适应(比如快速输入的准确性不够高)。而在 iPad 上因为按键足够大,则会好很多。 

 

3. 其他细节

在要触发「缩写」里含有数字和符号的文本片段时,通常情况下我们会通过键盘左下角的「123」按键切换到数字与符号键盘,完成输入后再手动的切换到字母键盘。其实这里我们可以利用 iOS 键盘的技巧大大提升输入的效率——在需要输入数字与符号时,只需按住键盘左下角的「123」按键,然后滑动到你需要输入的按键上后松开,在完成输入的同时会自动的切换回字母键盘。

TextExpander touch 有一个可能会让强迫症难以忍受的地方:它将键盘的按键声文本片段触发音效放在了同一个选项开关上。这就导致了如果你只喜欢文本片段触发时的音效,就必须忍受「咔咔咔」的键盘声。不过开发者表示在后续的版本中应该会将两个音效的开关单独设置。 

TextExpander touch SDK 集成应用

在测试使用了两个星期左右的时间后,我的体会就是在集成了 TextExpander touch SDK 的应用中,尽量不要使用 TextExpander touch 键盘。

主要原因有三点。

首先,TextExpander touch 键盘的体验并不好,并且对于中文用户来说,在没有中文键盘1的情况下,需要频繁的在中英文键盘间切换。目前 TextExpander touch 键盘也不支持联想功能需要一个个字母手动输入,不过好消息是开发商已经在开发英文的联想功能了,坏消息是据说要「应用内购买」。

其次,是因为 TextExpander touch SDK 要比键盘更加稳定成熟,功能支持上也比键盘全面。在本身支持「默认选中文本」以及「填充文本框」功能的应用内使用 TextExpander touch 键盘的话,会因为键盘功能临时性覆盖掉应用内的 SDK,造成这些功能不能正常使用,反而得不偿失。撇去键盘「时灵时不灵」的这个 Bug 外,在键盘上触发含有「自定义光标」的文本片段时,如果不在输入「缩写」前保留一个空格的话,还会造成光标位置错乱。

最后,如果你已经习惯了使用蓝牙键盘作为主要的输入工具,那么这一点可能会让你比较失望。因为系统的限制,在连接了蓝牙键盘的情况下,TextExpander touch 等第三方键盘无法生效。但在集成了 SDK 的应用中,即使连接了蓝牙键盘,文本片段仍能够正常触发。

因此,能利用 TextExpander SDK 应用触发文本片段,就不要使用 TextExpander touch 键盘。

管理文本片段

一个强大的工具,只有在合理使用的情况下才能发挥出其最大的价值,而 TextExpander touch 的合理使用则是基于一个条理清晰、适用于自己的文本片段数据库。我个人不太推荐直接去网上下载别人创建好的文本片段数据库使用,倒不是因为什么「拿来主义」,仅仅只是因为别人的文本片段是根据自身的记忆习惯以及工作流程而「私人定制」的,适合他们的不一定适合你。

1. 分组管理

TextExpander touch 并不像 Mac 平台上那样具备搜索功能,所以在有很多文本片段的情况下分组管理就显得尤为重要。它不仅可以让你在众多的文本片段中快速找到你需要的那个,同时它还会让你在自己的脑海里将那些文本片段分区,对文本数据库的结构有更加清晰的记忆。这也是为什么 TextExpander touch 在创建文本片段时,强制要求将文本片段放置在分组中的原因。

你可以根据自己的使用场景对不同的文本片段进行分组,比如创建一个叫做「Work」的分组专门用来存放工作时会经常用到的文本片段。或者根据文本片段的关联性进行分组,比如创建「Correction」的分组专门用来自动修正单词的文本片段,比如输入「osx」会自修正为「OS X」。如果觉得某个文本片段更适合放在另外一个分组中的话,可以通过底部的分组按钮,移动到别的分组中去。

2. 高效的缩写

文本片段是通过输入「缩写」而触发的,所以高效的缩写可以大大提高文本片段的使用效率。一个高效的缩写至少需要同时符合以下几特点:

  • 简短且易于记忆 在大量的文本片段中过于简短的缩写容易造成冲突而过于复杂则不利于记忆。既要做要简短又要易于记忆就必须将缩写与文本片段的内容联系起来。因为在需要某个文本片段时人脑的第一反应是联想到内容其次才是缩写。

  • 不易错误触发 为了避免错误触发可以在缩写中插入符号,或者重复缩写的首字母。比如这样「,date」、「ddate」或者「da.te」。在创建新的文本片段时如果当前的缩写与数据库中存在的缩写相冲突的话,编辑界面的右上角会出现一个橙色的感叹号图标,点击进入冲突界面在这里你可以查看和修改那些造成冲突的文本片段。

  • 避免使用特殊符号 在 Mac 上你可以很容易输入键盘上任意的一个符号,比如「#」,但在 iOS 设备上输入相同的符号加上返回到字母键盘,一共要经过 4 个步骤。因此,决定在缩写中使用符号时应该优先考虑像「-」、「,」这类无论是在 Mac 还是 iOS 平台都易于输入的符号。

我自己创建「缩写」时,所使用的策略是前两个字母采用文本片段所在分组的简写,后面两个字母则是联系文本片段的内容。假设我有一个文本片段里的内容是 Google 的网址,而这个文本片段放置在「Website」这个分组中,结合前面两点我会使用「wbgg」作为该文本片段的简写,这样即保持了简短又不太容易误发。

3. 数据库同步与隐私

TextExpander 提供了两个数据同步方式,除了 Dropbox 同步外还提供了无线局域网同步。如果你选择前者作为自己的同步方式的话我要给你一个「人生的忠告」,不要将信用卡号这类的敏感信息保存在 TextExpander 中。因为 TextExpander 数据库是采用明文的方式存储在 Dropbox 中,一旦你的 Dropbox 账号被人劫持你存储在数据库里的信息将会被人一览无余。如果你不是初次使用 Dropbox 同步,在设置中开启 Dropbox 同步时弹出的对话框中应该选择「Link」而不是「Replace」,否则 Dropbox 中的数据库会被本机的数据所覆盖掉。

「无线局域网同步」的安全性就比 Dropbox 高一些,但缺点也明显:每次需要手动去一个个同步,易用性较差,要有足够的耐心。如果你想要在没有无线网络的情况下同步,可以开启 iOS 设备上的「个人热点」功能作为临时路由器。

最后

作为一款 iOS 平台的 Text Expansion 应用,TextExpander touch 3.0 无疑是这个平台上最为优秀的应用之一(请不要以貌取人!),即使在 iOS 8 之前它也一直是我 iOS 设备上的常驻应用。如果你是一个注重文本输入效率的人,它绝对会是你值得购买的 Must Have。

在 iOS 8 给予 TextExpander touch 给予机遇的同时,也给它带来了前所未有的挑战,iOS 将会成为 Text Expansion 的下一个战场,但这确是我所乐见的。


  1. 开发商表示他们不具备有开发一款中文键盘的所必须的语言知识,出于对用户体验负责的态度,开发中文键盘并不在他们的计划之内。不过他们提供了相应的 SDK,唯有希望有开发者在开发中文键盘时能够集成该 SDK。