资讯动态

【ClipRecall:一个开源macOS剪贴板神器】

发布时间:2026/10/8 14:36:22 来源:尧图企业网站定制
开源一个 macOS 剪贴板神器ClipRecall不只是保存历史还能“按顺序批量粘贴”平时用 Mac 写代码、查资料、整理表格的时候你有没有遇到过这种情况需要从网页、PDF、ChatGPT、Excel 或代码编辑器里连续复制很多段内容然后再切到另一个软件里一条一条粘贴。操作通常是复制 A 切窗口 粘贴 A 切回来 复制 B 切窗口 粘贴 B 切回来 复制 C ……如果只有两三条还好。但如果是十几条、几十条这种操作会非常痛苦。而 macOS 系统自带的剪贴板本质上又只能记住最近一次复制的内容。所以我做了一个开源项目ClipRecall一个面向 macOS 的剪贴板历史与顺序粘贴工具。GitHubhttps://github.com/wellord724/clip-recall它除了能够保存剪贴板历史之外我觉得最有意思的一个功能是可以连续收集多条复制内容然后按照复制顺序一次性或者逐条粘贴。也就是说你可以先专心“复制”然后再专心“粘贴”。一、ClipRecall 是什么ClipRecall 是一个运行在 macOS 菜单栏中的轻量剪贴板工具。目前项目使用Swift 6 SwiftUI AppKit NSPasteboard开发最低支持macOS 14整个程序运行在本地不依赖服务器。启动之后macOS 顶部菜单栏会出现一个剪贴板入口。你复制过的文本、富文本以及图片等内容会自动出现在剪贴板历史中。目前支持的剪贴板内容包括Text HTML RTF RTFD PNG TIFF因此它并不只是一个“纯文本 clipboard manager”。二、为什么我要做这个工具市面上的剪贴板管理器其实已经很多了。例如很多工具都能做到复制 A 复制 B 复制 C 打开历史 找到 A 粘贴 再打开历史 找到 B 粘贴这种方式解决了“我之前复制过什么”但我真正经常遇到的问题其实是我已经知道我要复制哪些东西我只是不想在两个窗口之间来回切换。比如下面这些场景。场景 1把网页数据录入 Excel假设网页上有张三 138xxxxxx 四川成都 计算机学院 2026级你需要把它们分别填入 Excel 的五个单元格。传统方式网页 → CmdC Excel → CmdV 网页 → CmdC Excel → CmdV 网页 → CmdC Excel → CmdV需要不停切换窗口。使用 ClipRecall 后开始收集 复制 张三 复制 138xxxxxx 复制 四川成都 复制 计算机学院 复制 2026级 结束收集然后来到 ExcelCmd Shift P Cmd Shift P Cmd Shift P Cmd Shift P Cmd Shift P五条内容依次输出。整个过程不需要再回网页。三、核心功能序列收集这是 ClipRecall 和普通剪贴板历史工具相比我个人最想解决的问题。开启序列收集后复制 A 复制 B 复制 C 复制 DClipRecall 会按照顺序保存为1. A 2. B 3. C 4. D之后可以选择全部粘贴或者逐条粘贴四、逐条粘贴特别适合表格录入假设收集了苹果 香蕉 橙子 葡萄进入逐条模式以后每执行一次“粘贴下一条”ClipRecall 就会输出下一项第一次苹果第二次香蕉第三次橙子第四次葡萄最后一条输出完成后这一轮序列会自动结束。对于Excel Numbers 在线表格 后台管理系统 数据库录入 表单填写这种场景非常方便。五、支持粘贴前重新排序有时候复制顺序并不一定等于最终需要粘贴的顺序。所以 ClipRecall 提供了一个粘贴前显示顺序候选框例如原本复制的是1. 姓名 2. 手机号 3. 学院 4. 地址但后来发现目标表格的顺序是姓名 学院 手机号 地址不需要重新复制。直接在候选列表里调整成1. 姓名 2. 学院 3. 手机号 4. 地址然后按照新的顺序执行粘贴即可。默认顺序采用 FIFOFirst In First Out也就是第一条复制的内容第一条输出。六、支持自定义内容分隔符ClipRecall 还支持将多个纯文本内容合并后一次粘贴。例如收集Apple Banana Orange可以设置无分隔符结果AppleBananaOrange空格结果Apple Banana Orange换行结果Apple Banana Orange自定义分隔符比如,结果Apple,Banana,Orange或者使用|得到Apple | Banana | Orange对于整理Prompt CSV 数据 关键词 标签 文件路径 代码片段都很方便。七、对多行文本也做了特殊处理复制下面这种内容Python Java C Rust Swift普通剪贴板工具一般只会认为它是“一条文本”。但很多时候我们其实希望Python → 第一次粘贴 Java → 第二次粘贴 C → 第三次粘贴ClipRecall 对多行文本提供全部输出和逐行粘贴两种处理方式。如果选择“逐行粘贴”会按照换行符拆成多条内容。这个功能在 Excel、数据库录入和批量填表场景下非常实用。八、剪贴板历史除了序列模式之外ClipRecall 本身也是一个正常的剪贴板历史管理器。在任意软件里Cmd C复制内容后都可以在 ClipRecall 面板中看到。如果之前复制了一段代码print(Hello ClipRecall)后来又复制了别的内容。不需要重新寻找原来的代码。直接打开历史找到对应记录重新粘贴即可。九、支持文本、富文本和图片目前 ClipRecall 可以读取Text HTML RTF RTFD PNG TIFF这意味着历史记录不仅限于纯文本。例如从浏览器、Pages、Word 或其他富文本应用复制内容时可以保留对应的剪贴板格式。逐条粘贴模式也会优先保留每条内容本身的原始剪贴板数据。因此换行 富文本 图片不会简单粗暴地全部转换成普通字符串。十、全局快捷键为了尽量减少鼠标操作目前提供三个默认快捷键⌘ ⇧ V打开 / 隐藏 ClipRecall 面板。⌘ ⇧ C开始 / 结束序列收集。⌘ ⇧ P执行序列粘贴。因此一种典型工作流可以是⌘⇧C CmdC CmdC CmdC CmdC ⌘⇧C 切换到目标软件 ⌘⇧P ⌘⇧P ⌘⇧P ⌘⇧P基本可以全程使用键盘。如果默认快捷键与自己的软件冲突也支持在设置页面重新录制快捷键。十一、桌面状态提示连续复制的时候一个很容易发生的问题是我到底有没有开启收集模式因此 ClipRecall 还提供了可选的桌面状态提示。可以显示未收集或者正在收集 · 3 条这样在大量复制内容的时候可以直接知道当前已经收集了多少项。这个功能默认关闭需要的话可以在设置里打开。十二、如何运行项目地址https://github.com/wellord724/clip-recall首先 Clonegitclone https://github.com/wellord724/clip-recall.git进入项目目录cdclip-recall直接运行swift run ClipboardApp也可以构建 macOS 应用./Scripts/build-app.sh然后openClipboardApp.app启动成功以后macOS 菜单栏会出现 ClipRecall 的剪贴板入口。十三、第一次使用“顺序粘贴”需要授权因为程序需要模拟Cmd V所以第一次使用顺序粘贴功能时需要给予 macOS 辅助功能权限。打开系统设置 → 隐私与安全性 → 辅助功能允许ClipboardApp.app即可。如果发现剪贴板能正常记录 但是按序粘贴没有反应优先检查这里。十四、项目技术实现如果你也是 macOS / Swift 开发者这个项目本身也可以作为一个 SwiftUI AppKit 桌面应用案例。项目基于 Swift Package Manager// swift-tools-version: 6.0最低平台.macOS(.v14)应用主体采用 SwiftUI同时结合 AppKit 处理 macOS 系统能力。核心涉及几个比较典型的 macOS API / 技术点SwiftUI AppKit NSPasteboard Global HotKey Accessibility Swift Concurrency剪贴板监听主要围绕NSPasteboard.general完成。程序通过监听系统剪贴板变化将对应内容保存成剪贴板快照再交给历史记录以及 Sequence Mode 进行管理。对于全局快捷键、菜单栏、窗口行为和模拟键盘事件则需要结合 AppKit 以及 macOS 的辅助功能权限。如果你想学习SwiftUI 怎么和 AppKit 混合开发一个真正的 macOS 工具这个项目也可以作为一个比较小而完整的参考项目。十五、为什么不直接使用 NSPasteboard 一次塞进去这里其实涉及一个挺有意思的实现问题。假设用户复制A B C“按序粘贴”并不是简单变成ABC因为目标应用可能是Excel 网页表单 IDE Word 数据库客户端不同软件对于剪贴板内容的处理完全不同。因此逐条粘贴模式本质上需要不断执行写入系统剪贴板 ↓ 模拟 CmdV ↓ 等待目标应用消费 ↓ 写入下一条 ↓ 再次 CmdV所以这里实际上包含一个简单的Sequence State Machine也需要处理窗口焦点 目标应用 粘贴节奏 剪贴板格式 序列状态这也是这个项目相比普通 clipboard history 更有意思的地方。十六、目前仍然是一个早期项目这里也说明一下当前版本的边界。目前剪贴板历史和序列仍然主要保存在内存中。因此退出应用以后历史记录会被清空。目前 README 中规划了一些后续能力例如历史记录持久化 截图 OCR Markdown 转换 JSON 转换 更完善的内容索引但这些属于后续规划目前并没有把它们当成已经完成的功能。我个人也更倾向于先把Clipboard History Sequence Paste这两个最核心的体验打磨好。十七、这个工具适合哪些人我觉得下面几类用户会比较适合。程序员经常需要在浏览器 IDE Terminal ChatGPT GitHub 文档之间复制代码、命令和路径。科研人员例如看论文时需要连续收集论文标题 作者 方法名称 实验指标 Dataset DOI 代码地址然后统一整理进Obsidian Notion Excel Markdown相比复制一次切一次窗口会舒服很多。经常使用 ChatGPT / Claude 的用户现在 AI 工具里经常会生成代码 Prompt 命令 表格字段 关键词 论文标题 参考文献ClipRecall 可以先连续收集再统一整理到目标软件。Excel / 数据录入用户这应该是序列粘贴最直观的使用场景之一。特别适合把多个来源字段依次填写到Excel Numbers CRM 后台系统 网页表单 数据库中。十八、我更希望 ClipRecall 解决的是“工作流”问题ClipRecall 并不是想单纯再做一个“可以保存 1000 条剪贴板历史的软件”。我更希望它解决的问题是复制 复制 复制 复制 ↓ 统一整理 ↓ 粘贴 粘贴 粘贴 粘贴也就是把传统的复制 → 切窗口 → 粘贴 → 切回来变成先复制完 再粘贴完减少上下文切换。从一个很小的工具角度来看我觉得这反而是比较有价值的地方。十九、后续计划目前 README 中已经规划了一些后续方向包括剪贴板历史持久化 截图 OCR 更完善的格式转换 Markdown / JSON 输出 历史记录索引 图片管理项目目前还处在持续完善阶段。如果大家实际使用以后发现Bug 快捷键冲突 某些 App 无法粘贴 剪贴板格式兼容问题 新的使用场景都欢迎提交 Issue。二十、项目地址最后放一下 GitHubClipRecallhttps://github.com/wellord724/clip-recall如果你也是 macOS 用户并且平时经常需要复制多条内容 批量整理资料 填写 Excel 整理代码 整理 AI 输出可以试一下。如果这个项目对你有帮助也欢迎⭐ Star Fork Issue或者一起参与开发。最后有时候提高效率并不一定需要一个非常复杂的 AI Agent。一个很小的操作改变复制一次 → 粘贴一次变成复制 N 次 → 粘贴 N 次就可能明显减少工作中的上下文切换。这就是我做 ClipRecall 最初想解决的问题。GitHubhttps://github.com/wellord724/clip-recall

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑