macOS 剪贴板 & 快捷键诊断工具,用于排查 Command+C / Command+V 不灵的问题。
- Snip 默认不记录按键字符内容(键盘监控需
--unsafe-chars才输出) - 剪贴板历史功能(
snip clip record)会把剪贴板文本内容保存在本地~/Library/Application Support/snip/history/,仅本地使用、绝不上传 - Snip 只在本地运行,不会上传任何数据
- 使用
--unsafe-chars或--content-preview时才可能显示敏感内容 - 所有日志默认保存在
~/Library/Logs/snip/
不想留下剪贴板历史?
snip clip clear一键清空,或删除~/Library/Application Support/snip/history/目录。
git clone https://github.com/clanzhang/snip.git
cd snip
swift build -c release
cp .build/release/snip /usr/local/bin/brew tap clanzhang/tap
brew install snip升级:
brew upgrade snip卸载:
brew uninstall snip
brew untap clanzhang/tap| 功能 | 所需权限 | 如何授权 |
|---|---|---|
snip watch |
无 | — |
snip doctor |
无 | — |
snip test --clipboard |
无 | — |
snip keys |
输入监控 | 系统设置 > 隐私与安全性 > 输入监控 |
snip all |
输入监控 | 同上 |
snip test --keys |
输入监控 | 同上 |
snip network |
无 | — |
snip cpu |
无 | — |
snip clip |
无 | — |
| 命令 | 说明 |
|---|---|
snip watch |
监控剪贴板变化 |
snip keys |
监控全局键盘事件 |
snip all |
同时监控剪贴板 + 键盘(含复制失败检测) |
snip battery |
查看电池电量、健康度、温度 |
snip network |
查看网络状态(Wi-Fi、连接速率、DNS、连通性) |
snip speed |
测速(Wi-Fi/带宽;Cloudflare 优先,Ookla 回退) |
snip cpu |
查看 CPU 状态(型号、负载、使用率、Top 进程) |
snip clip |
剪贴板历史管理(增删改查) |
snip doctor |
系统诊断 |
snip test --clipboard |
测试剪贴板底层 |
snip test --keys |
测试全局快捷键 |
snip stats |
查看统计 |
snip report |
生成诊断报告 |
| 参数 | 说明 | 适用命令 |
|---|---|---|
--json |
JSON Lines 输出 | watch, keys, all |
--log |
写入日志文件 | watch, keys, all |
--interval 0.5 |
轮询间隔(秒) | watch, all |
--content-preview 20 |
显示前 20 字符 | watch |
--all-keys |
所有按键元数据 | keys |
--unsafe-chars |
输出按键字符( |
keys |
--keys "cmd+c,cmd+v" |
自定义快捷键 | keys |
类似 Maccy/Clipy 的剪贴板管理器:复制的内容自动入库,支持增删改查。
snip clip # 显示最近 20 条
snip clip list # 列出全部(--search 搜预览+全文 / --limit N / --json / --pinned)
snip clip show <id> # 查看完整内容并复制到剪贴板(--no-copy 只看不复制)
snip clip add "文本" # 写入剪贴板并入库
snip clip edit <id> "新文本" # 修改内容,同步写入剪贴板
snip clip pin <id> # 置顶(不受上限裁剪影响)
snip clip unpin <id> # 取消置顶
snip clip delete <id> # 删除一条
snip clip clear # 清空全部(默认需确认,--yes/-y 跳过)
snip clip export [<path>] # 导出全部(含全文)为 JSON,默认存桌面
snip clip import <file> # 导入 JSON(同 id 自动跳过;--replace 覆盖)
snip clip list --app Safari # 按来源 App/包名过滤
snip clip list --type text # 按类型过滤(text / image / file)
snip clip stats # 统计:类型/来源 Top/近 7/30 天
snip clip prune --ttl 30 # 清理 30 天前的旧记录(置顶豁免)
snip clip ignore <App> # 该来源不入库(--clear 清空,无参查看)
snip clip sensitive <词> # 含此词的文本不入库(--clear 清空,无参查看)
snip clip show <imgId> # 图片条目可把图片拷回剪贴板
snip clip paste <id> # 复制内容并模拟 Cmd+V 粘贴(需辅助功能权限)
snip clip ui # 交互式 TUI(↑↓选择/输入即搜索/回车复制/v粘贴/p置顶/d删除/u撤销)
snip clip record # 监控模式:复制自动入库
snip clip record --daemon # 后台常驻:随时复制自动记录(日志 ~/Library/Logs/snip/clipd.log)
snip clip stop # 停止后台记录
snip clip status # 查看后台记录状态
snip clip autostart on/off # 开机自启(LaunchAgent)- 历史默认保留最近 500 条(
record --max可调),置顶条目不受裁剪影响 - 相邻相同内容自动去重,只更新时间
- 图片/文件只记录元数据,不保存内容
- 数据位置:
~/Library/Application Support/snip/history/(每条一个.txt+index.json)
snip doctorsnip all然后在任何应用中复制粘贴,观察输出。如果出现 ❌ copy timeout,说明复制失败。
snip test --clipboardsnip test --keyssnip report报告默认保存到 ~/Desktop/snip-report.txt,可以安全提交给 Apple Feedback Assistant。
snip network检查 Wi-Fi(含与路由器协商的连接速率)、DNS、公网 IP 和互联网连通性。Universal Clipboard(通用剪贴板)依赖网络,如果网络不通,跨设备剪贴板同步会失效。
snip network --watch # 持续监控网络状态
snip network --json # JSON 输出snip speed实测下行/上行带宽与延迟:Cloudflare 优先,失败自动回退 Ookla 就近服务器(多服务器探测取可用者)。测速数据不落盘、仅本地显示。
snip speed --source ookla # 指定 Ookla
snip speed --no-upload # 只测下行
snip speed --json # JSON 输出
snip speed --streams 8 # 下载并发数(默认 4)
snip speed --timeout 10 # 每阶段超时秒数(默认 12)测速会消耗少量流量(约下行 25MB + 上行 8MB)。本机未连接 Wi-Fi 时仍可测有线/代理带宽。
- 运行
snip report生成诊断报告 - 打开 Apple Feedback Assistant
- 提交报告时附上
snip-report.txt
swift build
swift run snip --help
swift run snip watch
swift run snip keys
swift run snip doctor
swift run snip report| 版本 | 日期 | 说明 |
|---|---|---|
| v0.1.30 | 2026-09-10 | 修复 clip ui 渲染错位:raw 模式下改用 \r\n(原 \n 不回列导致阶梯错行)、按终端显示单元格宽度(CJK/emoji 算 2 格)裁剪填充,选中行整条反白 |
| v0.1.29 | 2026-09-09 | 新增 snip clip ui 交互式 TUI(零依赖 raw terminal + ANSI 自绘;↑↓/搜索/回车复制/v 粘贴/p 置顶/d 删除 u 撤销,自动增量刷新) |
| v0.1.28 | 2026-09-09 | 图片记录(原始 PNG 落盘,>25MB 仅元数据;clip show 图片可拷回剪贴板)、clip paste <id> 复制并模拟 Cmd+V(需辅助功能权限) |
| v0.1.27 | 2026-09-09 | 剪贴板批量增强:list --app/--type 来源类型过滤、clip stats 统计、clip prune --ttl + record --ttl 自动清理(置顶豁免)、clip ignore/sensitive 忽略来源与敏感词过滤(record 实时生效) |
| v0.1.26 | 2026-09-09 | 剪贴板:--search 升级为全文搜索(预览+完整内容)、新增 clip export/import(JSON 备份/恢复,同 id 幂等跳过,--replace 覆盖) |
| v0.1.25 | 2026-09-09 | 测速巡检修复:JSON duration_s 改四舍五入取整(原整数除法截断丢精度)、无效 --source 给出警告不再静默降级 |
| v0.1.24 | 2026-09-08 | 新增 snip speed 测速(Cloudflare 优先 + Ookla 回退,延迟/下行/上行,--json/--no-upload/--source/--streams/--timeout);snip network 增加 Wi-Fi 连接速率(lastTxRate) |
| v0.1.23 | 2026-09-08 | 记录命令巡检修复:daemon 启动失败如实报错、--interval/--max 透传后台子进程、前台监控单例互斥、stop 超时补 SIGKILL、autostart 校验 launchctl 结果并幂等 |
| v0.1.22 | 2026-09-08 | 修复 clear 后旧条目被守护进程“复活”:写入索引前清理内容文件已不存在的孤儿条目 |
| v0.1.21 | 2026-09-08 | 防重复记录实例:pidfile 归属校验、pgrep 单例登记(pidfile 丢失也能拦住二次启动)、autostart on 自动去重、stop 提示自启状态 |
| v0.1.20 | 2026-09-08 | 记录防断更加固:LaunchAgent KeepAlive 自动拉起、未知参数警告(如 record --daemon + autostart on)、status 断更自检 |
| v0.1.19 | 2026-08-26 | 修复 record --daemon 后台启动失败(argv[0] 为裸名时找不到可执行文件) |
| v0.1.18 | 2026-08-26 | 剪贴板记录后台守护:record --daemon / stop / status / autostart |
| v0.1.17 | 2026-08-26 | 剪贴板历史管理:snip clip 增删改查、置顶、去重、自动入库 |
| v0.1.13 | 2026-08-25 | 热点检测:iPhone USB / 蓝牙热点识别,接口名动态查找 |
| v0.1.12 | 2026-08-25 | 修复 Wi-Fi 接口名硬编码 en0,动态检测 |
| v0.1.11 | 2026-08-25 | 网络诊断:Wi-Fi、DNS、公网 IP、连通性检测 |
| v0.1.10 | 2026-08-24 | 低电量提醒:--warn 发送 macOS 通知 |
| v0.1.9 | 2026-08-24 | 修复电池健康度 0% 和充放电状态误判 |
| v0.1.8 | 2026-08-24 | 电池监控:电量、健康度、温度、循环次数 |
| v0.1.7 | 2026-08-24 | Formula 安装时运行 swift test,bottle 发布脚本 |
| v0.1.6 | 2026-08-24 | 18 个单元测试,GitHub Actions CI,bottle 支持,report 增强 |
| v0.1.5 | 2026-08-24 | 添加版本历史到 README |
| v0.1.4 | 2026-08-23 | 应用过滤、macOS 通知、颜色主题、延迟测试、远程诊断服务器、快捷键冲突检测 |
| v0.1.3 | 2026-08-23 | 三层输出格式化(plain/verbose/json)+ CopyFailureDetector |
| v0.1.2 | 2026-08-23 | 移除帮助示例 |
| v0.1.1 | 2026-08-23 | 修复 Package.swift 测试目标 |
| v0.1.0 | 2026-08-23 | 初始版本:watch / keys / all / doctor / test / stats / report |