在 Mac 端的效率 app 中有一个非常大的品类是剪贴板工具,能管理、记录剪贴板几乎是一个综合类效率工具的标配,比如 Keyboard Maestro、Alfred、Raycast,也有大量开发者围绕着剪贴板历史记录制作专门的 app,比如老牌的 Pastebot,新兴的 CleanClip 等,可见记录剪贴板历史是一个多么现实的需求。
但到了 iOS 端,虽然也有大量的开发者开发了形态各异的剪贴板历史记录工具,但受限于 iOS 本身的封闭机制,在常规情况下,如果你想记录剪贴板历史,唯一的办法就是打开剪贴板记录工具,不仅流程繁琐,还非常容易漏记。
好在我们有快捷指令和自动化!通过摸索,我创建了一套相对优雅的自动记录 iOS 剪贴板历史记录的方式,通过快捷指令、自动化和 app 的配合,实现了无感的、大部分情况下全自动记录剪贴板历史,并且可以在任何界面不跳出当前 app 随时呼出并调用剪贴板历史。
实现思路
经过我对于自己复制、粘贴行为的观察,主要作为内容消费端的 iPhone,90% 的情况复制的内容是纯文本,在 99% 的情况下复制后会伴随着后续动作,这动作大概率是在粘贴到别的地方、搜索引擎搜索、打开链接这几种之间,这些行为间也极大概率伴随着不同的 app 打开和关闭。
找到这些共性,这套自动化记录剪贴板的系统就有了一个大概的思路:
用到的 App
- Taio(免费下载有内购):Taio 是一个集剪贴板管理和 Markdown 编辑器于一身的 app,在这个工作流中主要承担记录 + 通过快捷指令全局展示的功能。
- ToMemo(免费下载有内购):ToMemo 是一个剪贴板管理和文字片段管理工具,提供了 iOS 键盘,在这个工作流中主要承担了记录 + 键盘调用剪贴板的功能。
具体分享
感谢快捷指令的自动化,让我们在打开/关闭一个 app 时候可以自动触发快捷指令,这也为自动化记录剪贴板历史提供了基础。
第一步:观察自己的常用复制源 App,并为其添加自动化
在我对自己行为的观察中,我发现我的复制内容大概是复制自 90 多款常用 app,于是我为这些 app 添加了一个“当 app 关闭时”触发的自动化,当我关闭这些 app 时,自动触发快捷指令,向上面提到的两个剪贴板记录 app 传递当前剪贴板数据。
这样设置之后,当你复制完内容后退出复制源 app,复制的内容就会自动被记录进 Taio 和 ToMemo 中以供你调用,一般来说如果你没有像我一样的怪癖不喜欢打断当前工作流,这样设置一下,再配合 ToMemo 的键盘扩展就可以覆盖和管理剪贴板历史了,毕竟能粘贴的地方极大概率一定是可以呼出键盘的,但我这个人不太喜欢完成一件事儿要跳转好几个 app,如果能不跳出当前使用的 app 就调用剪贴板历史那就再好不过了,所以我设置了第二个快捷指令。
第二步:打造一个全局一键呼出的剪贴板历史记录
Taio 对于快捷指令的支持相当完善,这也让实现全局呼出剪贴板历史记录成为可能。在 Taio 提供的快捷指令模块中,有一个“获取剪贴板内容”模块,它可以一次性输出多条剪贴板历史记录,只要通过系统自带的“从列表中获取项目”模块并配合“从列表中选取”模块,直接参看并选择任意一条剪贴板记录。
第三步:为剪贴板历史记录设置一个全局快捷键
现在离目标只剩下最后一个步骤,那就是如何在任何情况下都能直接呼出剪贴板历史,这里有三种方法:
针对 iPhone15 Pro/Pro Max 用户,可以将这个快捷指令绑定在 Action Button 上,在任何界面都可以长按呼出。
如果你的设备没有 Action Button,那么也可以打开系统的辅助触控功能,将快捷指令的触发绑定在单击、双击或者长按小白点上,我自己的单击、双击都设置了功能,所以我是放在了长按呼出的一级菜单里,这种方法不限制设备,甚至配合其他快捷指令还能有更多玩法。
如果你不喜欢小白点,iPhone 也提供了敲击设备背面触发快捷指令的功能,但这个功能说真的稳定性不高,需要大量练习才能将成功率提升到 50% 以上,并不推荐。
局限性
受限于自动化和快捷指令的稳定性,极偶尔会出现无法记录的 bug。
受限于实现自动记录的机制,如果多次复制的行为在同个 app 中,则只会记录退出该 app 之前的最新一次复制,不过经过我的实验,呼出 Spotlight 会被系统视作离开了当前的 app,可以通过呼出 Spotlight 的方式半自动记录。
剪贴板历史记录只针对纯文本信息,不支持其它类型。