终端文本增强插件 — 中文分词跳转 · 图片粘贴 · Cmd+Z 撤销
Terminal enhancement for macOS — Chinese word segmentation · clipboard image paste · Cmd+Z undo
iTerm2 · Tabby · Ghostty · tmux
| 功能 | 按键 | 实现层 | 终端要求 |
|---|---|---|---|
| 中文分词跳转 | Option+←/→ | zsh widget + jieba daemon | 任意终端 (zsh) |
| 中文分词删除 | Option+Delete | zsh widget + jieba daemon | 任意终端 (zsh) |
| 剪贴板图片粘贴 | Cmd+V | iTerm2 Python 插件 / Tabby 插件 | iTerm2 / Tabby |
| 剪贴板图片粘贴 | Ctrl+V / Cmd+V | tmux 按键绑定 + shell 脚本 | 任意终端 + tmux |
| Cmd+Z 撤销 | Cmd+Z | iTerm2 plist 键映射 / Tabby 插件 | iTerm2 / Tabby |
在终端命令行中按 Option+Arrow 可以按中文词语跳转光标,而非逐字移动。基于 jieba 分词,常驻 daemon 通过 Unix socket 响应。
按 Cmd+V 时自动检测剪贴板中是否有图片,有则保存为文件并粘贴路径,无则正常粘贴文本。适用于 AI 编程助手、Markdown 编辑等场景。
支持三种终端环境:
- iTerm2:通过 Python API 插件拦截 Cmd+V
- Tabby:通过 Electron 插件拦截粘贴
- tmux(推荐):通过 tmux 按键绑定 + shell 脚本,适用于任意终端(Ghostty、Alacritty 等)
npm install -g github:ZhenningLang/paw或手动安装:
git clone https://github.com/ZhenningLang/paw.git
cd paw
./install.sh安装完成后运行 paw 管理功能。
- macOS
- zsh(分词功能)
- iTerm2 + Python API 已启用,或 Tabby(图片粘贴 / Cmd+Z 功能),或 tmux(图片粘贴)
- pngpaste:
brew install pngpaste(图片粘贴必需) - (可选) Node.js + npm(构建 Tabby 插件)
Settings (Cmd+,) → General → Magic → 勾选 Enable Python API → 重启 iTerm2
安装脚本会自动检测 Tabby 并安装 tabby-paw 插件到 ~/Library/Application Support/tabby/plugins/。也可通过 paw 交互式界面启停。安装后重启 Tabby 生效。
Tabby 插件提供:
- Cmd+Z → 发送 undo 控制字符 (0x1f)
- Cmd+V → 检测剪贴板图片,保存后粘贴路径
适用于 Ghostty、Alacritty 等没有插件系统的终端。通过 paw CLI 启用后,在 tmux 中按 Ctrl+V 即可粘贴图片路径或普通文本。
启用方式:运行 paw,选择 "tmux image paste" 启用。会自动安装脚本并配置 ~/.tmux.conf。
如果使用 Ghostty 并希望 Cmd+V 触发,在 Ghostty 配置中添加:
keybind = cmd+v=text:\x16
这会将 Cmd+V 映射为 Ctrl+V,从而被 tmux 拦截处理。
paw # 交互式主界面(查看状态、启停功能)
paw status # 非交互式状态查看
paw diagnose # 诊断 + 自动修复
paw daemon start|stop|restart|status~/.config/paw/config.json:
{
"paste_image": {
"save_directory": "~/.config/paw/images",
"filename_format": "%Y%m%d_%H%M%S",
"output_format": "{path}"
}
}| 选项 | 说明 | 默认值 |
|---|---|---|
save_directory |
图片保存目录 | ~/.config/paw/images |
filename_format |
文件名时间格式 (strftime) | %Y%m%d_%H%M%S |
output_format |
输出模板,变量:{path} {filename} {dir} |
{path} |
~/.config/paw/
├── paw_cli.py # CLI 管理工具
├── paw_segmenter.py # jieba 分词 daemon(Unix socket)
├── paw.zsh # zle widget + 按键绑定
├── paw.py # iTerm2 图片粘贴插件
├── paw-tmux-paste.sh # tmux 图片粘贴脚本
├── venv/ # Python 虚拟环境 (jieba)
├── config.json # 用户配置
├── paw.sock # daemon socket
├── paw.pid # daemon PID
└── images/ # 粘贴的图片
~/Library/Application Support/tabby/plugins/node_modules/tabby-paw/
├── package.json # Tabby 插件描述
└── dist/index.js # Tabby 插件(Cmd+Z + 图片粘贴)
分词功能链路:按键 → zsh widget → nc -U socket → jieba daemon → 返回新光标位置 → zle 更新
Option+Arrow 没反应?
运行 paw diagnose,自动检测 daemon、zshrc、jieba 状态并修复。
图片粘贴不工作?
- iTerm2:确认 Python API 已启用,运行
paw diagnose检查。 - Tabby:确认 tabby-paw 插件已安装(
paw status查看),重启 Tabby。 - tmux:确认
pngpaste已安装(brew install pngpaste),运行paw diagnose检查脚本和 tmux.conf 配置。 - Ghostty + tmux:确认 Ghostty 配置中添加了
keybind = cmd+v=text:\x16,并重启 Ghostty。
MIT