用 Ghostty + Hammerspoon + Karabiner 并行处理多个 AI 任务的实践
用 Claude Code / Codex 这种 AI 编程助手,一个很爽的场景是多任务并行:
但问题来了:窗口一多,管理就成了瓶颈。
于是就需要一套键盘驱动的窗口管理方案。主流有两种:
| 方案 | 平台 | 特点 |
|---|---|---|
| Tmux | 跨平台(Linux/macOS/终端) | 终端内分屏,会话持久化 |
| Hammerspoon | macOS 原生 | 系统级窗口管理,灵活性更强 |
我选 Hammerspoon,因为它是系统级窗口管理——不只是终端,任意应用都能分屏、切换。而 Tmux 只能管终端内的 session。
如果你主要在 Linux 服务器上工作,或者需要在多台机器上保持一致的体验,Tmux 是更通用的选择。它的 sessions / windows / panes 模型也很强大,配合 prefix 键(默认 Ctrl+b)可以做到:
Ctrl+b %垂直分屏Ctrl+b "水平分屏Ctrl+b 数字切换窗口Ctrl+b ddetach 会话
但对于 macOS 用户来说,Hammerspoon + Karabiner 的组合更贴合系统,体验也更顺滑。
用过的终端不少:iTerm2、Alacritty、Kitty……最后锁定 Ghostty,原因很简单:
但真正让我离不开的,是围绕 Ghostty 搭建的**「无鼠标工作流」**。
# 不需要 Tab 栏
window-show-tab-bar = never
# Cmd+N 新窗口,Cmd+T 禁用(不用 Tab)
keybind = cmd+n=new_window
keybind = cmd+t=unbind
核心理念:一个任务一个窗口,用完即关。不需要 Ctrl+Tab 切换得眼都花。
# 字体:FiraCode Nerd Font,14px
font-family = "FiraCode Nerd Font"
font-size = 14
# 轻微透明,视觉更柔和
background-opacity = 0.96
# 窗口内边距
window-padding-x = 12
window-padding-y = 10
cursor-style = block
cursor-style-blink = false
copy-on-select = clipboard # 选中即复制
不用鼠标,怎么分屏?Hammerspoon。
我的核心快捷键:
| 快捷键 | 功能 |
|---|---|
Hyper + H |
左半屏 |
Hyper + J |
下半屏 |
Hyper + K |
上半屏 |
Hyper + L |
右半屏 |
Hyper + Y/U/I/O |
四角布局 |
Hyper + M |
最大化 |
Hyper + N |
居中 |
Hyper = Shift + Ctrl + Alt + Cmd(右键 Command 映射)
效果:
┌─────────────┬─────────────┐
│ │ │
│ Hyper+L │ Hyper+L │
│ │ │
├─────────────┼─────────────┤
│ │ │
│ Hyper+J │ Hyper+J │
│ │ │
└─────────────┴─────────────┘
一键切换,干净利落。
键盘是 HHKB BLE(YDKB 改),Karabiner 配置:
| 按键 | 映射 |
|---|---|
| Right Command | Hyper |
| Right Shift | Small Hyper |
| Tab(按住) | Left Hyper |
| Space(按住) | SpaceFN 模式 |
Space + H/J/K/L → 方向键 ←↓↑→
Space + U/O → Home/End
Space + Y/N → Page Up/Down
Space + W/B → 词尾/词首(IDE 神技)
Space + D → Delete
Space + E → Escape
Space + Enter → Option+Enter(IDE 快速修复)
按一下空格 = 普通空格,按住空格 = 进入方向键模式。这才是真正的「手不离位」。
Left Control = 切换输入法(Rime 小鹤音形)MacBook 内置键盘同理:Caps Lock 单击 = 切输入法。
偶尔想解放双手?双语音方案:
| 工具 | 场景 |
|---|---|
| Typeless | 语音触发快捷键,说"新建窗口"自动执行 |
| Spokenly | 实时语音转文字,写文档时直接口述 |
Typeless 配合 Hammerspoon可以做很多事,比如:
┌─────────────────────────────────────────────────┐
│ Ghostty(终端) │
│ ├── 禁用 Tab,全部新窗口 │
│ ├── Cmd+N 新窗口 │
│ └── 选中即复制 │
├─────────────────────────────────────────────────┤
│ Hammerspoon(窗口管理) │
│ ├── Hyper + HJKL 分屏 │
│ ├── Hyper + YUO 角落布局 │
│ └── Hyper + M 最大化 │
├─────────────────────────────────────────────────┤
│ Karabiner(键盘映射) │
│ ├── Right Cmd → Hyper │
│ ├── Space → SpaceFN(方向键) │
│ └── Control 单击 → 切输入法 │
├─────────────────────────────────────────────────┤
│ 语音输入(Typeless + Spokenly) │
│ ├── 语音触发快捷键 │
│ └── 实时语音转文字 │
└─────────────────────────────────────────────────┘
这套组合下来,多窗口并行变得更顺手:
Ghostty 是入口,Hammerspoon 是骨架,Karabiner 是肌肉,语音是 Bonus。
工具不重要,习惯才是关键。
~/macos-automation/terminal/ghostty/config~/.hammerspoon → ~/macos-automation/hammerspoon/~/.config/karabiner/karabiner.json> 可在下面留言(需要有 GitHub 账号)