# zcliper **Repository Path**: zyf/zcliper ## Basic Information - **Project Name**: zcliper - **Description**: mac os 上面的命令行粘贴板管理工具。 提供模糊检索的功能 - **Primary Language**: Swift - **License**: MulanPSL-1.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-09-06 - **Last Updated**: 2022-05-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # zcliper Mac OS 上面用于管理粘贴板的命令行工具 ## 组件说明 ### zcliperd 项目 用于管理粘贴板的服务端守护进程 构建方法: ``` swift build -c release ``` 启动守护进程 ``` zcliperd 50 /tmp/zcliper.sock ``` 这是说保存 50 条历史记录,并使用 /tmp/zcliper.sock 当做本地 unix socket 用于和客户端通信 ### zc 工具 客户端命令行工具 * 依赖安装: `brew install fzf pbcopy` 另外 zc 使用了 python3 ,如果没有安装需要自行安装 * 使用方法: `zc /tmp/cliper.sock` 连接刚刚守护进程创建的 socket 进入粘贴板历史筛选界面 ## 工作原理 > 原理图 ``` + - - - - - - - - - -+ ' zcliperd daemon: ' ' ' ' +----------------+ ' ' | snippet 1 | ' ' +----------------+ ' ' +----------------+ ' ' | snippt 2 | ' ' +----------------+ ' ' +----------------+ ' ' | ... | ' ' +----------------+ ' ' ' + - - - - - - - - - -+ +----------+ get snippet list +------------------+ format +---------------------+ | | ------------------> | zc | --------> | fzf | | | +------------------+ +---------------------+ | | | | zcliperd | | filter one snippet | | v | | collect snipptes +------------------+ write +---------------------+ | | <------------------ | system clipboard | <-------- | pbcopy | +----------+ +------------------+ +---------------------+ ``` > 说明 1. 守护进程会定时(目前是每隔 0.75 秒)判断粘贴板是否有变化。发生变化的时候会将历史保存在内存的队列里面 2. 客户端使用 zc 指令从守护进程获取所有的粘贴片段历格式化后发送给 fzf 做模糊检索或者筛选 3. fzf 筛选完成后发送给 pbcopy 写入系统粘贴板 这样以后就可以用系统快捷键 cmd+v 来实现粘贴了 ## 动图演示 ![演示](演示.gif) 1. 随便复制一些文字他们将被记录在 zc 列表里面 2. 输入 zc <你的 socket 文件路径> 叫出历史筛选界面 (我在动图里面为了方便修改了 zc 脚本使用了固定路径) 3. 利用 fzf 选择或者筛选你需要的条目回车确定 4. 使用 cmd + v 粘贴到你需要的地方 ## 添加 zsh 的 esc-esc 快捷键使用 zc ``` cp zcliper-key-bindings.zsh ~/.zc-key-bindings.zsh echo '[ -f ~/.zc-key-bindings.zsh ] && source ~/.zc-key-bindings.zsh' > ~/.zshrc source ~/.zshrc ```