# 剪贴板 基于 Electron 的轻量剪贴板管理器,灵感来自 [Ditto](https://github.com/sabrogden/Ditto)。 ## 快速开始 环境要求:Windows 10 / 11 · Node.js ≥ 18 ```bash npm install npm start ``` 启动后程序常驻系统托盘。复制任意文本或图片即自动记录;单击托盘图标唤出窗口,选中条目后双击或按回车写入系统剪贴板,再切到目标窗口 `Ctrl+V` 粘贴。 如安装时 `better-sqlite3` 编译失败,可安装 [Visual Studio Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/) 后执行 `npm run rebuild`。 ## 功能 - **自动记录**:默认每秒轮询系统剪贴板,文本和图片都自动入库 - **收藏**:独立 Tab 永久存放,源记录被删除后仍可复制,上限 1000 条 - **搜索**:实时过滤文本,支持中文子串 - **置顶**:点过「复制」的项自动置顶,避免被自动清理或「清空历史」误删 - **全局唤起**:默认 `Ctrl+Alt+V`,设置里可改或禁用 - **主题**:6 套主题 + 5 种强调色,支持跟随系统 - **开机自启动**、单实例、窗口置顶切换 ## 快捷键 全局:默认 `Ctrl+Alt+V` 唤起或隐藏历史窗口(设置中可更改或禁用)。 主窗口内: | 快捷键 | 行为 | | --- | --- | | `↑` `↓` | 上下选择 | | `PageUp` `PageDown` | 翻页 | | `Home` `End` | 跳到首项或末项 | | `Enter` | 复制当前选中项 | | `1` ~ `9` | 直接复制对应项 | | `Ctrl+L` | 聚焦搜索框 | | `F5` | 刷新列表 | | `Esc` | 清空搜索或隐藏窗口 | | `F12` | 开发者工具 | 设置窗口:`←` / `→` 切换标签页,`Esc` 关闭。 ## 数据存储 默认存放在 `D:\Clipboard Data`,独立于项目目录: ``` D:\Clipboard Data\ ├── config.json ├── history.db └── favorites.db ``` - D 盘不可用时自动降级到 `%USERPROFILE%\Clipboard Data` - 设置 → 「更改…」可迁到其他位置;「打开文件夹」直达目录 - 启动前设 `CLIPBOARD_APP_DATA_DIR=D:\some\dir` 可临时覆盖 - 首次启动会自动从 `%USERPROFILE%\.clipboard-app` 迁移历史数据 ## 开发 ```bash npm test # 单元测试(自动发现 test/*.test.js) npm run test:ui # UI 测试(需 Electron 窗口) npm run test:all # 上面两套一起跑 npm run rebuild # 重新编译 better-sqlite3 到当前 Electron ABI npm run build # 打包为 NSIS 安装包 npm run build:dir # 仅生成解压目录 ``` 测试由 `test/run.js` 自动发现,新增用例放入 `test/.test.js` 即可。 ## 常见问题 **点选条目后没有自动粘贴** 设计如此:只写入系统剪贴板,需手动 `Ctrl+V`。避免隐藏窗口导致的焦点闪烁。 **全局快捷键无效** 组合键被其他程序占用。在设置中更换档位,或释放占用方后重启。 **看不到托盘图标** Windows 11 默认折叠托盘图标,需在「设置 → 系统 → 通知」中开启。 **数据库占用或损坏** 可直接删除 `D:\Clipboard Data` 下的 db 文件,重启后自动重建(配置和收藏数据除外)。 ## 已知限制 - 不自动粘贴,必须手动 `Ctrl+V` - 收藏上限 1000 条 ## 致谢 - 灵感来自 [Ditto](https://github.com/sabrogden/Ditto) - 开发者:[关济寰](https://www.guanjihuan.com/about)