
Keybindings 把 Claude Code 的快捷键从固定表变成可配置的本地 JSON。本篇拆解 context、keystroke、action、解绑、保留键、tmux/Option/Vim/fullscreen 边界,并给出一套可以直接照做的配置顺序。
/keybindings,它会创建或打开 ~/.claude/keybindings.json,改完后无需重启,Claude Code 会自动检测并应用。1bindings 数组;数组里的每个 block 都声明一个 context,再把某些 keystroke 映射到 action。官方示例里,Chat context 可以把 ctrl+e 绑定到 chat:externalEditor,也可以把 ctrl+u 设置成 null 来解绑。1
{
"$schema": "https://www.schemastore.org/claude-code-keybindings.json",
"$docs": "https://code.claude.com/docs/en/keybindings",
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+e": "chat:externalEditor",
"ctrl+u": null
}
}
]
}context 不是装饰字段。Global 作用于整个应用,Chat 只管主输入区,Autocomplete 只在补全面板打开时生效,Confirmation 管权限和确认弹窗,Task 管后台任务,DiffDialog 管 diff 查看器,Scroll 管 fullscreen 模式下的滚动和选择。官方文档列出的 context 超过十个,所以同一个按键在不同界面可以有不同含义。1namespace:action 的形式命名。比如 chat:submit 发送消息,app:toggleTodos 显示任务列表,task:background 把当前任务转入后台。这个命名方式比「某个按键做什么」更稳定,因为你真正绑定的是 Claude Code 内部动作,而不是终端层面的字符。1| 场景 | 默认按键 | 动作 | 为什么重要 |
|---|---|---|---|
| 中断当前操作 | Ctrl+C | app:interrupt | 它是硬编码中断键,不能重绑;长任务跑偏时第一时间用它。1 |
| 退出 Claude Code | Ctrl+D | app:exit | 同样属于保留快捷键,不能改成别的 action。1 |
| 打开外部编辑器 | Ctrl+G 或 Ctrl+X Ctrl+E | chat:externalEditor | 长 prompt、复杂 diff 描述、批量指令更适合丢进编辑器写。1 |
| 插入换行 | Ctrl+J | chat:newline | 它是跨终端稳定方案;Shift+Enter 是否可用取决于终端配置。2 |
| 切换权限模式 | Shift+Tab | chat:cycleMode / confirm:cycleMode | 输入区和确认弹窗各有对应 action,别只改其中一个。1 |
| 后台化当前任务 | Ctrl+B 或 Ctrl+X Ctrl+B | task:background | 官方给了 Ctrl+X Ctrl+B,用于避开 tmux 的 Ctrl+B prefix 冲突。1 |
| 查看 transcript | Ctrl+O | app:toggleTranscript | fullscreen 模式下,原生 scrollback 看不到 alternate screen 里的内容,transcript 是回看入口。3 |
ctrl / control、shift、alt / opt / option / meta,以及 cmd / command / super / win。但 cmd 组只有在终端上报 Super modifier 时才会被检测到,比如支持 Kitty keyboard protocol 或 xterm modifyOtherKeys mode 的终端;想跨终端稳定,优先用 ctrl 或 meta。1ctrl+k ctrl+skeybindings.json 里写 meta+p,Claude Code 可能根本收不到这个信号。2null 不是删除字段,是主动解绑null:{
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+s": null
}
}
]
}ctrl+x ctrl+k 和 ctrl+x ctrl+e,再把 ctrl+x 绑定成 chat:newline。1null 当成「冲突管理工具」,而不是随手清空默认键。尤其是 tmux 用户:Ctrl+B 和 tmux prefix 冲突,Claude Code 文档也把它列为 terminal multiplexer conflict;但 task:background 还有 Ctrl+X Ctrl+B 这个默认 chord,可用它绕开冲突。1{
"bindings": [
{
"context": "Task",
"bindings": {
"ctrl+b": null,
"ctrl+x ctrl+b": "task:background"
}
}
]
}/doctor:三个边界条件chat:cancel。1scroll:pageUp、scroll:pageDown、selection:copy、selection:extendDown 都归到 Scroll context;Fullscreen 文档也提示,在 alternate screen buffer 中,原生命令行 scrollback 和搜索会变,回看通常要通过 Ctrl+O 进入 transcript。13/doctor 可以查看这些 keybinding warnings。1claude --version,确认版本不低于 v2.1.18。自定义快捷键从这个版本开始可用。1/keybindings,让 Claude Code 创建或打开 ~/.claude/keybindings.json。不要一开始就从别人的配置里复制几十行。1Chat、Task、Confirmation 这些不同 context 里的行为。keybindings.json 一份文件能解决的。2/doctor。如果它提示 reserved shortcut、duplicate binding 或 multiplexer conflict,先修这些基础问题,再去调更细的肌肉记忆。1
/doctor 看 warning。1docs.anthropic.com
docs.anthropic.com
docs.anthropic.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.