Claude Code 的快捷键按 Context(上下文层) 分层。同一个键在不同 Context 下行为完全不同。你当前焦点在哪个 Context,就用哪套键。这个设计跟 Vim 的模式切换逻辑类似——不理解当前在哪个层,按键就会"没反应"或"乱跑"。
下面按 14 个 Context 分层全量列出,然后是 Vim 模式、Chord 组合键和自定义方法。
不管你在输入框、设置界面还是确认框,这些键都能用。
| 快捷键 | 作用 | 备注 |
|---|---|---|
| Ctrl+C | 中断当前操作 | 正在跑的工具会被终止 |
| Ctrl+D | 退出 Claude Code | 等同于输入 /exit |
| Ctrl+L | 清屏 | 只清显示,不清对话历史 |
| Ctrl+T | 切换主题(亮/暗) | 跟随终端配色 |
| Ctrl+O | 打开 transcript 文件 | 用系统默认编辑器打开对话记录 |
| Ctrl+R | 历史搜索 | 搜索之前输入过的命令/消息 |
| 快捷键 | 作用 | 备注 |
|---|---|---|
| Enter | 提交消息 | 发送给 Claude |
| Escape | 取消当前输入 / 退出 Vim INSERT 模式 | |
| Shift+Tab | 切换权限模式 | default → acceptEdits → plan → bypass → auto 循环 |
| Up / Down | 浏览输入历史 | 跟终端的历史功能一样 |
| Ctrl+_ | 撤销上一次编辑 | 输入框内的撤销,不是文件撤销 |
| Ctrl+G | Goto 跳转 | |
| Ctrl+S | 保存 | |
| Space | 语音输入 | 需要在设置中启用语音功能 |
当你在输入框打 / 触发补全菜单后,这套键接管:
| 快捷键 | 作用 |
|---|---|
| Tab | 接受当前选中的补全项 |
| Escape | 关闭补全菜单,回到 Chat 层 |
| Up / Down | 在补全选项间切换 |
按 /settings 进入设置界面后的键位:
| 快捷键 | 作用 |
|---|---|
| J / K | 上下导航(跟 Vim 一样) |
| Space | 切换开关项(toggle) |
| Enter | 确认选择 |
| / | 搜索设置项 |
| R | 刷新设置列表 |
| Escape | 退出设置,回到 Chat |
工具权限确认弹出时的键位。这是你跟 Claude Code 交互最频繁的 Context 之一。
| 快捷键 | 作用 | 备注 |
|---|---|---|
| Y | 确认执行 | 允许这次工具调用 |
| N | 拒绝执行 | |
| Enter | 确认(同 Y) | |
| Escape | 拒绝(同 N) | |
| Up / Down | 在选项间切换 | 有多个选项时 |
| Tab | 切换焦点 | |
| Ctrl+E | 编辑工具参数 | 修改后再执行,非常有用 |
| Ctrl+D | 查看详情 | 展开完整的工具调用参数 |
Ctrl+E 是个被低估的键。 比如 Claude 要执行 git push origin main,你想改成 git push origin dev——按 Ctrl+E 直接改参数,不用拒绝后重新说一遍。
| 快捷键 | 作用 |
|---|---|
| PageUp | 向上翻页 |
| PageDown | 向下翻页 |
查看文件 diff 时的键位:
| 快捷键 | 作用 |
|---|---|
| Y | 接受变更 |
| N | 拒绝变更 |
| Escape | 退出 diff 查看 |
查看权限设置列表时的键位:
| 快捷键 | 作用 |
|---|---|
| J / K | 上下导航 |
| Enter | 选择/编辑 |
| D | 删除选中项 |
| Escape | 退出列表 |
Ctrl+R 触发历史搜索后的键位:
| 快捷键 | 作用 |
|---|---|
| 继续输入 | 过滤历史记录 |
| Up / Down | 浏览匹配项 |
| Enter | 选中并填入 |
| Escape | 退出搜索 |
后台任务完成通知弹出时:
| 快捷键 | 作用 |
|---|---|
| Enter | 确认并关闭通知 |
| Escape | 忽略通知 |
多标签页场景下的键位:
| 快捷键 | 作用 |
|---|---|
| Tab | 切换到下一个标签页 |
| Shift+Tab | 切换到上一个标签页 |
| Left / Right | 在标签页之间左右切换 |
查看历史对话记录时的键位:
| 快捷键 | 作用 |
|---|---|
| Ctrl+E | 编辑当前对话记录 |
| Ctrl+C / Escape / Q | 退出对话记录查看 |
| 快捷键 | 作用 |
|---|---|
| Ctrl+B | 将当前任务放到后台运行 |
| 快捷键 | 作用 |
|---|---|
| Ctrl+T | 打开/切换主题选择器 |
Chord 是两步按键——先按第一组,松开后再按第二组。不是同时按。
| 组合 | 操作方式 | 作用 |
|---|---|---|
| Ctrl+X → Ctrl+K | 先按 Ctrl+X 松开,再按 Ctrl+K | 杀死当前 Agent(强制终止正在运行的子任务) |
| Ctrl+X → Ctrl+E | 先按 Ctrl+X 松开,再按 Ctrl+E | 用外部编辑器编辑当前输入框内容 |
Ctrl+X → Ctrl+E 适合长输入。 当你需要写一段很长的 prompt,在终端输入框里编辑很痛苦——没有换行、没有代码高亮。按 Ctrl+X → Ctrl+E 会打开你的默认编辑器($EDITOR),写完保存关闭后内容自动填入输入框。
在设置中启用 Vim mode 后,输入框支持完整的 Vim 键位。如果你是 Vim 用户,这能极大提升编辑体验;如果你不用 Vim,可以跳过这部分。
正常输入文字。所有键都是输入字符,跟普通输入框一样。
退出 INSERT:按 Escape 回到 NORMAL 模式。
| 键 | 效果 |
|---|---|
| i | 光标前插入 |
| a | 光标后插入 |
| o | 下方新建一行并进入 INSERT |
| I | 行首插入 |
| A | 行尾插入 |
| O | 上方新建一行并进入 INSERT |
| 键 | 移动到 |
|---|---|
| h / j / k / l | 左 / 下 / 上 / 右 |
| w / W | 下一个词首(小写区分标点,大写只认空格) |
| b / B | 上一个词首 |
| e / E | 当前词尾 |
| 0 | 行首 |
| ^ | 行首第一个非空字符 |
| $ | 行尾 |
| gg | 文件开头 |
| G | 文件末尾 |
操作符 + Motion = 动作。比如 dw = 删除(d)到下一个词首(w)。
| 键 | 作用 | 常见组合 |
|---|---|---|
| d | 删除 | dw 删一个词、d$ 删到行尾、dd 删整行 |
| c | 修改(删除并进入 INSERT) | cw 改一个词、cc 改整行 |
| y | 复制 | yw 复制一个词、yy 复制整行 |
| 对象 | 范围 | 示例 |
|---|---|---|
| iw / aw | 词内 / 词+周围空格 | diw 删除光标所在的词 |
| i" / a" | 双引号内 / 含引号 | ci" 改双引号内的内容 |
| i( / a( | 括号内 / 含括号 | di( 删除括号内内容 |
| i{ / a{ | 花括号内 / 含花括号 | ci{ 改花括号内内容 |
| ib | 等同 i( | |
| aB | 花括号含花括号 |
| 键 | 作用 |
|---|---|
| f + 字符 | 跳到行内下一个该字符处 |
| F + 字符 | 跳到行内上一个该字符处 |
| t + 字符 | 跳到该字符前一格 |
| T + 字符 | 反向跳到该字符后一格 |
| ; | 重复上次 f/F/t/T |
| , | 反向重复上次 f/F/t/T |
| 键 | 作用 | 说明 |
|---|---|---|
| . | 重复上次操作 | Vim 最强的键,一个点重复任意复杂操作 |
| u | 撤销 | |
| Ctrl+R | 重做 | |
| p | 粘贴(光标后) | |
| P | 粘贴(光标前) | |
| r + 字符 | 替换光标下的字符 | 不进入 INSERT 模式 |
| x | 删除光标下的字符 | |
| dd | 删除整行 | |
| yy | 复制整行 | |
| cc | 修改整行 |
编辑 ~/.claude/keybindings.json:
[
{
"key": "ctrl+s",
"command": "submit",
"context": "chat"
},
{
"key": "ctrl+shift+c",
"command": "compact",
"context": "chat"
}
]每条记录 3 个字段:
key:键位组合,格式是modifier+key,modifier 可以是 ctrl、shift、alt、metacommand:要执行的命令名context:在哪个 Context 层生效(chat / settings / confirmation / global 等)
自定义键位会覆盖同 Context 下的默认绑定。如果你绑了 ctrl+c 到其他命令,原来的"中断"功能就没了——除非你在另一个 Context 层重新绑定。
用内置 Skill 也能管理:输入 /keybindings 会进入交互式的快捷键配置界面。