Claude Code 允许通过 ~/.claude/keybindings.json 完全自定义键盘快捷键,修改后无需重启立即生效。运行 /keybindings 创建或编辑配置文件,使用 bindings 数组按上下文(如 Chat、Global)指定按键映射,通过 action 名称如 chat:submit 绑定功能。支持解绑默认快捷键(设为 null),保留快捷键 Ctrl+C/Ctrl+D 不可修改,Vim 模式下快捷键独立工作。配置自动检测,运行 /doctor 检查错误和冲突。
Claude Code 快捷键怎么配置 - 自定义键盘操作绑定方法 #
运行 /keybindings 创建或打开配置文件 ~/.claude/keybindings.json,对 Claude Code 的快捷键进行完全自定义。修改后无需重启即时生效。 需要 Claude Code v2.1.18 或更高版本,可用 claude --version 确认版本。
配置文件格式 #
配置文件包含一个 bindings 数组,每个元素指定一个上下文和该上下文下的按键映射:
| 字段 |
说明 |
$schema |
可选的 JSON Schema URL,供编辑器自动补全 |
$docs |
可选的文档 URL |
bindings |
按上下文分组的绑定数组 |
这个示例将 Ctrl+E 绑定为在 Chat 中打开外部编辑器,同时解绑 Ctrl+U:
{
"$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
}
}
]
}
值为 null 表示解绑该快捷键。配置文件改动会自动检测并应用,无需手动重启。
所有上下文 #
每个绑定块指定一个 context(上下文),绑定只在该上下文激活时生效:
| Context |
说明 |
Global |
应用全局生效 |
Chat |
主聊天输入区 |
Autocomplete |
自动补全菜单打开时 |
Settings |
设置菜单 |
Confirmation |
权限/确认对话框 |
Tabs |
Tab 导航组件 |
Help |
帮助菜单可见时 |
Transcript |
文本记录查看器 |
HistorySearch |
历史搜索模式(Ctrl+R) |
Task |
后台任务运行时 |
ThemePicker |
主题选择对话框 |
Attachments |
图片/附件栏导航 |
Footer |
底部状态导航(任务、团队、diff) |
MessageSelector |
回退/摘要对话框消息选择 |
DiffDialog |
Diff 查看器导航 |
ModelPicker |
模型选择器推理力度调整 |
Select |
通用选择/列表组件 |
Plugin |
插件对话框(浏览、发现、管理) |
Scroll |
全屏模式下的对话滚动和文本选择 |
Doctor |
/doctor 诊断界面 |
可用 Action 完整列表 #
Action 采用 namespace:action 格式,例如 chat:submit 发送消息、app:toggleTodos 显示任务列表。每个上下文有各自可用的 actions。
App 操作(Global 上下文) #
| Action |
默认键 |
说明 |
app:interrupt |
Ctrl+C |
取消当前操作 |
app:exit |
Ctrl+D |
退出 Claude Code |
app:redraw |
未绑定 |
强制重新渲染终端 |
app:toggleTodos |
Ctrl+T |
切换任务列表显示 |
app:toggleTranscript |
Ctrl+O |
切换详细记录显示 |
历史记录操作 #
| Action |
默认键 |
说明 |
history:search |
Ctrl+R |
打开历史搜索 |
history:previous |
↑ |
上一条历史 |
history:next |
↓ |
下一条历史 |
Chat 操作(Chat 上下文) #
| Action |
默认键 |
说明 |
chat:cancel |
Escape |
取消当前输入 |
chat:clearInput |
Ctrl+L |
强制全屏重绘,保留输入。在全屏渲染中,两秒内按两次执行 /clear |
chat:clearScreen |
Cmd+K |
在全屏渲染中,两秒内按两次执行 /clear |
chat:killAgents |
Ctrl+X Ctrl+K |
终止当前会话中所有运行的后台子代理 |
chat:cycleMode |
Shift+Tab* |
循环切换权限模式 |
chat:modelPicker |
Meta+P |
打开模型选择器 |
chat:fastMode |
Meta+O |
切换快速模式 |
chat:thinkingToggle |
Meta+T |
切换扩展思考模式 |
chat:submit |
Enter |
提交消息 |
chat:newline |
Ctrl+J |
插入换行(不提交) |
chat:undo |
Ctrl+_、Ctrl+Shift± |
撤销上一步 |
chat:externalEditor |
Ctrl+G、Ctrl+X Ctrl+E |
在外部编辑器中打开 |
chat:stash |
Ctrl+S |
暂存当前提示词 |
chat:imagePaste |
Ctrl+V(Windows 为 Alt+V) |
粘贴图片 |
*Windows 不带 VT 模式时(Node < 24.2.0 / < 22.17.0,Bun < 1.2.23),默认为 Meta+M。
语音操作(Chat 上下文,启用语音输入时) #
| Action |
默认键 |
说明 |
voice:pushToTalk |
Space(按住或点击,取决于 /voice 模式) |
按住说话 |
自动补全操作(Autocomplete 上下文) #
| Action |
默认键 |
说明 |
autocomplete:accept |
Tab |
接受建议 |
autocomplete:dismiss |
Escape |
关闭菜单 |
autocomplete:previous |
↑ |
上一个建议 |
autocomplete:next |
↓ |
下一个建议 |
确认对话框操作(Confirmation 上下文) #
| Action |
默认键 |
说明 |
confirm:yes |
Y、Enter |
确认 |
confirm:no |
N、Escape |
拒绝 |
confirm:previous |
↑ |
上一个选项 |
confirm:next |
↓ |
下一个选项 |
confirm:nextField |
Tab |
下一个字段 |
confirm:previousField |
未绑定 |
上一个字段 |
confirm:toggle |
Space |
切换选择 |
confirm:cycleMode |
Shift+Tab |
循环切换权限模式 |
confirm:toggleExplanation |
Ctrl+E |
切换权限详情说明 |
权限操作(Confirmation 上下文中的权限对话框) #
| Action |
默认键 |
说明 |
permission:toggleDebug |
未绑定 |
切换权限调试信息。v2.1.146 移除了之前默认的 Ctrl+D 以避免与 app:exit 冲突 |
文本记录操作(Transcript 上下文) #
| Action |
默认键 |
说明 |
transcript:toggleShowAll |
Ctrl+E |
切换显示全部内容 |
transcript:exit |
q、Ctrl+C、Escape |
退出记录查看 |
历史搜索操作(HistorySearch 上下文) #
| Action |
默认键 |
说明 |
historySearch:next |
Ctrl+R |
下一个匹配 |
historySearch:accept |
Escape、Tab |
接受选择 |
historySearch:cancel |
Ctrl+C |
取消搜索 |
historySearch:execute |
Enter |
执行选中命令 |
historySearch:cycleScope |
Ctrl+S |
循环切换范围:会话、项目、全局 |
任务操作(Task 上下文) #
| Action |
默认键 |
说明 |
task:background |
Ctrl+B |
将当前任务放到后台 |
主题操作(ThemePicker 上下文) #
| Action |
默认键 |
说明 |
theme:toggleSyntaxHighlighting |
Ctrl+T |
切换代码语法高亮 |
帮助操作(Help 上下文) #
| Action |
默认键 |
说明 |
help:dismiss |
Escape |
关闭帮助菜单 |
Tabs 操作(Tabs 上下文) #
| Action |
默认键 |
说明 |
tabs:next |
Tab、→ |
下一个标签 |
tabs:previous |
Shift+Tab、← |
上一个标签 |
附件操作(Attachments 上下文) #
| Action |
默认键 |
说明 |
attachments:next |
→ |
下一个附件 |
attachments:previous |
← |
上一个附件 |
attachments:remove |
Backspace、Delete |
删除选中附件 |
attachments:exit |
↓、Escape |
退出附件导航 |
| Action |
默认键 |
说明 |
footer:next |
→ |
下一个 footer 项 |
footer:previous |
← |
上一个 footer 项 |
footer:up |
↑ |
向上导航(顶部时取消选择) |
footer:down |
↓ |
向下导航 |
footer:openSelected |
Enter |
打开选中项 |
footer:clearSelection |
Escape |
清除选择 |
消息选择操作(MessageSelector 上下文) #
| Action |
默认键 |
说明 |
messageSelector:up |
↑、K、Ctrl+P |
向上移动 |
messageSelector:down |
↓、J、Ctrl+N |
向下移动 |
messageSelector:top |
Ctrl+↑、Shift+↑、Meta+↑、Shift+K |
跳到顶部 |
messageSelector:bottom |
Ctrl+↓、Shift+↓、Meta+↓、Shift+J |
跳到底部 |
messageSelector:select |
Enter |
选择消息 |
Diff 操作(DiffDialog 上下文) #
| Action |
默认键 |
说明 |
diff:dismiss |
Escape |
关闭 Diff 查看器 |
diff:previousSource |
← |
上一个 diff 来源 |
diff:nextSource |
→ |
下一个 diff 来源 |
diff:previousFile |
↑ |
上一个文件 |
diff:nextFile |
↓ |
下一个文件 |
diff:viewDetails |
Enter |
查看 diff 详情 |
diff:back |
上下文相关 |
在 diff 查看器中返回 |
模型选择器操作(ModelPicker 上下文) #
| Action |
默认键 |
说明 |
modelPicker:decreaseEffort |
← |
降低推理深度 |
modelPicker:increaseEffort |
→ |
提高推理深度 |
modelPicker:setAsDefault |
d |
将高亮模型设为新对话的默认模型 |
选择操作(Select 上下文) #
| Action |
默认键 |
说明 |
select:next |
↓、J、Ctrl+N |
下一个选项 |
select:previous |
↑、K、Ctrl+P |
上一个选项 |
select:accept |
Enter |
接受选择 |
select:cancel |
Escape |
取消选择 |
插件操作(Plugin 上下文) #
| Action |
默认键 |
说明 |
plugin:toggle |
Space |
切换插件选择 |
plugin:install |
I |
安装选中插件 |
plugin:favorite |
F |
收藏选中插件,使其在“已安装”标签页中排在前面 |
设置操作(Settings 上下文) #
| Action |
默认键 |
说明 |
settings:search |
/ |
进入搜索模式 |
settings:retry |
R |
重试加载用量数据(出错时) |
settings:close |
Enter |
保存并关闭配置面板。Escape 丢弃并关闭 |
Doctor 操作(Doctor 上下文) #
| Action |
默认键 |
说明 |
doctor:fix |
F |
将诊断报告发给 Claude 修复问题。仅在发现问题时可用 |
| Action |
默认键 |
说明 |
scroll:lineUp |
未绑定 |
向上滚动一行。鼠标滚轮触发此动作 |
scroll:lineDown |
未绑定 |
向下滚动一行。鼠标滚轮触发此动作 |
scroll:pageUp |
PageUp |
向上滚动半个视口高度 |
scroll:pageDown |
PageDown |
向下滚动半个视口高度 |
scroll:top |
Ctrl+Home |
跳到对话开头 |
scroll:bottom |
Ctrl+End |
跳到最新消息并重新启用自动跟随 |
scroll:halfPageUp |
未绑定 |
向上滚动半个视口高度,与 scroll:pageUp 行为相同,为 vi 风格重绑定提供 |
scroll:halfPageDown |
未绑定 |
向下滚动半个视口高度,与 scroll:pageDown 行为相同,为 vi 风格重绑定提供 |
scroll:fullPageUp |
未绑定 |
向上滚动整个视口高度 |
scroll:fullPageDown |
未绑定 |
向下滚动整个视口高度 |
selection:copy |
Ctrl+Shift+C / Cmd+C |
复制选中文本到剪贴板 |
selection:clear |
未绑定 |
清除当前文本选择 |
selection:extendLeft |
Shift+← |
向左扩展选中范围一列 |
selection:extendRight |
Shift+→ |
向右扩展选中范围一列 |
selection:extendUp |
Shift+↑ |
向上扩展选中范围一行。选中到达顶端时滚动视口 |
selection:extendDown |
Shift+↓ |
向下扩展选中范围一行。选中到达底部时滚动视口 |
selection:extendLineStart |
Shift+Home |
扩展选中范围到行首 |
selection:extendLineEnd |
Shift+End |
扩展选中范围到行尾 |
按键语法 #
修饰键 #
用 + 分隔:
ctrl+k Control + K
shift+tab Shift + Tab
meta+p Option + P(macOS),Alt + P(其他系统)
ctrl+shift+c 多个修饰键
支持的修饰键名称:
ctrl 或 control — Control 键
shift — Shift 键
alt、opt、option 或 meta — Windows/Linux 上为 Alt,macOS 上为 Option
cmd、command、super 或 win — macOS 上为 Command,Windows 上为 Windows 键,Linux 上为 Super 键
cmd 组仅在支持 Super 修饰符的终端中生效(如 Kitty 键盘协议或 xterm 的 modifyOtherKeys 模式)。大多数终端不发送此修饰符,因此跨平台绑定时建议使用 ctrl 或 meta。
大写字母 #
单独的大写字母默认等于 Shift + 小写字母,即 K 等同于 shift+k(适合 Vim 风格绑定)。
带修饰键的大写字母不额外加 Shift:ctrl+K 与 ctrl+k 等效。
和弦键(连续按键) #
用空格分隔两次按键:
ctrl+k ctrl+s 先按 Ctrl+K,再按 Ctrl+S
特殊键名 #
escape 或 esc — Escape 键
enter 或 return — Enter 键
tab — Tab 键
space — 空格键
up、down、left、right — 方向键
backspace、delete — 删除键
解绑默认快捷键 #
将值设为 null 即可解绑:
{
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+s": null
}
}
]
}
和弦键也可以解绑。解绑所有共享前缀的和弦键后,该前缀可释放为单键绑定:
{
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+x ctrl+k": null,
"ctrl+x ctrl+e": null,
"ctrl+x": "chat:newline"
}
}
]
}
如果只解绑部分和弦键,按下前缀仍会进入和弦等待模式。
保留快捷键(不可修改) #
| 快捷键 |
原因 |
| Ctrl+C |
硬编码的中断/取消 |
| Ctrl+D |
硬编码的退出 |
| Ctrl+M |
终端中与 Enter 相同(都发送 CR) |
| Caps Lock |
无法传递给终端应用 |
终端冲突 #
| 快捷键 |
冲突说明 |
| Ctrl+B |
tmux 前缀键(按两次发送到应用) |
| Ctrl+A |
GNU screen 前缀键 |
| Ctrl+Z |
Unix 进程暂停(SIGTSTP) |
Vim 模式交互 #
通过 /config → Editor mode 启用 vim 模式后,快捷键和 vim 模式独立工作:
- Vim 模式:在文本输入层处理(光标移动、模式切换、操作命令)
- Keybindings:在组件层处理(切换任务列表、提交等)
- Vim 模式下 Escape 切换 INSERT → NORMAL 模式,不触发
chat:cancel
- 大多数 Ctrl+键 快捷键会透传 vim 模式到 keybinding 系统
- 在 vim NORMAL 模式下,
? 显示帮助菜单(vim 行为)
配置验证 #
Claude Code 会自动验证 keybindings 配置并显示警告:
- JSON 解析错误
- 无效上下文名称
- 保留快捷键冲突
- 终端复用器冲突
- 同一上下文内重复绑定
运行 /doctor 查看所有键绑定警告。
常见问题 #
如何修改 Claude Code 的快捷键绑定? #
运行 /keybindings 创建或打开 ~/.claude/keybindings.json,在 bindings 数组中按上下文指定按键和 action,修改后立即生效,无需重启。
Ctrl+S 在终端里被暂停了怎么办? #
Ctrl+S 默认是终端软件流控制(XON/XOFF)的暂停键,可能无法被 Claude Code 捕获。建议在终端配置中取消该功能(例如 stty -ixon),或者将其他快捷键绑定到 chat:stash。
Vim 模式下 Escape 为什么不能取消输入? #
启用 vim 模式后,Escape 先切换 INSERT → NORMAL 模式,不会被传递到键绑定系统。如需在 vim 模式下取消输入,可以另外绑定 chat:cancel 到其他组合键(如 Ctrl+[ 或 Ctrl+C),或退出 vim 模式后使用默认的 Escape。