SiNZeRo-简记·思行
Sunshine and Imagination

HARNESS / CLAUDE CODE

Claude Code keybindings:把 Ctrl+X 变成 Agent Leader Key

把 Claude Code 的 keybindings 组织成一套 Agent/TUI 控制层,重点覆盖 queueSubmit、diff、subagents、history 与 tmux。

Claude Code 的 ~/.claude/keybindings.json 不只是“改快捷键”。

对 Agent-heavy 的工作流,更有价值的做法是:Ctrl+X 当成一层 Agent control plane,把 diff、排队消息、后台任务、subagent 控制等高频动作收进同一套 chord。

官方文档:https://code.claude.com/docs/en/keybindings

最值得记的默认快捷键

左右滑动查看完整表格 ↔

快捷键 Action 用途
Ctrl+X Enter chat:queueSubmit 排队发消息;Claude 正在工作时不会 interrupt 当前 turn
Ctrl+X Ctrl+K chat:killAgents 停掉当前 session 的所有后台 subagents
Ctrl+X Ctrl+B task:background 把当前 task 放后台,避开 tmux 的 Ctrl+B prefix
Ctrl+G chat:externalEditor 用外部编辑器写长 prompt / spec
Ctrl+S chat:stash 暂存当前 prompt
Ctrl+T app:toggleTodos 看 Claude 当前 todo
Ctrl+O app:toggleTranscript 打开 verbose transcript
Meta+P chat:modelPicker Model picker
Meta+O chat:fastMode Fast mode
Meta+T chat:thinkingToggle Extended thinking

其中最值得记的是:

Ctrl+X Enter

普通 Enter 在 Claude 工作时可能影响当前 turn;queueSubmit 明确表示“这条等前面干完再执行”。对于一边看 Agent 干活、一边继续补要求的工作流,非常自然。

chat:queueSubmit 需要 Claude Code v2.1.247+。

把 Ctrl+X 变成 Agent Leader Key

Claude Code 支持 chord:

ctrl+x d
ctrl+x n
ctrl+x p

每个按键之间最长可以隔 3 秒。

可以把它组织成:

Ctrl+X D       diff panel
Ctrl+X N       diff noise filter
Ctrl+X P       pre-session diff
Ctrl+X T       todos
Ctrl+X O       transcript

Ctrl+X Enter   queue prompt
Ctrl+X Ctrl+K  kill agents
Ctrl+X Ctrl+B  background task
Ctrl+X Ctrl+E  external editor

这样 Ctrl+X 基本就变成了 Claude Code 的 Agent/TUI command layer

Diff panel 是最值得补绑定的一组

Fullscreen renderer 的 /diff panel 现在支持:

  • app:toggleReplTab:打开/关闭 diff panel。
  • app:cycleDiffBase:在 session -> uncommitted -> branch 之间切换比较基准。
  • app:toggleDiffNoiseFilter:隐藏/显示 tests 和 generated files。
  • app:toggleDiffPreSession:展开/折叠 session 开始之前已有的修改。

其中后三类操作很适合 coding agent:可以快速区分“这次 Agent 真改了什么”和 repo 原来就脏的内容。

Diff panel 需要 Claude Code v2.1.260+。

可以加这几个自定义 binding:

{
  "$schema": "https://www.schemastore.org/claude-code-keybindings.json",
  "$docs": "https://code.claude.com/docs/en/keybindings",
  "bindings": [
    {
      "context": "Global",
      "bindings": {
        "ctrl+x d": "app:toggleReplTab",
        "ctrl+x n": "app:toggleDiffNoiseFilter",
        "ctrl+x p": "app:toggleDiffPreSession",
        "ctrl+x t": "app:toggleTodos",
        "ctrl+x o": "app:toggleTranscript"
      }
    }
  ]
}

配置文件修改后会自动 reload,不需要重启 Claude Code。

多 Agent:claude agents 还有单独的 Context

Claude Code v2.1.257+ 有 Agents context。

默认:

Ctrl+S -> agents:switchView
Ctrl+T -> agents:togglePin

用途:

  • switchView:按 state / directory 切换 session grouping。
  • togglePin:pin/unpin 一个 Agent session。

有意思的是 Context 会覆盖同键的 Global/Chat binding。

例如 Agent view 里按 Ctrl+S,执行的是 agents:switchView,而不是普通聊天里的 chat:stash

这意味着 keybindings 可以按 UI state 做不同语义,而不是只能维护一张全局快捷键表。

Prompt history 也能当跨项目 recall

Fullscreen renderer:

Ctrl+R   history search
Ctrl+S   session -> project -> everywhere

所以 Claude Code 的历史搜索实际上可以当一个轻量的 cross-project prompt recall

如果之前写过一个很好用的 debug / review / planning prompt,不一定需要自己再做一套 shell history。

tmux 用户特别注意

Claude Code 官方专门考虑了 terminal multiplexer:

  • Ctrl+B 会撞 tmux prefix,所以 background task 同时提供 Ctrl+X Ctrl+B
  • Ctrl+A 常和 GNU screen 冲突。
  • Ctrl+Z 是 Unix SIGTSTP。

另外下面这些键不要费劲重绑:

Ctrl+C
Ctrl+D
Ctrl+M
Ctrl+[
Ctrl+I
Ctrl+H
CapsLock

它们属于 hardcoded / terminal-level reserved shortcuts。

最小配置

如果只想加最值钱的东西,先加:

Ctrl+X D   diff panel
Ctrl+X N   diff noise
Ctrl+X P   pre-session diff

然后继续使用官方已经给好的:

Ctrl+X Enter      queue message
Ctrl+X Ctrl+K     kill agents
Ctrl+X Ctrl+B     background task
Ctrl+G            external editor
Ctrl+T            todos
Ctrl+O            transcript

核心思路不是“多记几个快捷键”,而是把 Claude Code 从聊天 CLI 变成一个键盘驱动的 Agent console。

Reference

Comments