/keybindings 来创建或打开位于 ~/.claude/keybindings.json 的配置文件。
配置文件
快捷键配置文件是一个包含bindings 数组的对象。每个块指定一个上下文和一个按键映射到操作的映射。
快捷键文件的更改会自动检测并应用,无需重启 Claude Code。
此示例将
Ctrl+E 绑定到在聊天上下文中打开外部编辑器,并取消绑定 Ctrl+S:
上下文
每个绑定块指定一个上下文,其中绑定适用:
在 v2.1.205 之前,
/doctor 诊断屏幕存在 Doctor 上下文和 doctor:fix 操作。
可用操作
操作采用namespace:action 格式,例如 chat:submit 用于发送消息,app:toggleTodos 用于显示任务列表。每个上下文都有特定的可用操作。
应用操作
Global 上下文中可用的操作:
历史操作
用于浏览命令历史的操作:聊天操作
Chat 上下文中可用的操作:
*在没有 VT 模式的 Windows 上(Node <24.2.0/<22.17.0、Bun <1.2.23),默认为 Meta+M。
自动补全操作
Autocomplete 上下文中可用的操作:
确认操作
Confirmation 上下文中可用的操作:
*在没有 VT 模式的 Windows 上(Node <24.2.0/<22.17.0、Bun <1.2.23),默认为 Meta+M。
在 v2.1.257 之前,
confirm:toggleExplanation 操作(默认绑定到 Ctrl+E)会在 Bash 和 PowerShell 权限提示中显示由模型生成的命令说明。
即使对话框并非在询问是或否的问题,也会使用 confirm:yes 和 confirm:no 来接受和取消。如果您在此上下文中绑定单个字母(例如 y 或 n),该字母也会作用于从未将其显示为按键的对话框。将 y 和 n 显示为按键的对话框会自行读取这些字母,无需绑定。
在大多数对话框中,按两次 Ctrl+C 或 Ctrl+D 会关闭对话框,而不是退出 Claude Code。第一次按下后的提示会说明第二次按下是关闭对话框还是退出。这两个键均为保留键,无法重新绑定。
此示例将 y 绑定到 confirm:yes,将 n 绑定到 confirm:no:
y 和 n 仍会作为字母输入。
在 v2.1.280 之前,y 默认也绑定到 confirm:yes,n 默认绑定到 confirm:no。如果您在 v2.1.280 之前使用 /keybindings 创建了 keybindings.json,该文件会列出这两个绑定,并且在您删除这两行之前它们会一直生效。
权限操作
Confirmation 上下文中可用于权限对话框的操作:
会话记录操作
Transcript 上下文中可用的操作:
transcript:toggleShowAll 仅适用于经典渲染器;在全屏渲染中,会话记录查看器不提供显示全部的切换功能。
历史搜索操作
HistorySearch 上下文中可用的操作:
historySearch:next、historySearch:accept、historySearch:cancel 和 historySearch:execute 的默认值适用于经典渲染器中的内联历史搜索,该搜索始终搜索所有项目中的提示词。historySearch:cycleScope 仅在全屏渲染中生效,此时 Ctrl+R 会改为打开搜索对话框,Ctrl+S 用于循环切换其作用域。该对话框的其他按键是固定的,无法重新绑定:Enter 或 Tab 会将高亮的匹配项放入提示词输入框,Esc 则取消。
任务操作
Task 上下文中可用的操作:
主题操作
ThemePicker 上下文中可用的操作:
帮助操作
Help 上下文中可用的操作:
标签页操作
Tabs 上下文中可用的操作:
在带标签页的对话框中,当标签行获得焦点时,
tabs:next 和 tabs:previous 用于切换标签页。在某些对话框中(例如 /help 和 /sandbox),切换标签页的按键在标签页内容内部也有效。
Up 和 Down 在标签行与标签页内容之间移动焦点,内容中的列表仅在获得焦点时才响应按键。
附件操作
Attachments 上下文中可用的操作:
页脚操作
Footer 上下文中可用的操作:
当选中某个页脚项(例如提示词下方 Agent 面板中的某一行)时,即使您在
Chat 上下文中将 Enter 重新绑定到 chat:queueSubmit 或 chat:newline,Enter 仍会打开该项。
对于 Footer 上下文未绑定的按键,Chat 绑定(例如用于 chat:cycleMode 的 Shift+Tab)在选中某项时仍然有效。
消息选择器操作
在回退菜单的消息列表中,您可以使用 Select 操作及其默认按键在消息间移动并选择消息。您针对这些操作设置的Select 绑定在此处同样适用。MessageSelector 上下文本身没有任何操作或默认绑定。可使用它仅为此列表更改按键,方法是在 MessageSelector 块中绑定 Select 操作,例如 select:accept。
此示例将 o 绑定为在回退菜单中选择高亮的消息,而不会更改任何其他列表:
Select 绑定,并拥有自己的操作:messageSelector:up、messageSelector:down、messageSelector:top、messageSelector:bottom 和 messageSelector:select。如果您的 keybindings.json 绑定了其中某个名称,该绑定会在此列表中继续生效,作为执行相同功能的 Select 操作。Home 和 End 跳转到列表的两端;在 v2.1.283 之前,默认由 Shift+K 和 Shift+J 等按键实现此功能。
Diff 操作
这些操作仅作用于 Claude Code 早期的 diff 查看器,当您在/plugin 中禁用 cc-plugin-diff mod 后,/diff 会在全屏渲染之外打开该查看器。启用该 mod 时,/diff 会改为打开 diff 对话框。
DiffDialog 上下文中可用的操作:
文件列表也会通过 Select 操作的默认按键以及您的
Select 绑定来响应这些操作。select:previous 和 select:next 分别移动到上一个和下一个文件,Enter 通过 select:accept 打开所选文件的 diff。如需仅为文件列表更改其中某个按键,请在 DiffDialog 块中绑定相应的 Select 操作。
在 v2.1.283 之前,文件列表会忽略 Select 绑定,Enter 通过单独的 diff:viewDetails 操作打开所选文件的 diff。如果您的 keybindings.json 绑定了 diff:viewDetails,该绑定会在文件列表中作为 select:accept 继续生效。
diff 详细视图还将分页器风格的按键绑定到标准滚动操作。这些绑定属于 DiffDialog 上下文,仅在详细视图中生效;滚动操作下列出的 Scroll 上下文默认值保持不变。
Diff 面板操作
用于在全屏渲染中由/diff 打开的 diff 面板的操作。app:cycleDiffBase 位于 DiffPanel 上下文中,该上下文在面板打开时处于活动状态;其他操作属于 Global。
内置的 cc-plugin-diff mod 负责绘制此面板,并处理 app:cycleDiffBase、app:diffFileListUp 和 app:diffFileListDown。app:toggleReplTab、app:toggleDiffNoiseFilter 和 app:toggleDiffPreSession 仅作用于 Claude Code 早期的面板,当您在 /plugin 中禁用 cc-plugin-diff 后,/diff 会打开该面板。
模型选择器操作
ModelPicker 上下文中可用的操作:
Effort 滑块操作
EffortSlider 上下文中可用的操作,该上下文对应不带参数运行 /effort 时打开的滑块。滑块的 Enter 和 Escape 键无法重新绑定。
Select 操作
Select 上下文中可用的操作:
在
/skills、/mcp 和 /tasks 等列表面板中,Claude Code 会应用您的 select:pageUp、select:pageDown、select:first 和 select:last 绑定。在大多数其他列表中(例如 /model 选择器),会应用您的 select:first 和 select:last 绑定。在这些列表中,无论您如何绑定,PageUp 和 PageDown 都会按页浏览选项。
在 v2.1.280 之前,这些其他列表会忽略 Home、End 以及您的 select:first 和 select:last 绑定。
在 v2.1.283 之前,无论您如何绑定,/mcp 工具列表都使用固定的 PageUp 和 PageDown 键进行分页。
插件操作
Plugin 上下文中可用的操作:
提示词上方区域操作
用于提示词上方区域的操作,该区域是 mod 绘制按钮、输入字段和选择框的共享条带。abovePrompt:toggle 和 abovePrompt:focus 在 Chat 上下文中生效。其他操作在该区域或窗格中当前拥有键盘焦点的元素所属的上下文中生效。
在
AbovePrompt 上下文中,Right 和 Left 默认也会执行 abovePrompt:next 和 abovePrompt:previous,Space 也会执行 abovePrompt:press。
AbovePrompt 上下文还将 Up、Down、PageUp、PageDown、Home 和 End 绑定到窗格滚动操作 pane:scrollUp 至 pane:bottom,因此如需为该区域更改其中某个按键,请在 AbovePrompt 块中绑定相应的滚动操作。
窗格操作
用于由 mod 绘制的窗格的操作。滚动、调整大小和关闭操作在Pane 上下文中生效。pane:close 也在 PaneField 上下文中生效,因此当窗格的某个字段获得焦点时它同样有效。当打开多个窗格时,pane:next 和 pane:previous 在 Global 上下文中生效。
Pane 上下文还将 Tab、Shift+Tab、Enter 和 Escape 绑定到与该区域相同的提示词上方区域操作,窗格的输入字段和选择框使用 AbovePromptInput 和 AbovePromptSelect 上下文。键盘焦点和热键列出了每个按键在窗格中的作用。
设置操作
Settings 上下文中可用的操作。select:accept 和 confirm:no 操作复用自 Select 和 Confirmation 上下文,但具有设置特有的行为:每个设置项在您更改后会立即生效,因此 Escape 会关闭面板并保存您的更改,而不是拒绝。
Agents 操作
Agents 上下文中可用的操作,该上下文适用于通过 claude agents 打开的 Agent 视图。需要 v2.1.257 或更高版本。
当 Agent 视图打开时,对于
Agents 上下文已绑定的任何按键,Claude Code 会使用 Agents 绑定,并忽略同一按键上的 Chat 或 Global 绑定。例如,在 Agent 视图中按 Ctrl+S 会切换会话分组,而不是触发默认的 chat:stash。
Dispatch 输入框的外部编辑器快捷键不是 Agents 操作。Agent 视图遵循 Chat 上下文的 chat:externalEditor 绑定,默认为 Ctrl+G。
在 Agent 视图中,绑定仅在单次按键时触发,因此绑定到 chat:externalEditor 的 Ctrl+X Ctrl+E 组合键不会在该视图中打开编辑器。
语音操作
启用语音听写时,Chat 上下文中可用的操作:
滚动操作
启用全屏渲染时,Scroll 上下文中可用的操作:
按键语法
修饰符
使用修饰符键和+ 分隔符:
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。
例如:
大写字母
Claude Code 不区分大小写地解析按键名称,因此K 与 k 的绑定相同,ctrl+K 与 ctrl+k 相同。要绑定 Shift 和一个字母,请写 shift+k。
非美国键盘布局
即使您的活动键盘布局输入其他字符,也要将 Ctrl 快捷键的按键名称写成拉丁字符。 Claude Code 如何将您按下的按键与绑定匹配取决于布局的类型:- 在非拉丁布局(如西里尔字母)下,当终端使用 Kitty 键盘协议并报告该位置时,Claude Code 通过按键的美国布局位置来匹配 Ctrl 快捷键。在这样的终端中,使用俄语布局时,按下 Ctrl 和物理 W 键会触发
ctrl+w。在不报告位置的终端中,Claude Code 匹配终端为按键发送的任何内容:ASCII 控制代码触发拉丁快捷键,作为西里尔字符到达的按键不匹配任何绑定 - 在重新排列拉丁字母的布局(如 AZERTY)下,Claude Code 匹配按键输入的字母,因此按下 Ctrl 和标记为 A 的按键会触发
ctrl+a
和弦
和弦是由空格分隔的按键序列:特殊键
escape或esc- Escape 键enter或return- Enter 键tab- Tab 键space- 空格键up、down、left、right- 箭头键pageup、pagedown- Page Up 和 Page Down 键home、end- Home 和 End 键backspace、delete- 删除键wheelup、wheeldown- 鼠标滚轮滚动事件
取消绑定默认快捷键
将操作设置为null 以取消绑定默认快捷键:
ctrl+x 前缀上按上下文绑定以下默认和弦:
Chat:ctrl+x ctrl+k、ctrl+x ctrl+e、ctrl+x enter、ctrl+x ctrl+a、ctrl+x ctrl+s、ctrl+x tab、ctrl+x ctrl+=、ctrl+x ctrl+-、ctrl+x ctrl+_、ctrl+x =和ctrl+x -Task:ctrl+x ctrl+bDiffPanel:ctrl+x bPane:ctrl+x left、ctrl+x right、ctrl+x up、ctrl+x down和ctrl+x xPaneField:ctrl+x x
ctrl+x enter 和弦需要 v2.1.247 或更高版本,ctrl+x b、ctrl+x ctrl+a 和 ctrl+x tab 需要 v2.1.260 或更高版本,以及 ctrl+x ctrl+s 需要 v2.1.275 或更高版本。
要将 ctrl+x 本身回收为单键绑定,请取消绑定所有这些:
保留的快捷键
这些快捷键无法重新绑定:终端冲突
某些快捷键可能与终端多路复用器冲突:文本字段
如果你绑定一个裸字母、数字或空格,你仍然可以在对话框或面板内的文本字段中输入该字符。其中一个字段是 Claude 提出问题的Other 答案。当该字段获得焦点时,你按下的不带 Ctrl、Alt 或 Cmd 的可打印键会进入该字段,Claude Code 不会根据你的绑定来匹配它。
这些键在字段获得焦点时仍然会运行其绑定:
- 不输入字符的键,例如 Enter、Escape、Tab 和箭头键
- 任何与 Ctrl、Alt 或 Cmd 一起按下的键
- 已在进行中的和弦的第二个按键
Chat)匹配每个键,仅当没有绑定接受该键时才输入该键。
Vim 模式交互
当您通过/config 中的编辑器模式设置启用 vim 模式时,快捷键和 vim 模式独立运行:
- Vim 模式在文本输入级别处理输入:光标移动、模式和动作
- 快捷键在组件级别处理操作,例如切换待办事项或提交消息
- 在 vim 模式下,Escape 键会将 INSERT 模式切换为 NORMAL 模式,而不会触发
chat:cancel - 大多数 Ctrl+key 快捷键通过 vim 模式传递到快捷键系统
- Vim 键不能通过快捷键文件重新映射。要映射两键 INSERT 模式序列(如
jj)到 Escape,请使用vimInsertModeRemaps设置 - 在 vim NORMAL 模式中,
?显示帮助菜单(vim 行为) - 在 vim NORMAL 模式中,
/打开历史搜索,与标准模式中的 Ctrl+R 相同
Other 行中,vim 模式下按 Escape 不会立即取消该问题。除屏幕阅读器模式外,每次聚焦该行时,它都会以 INSERT 模式开始。在 Other 行中按 Escape 时,该行会切换到 NORMAL 模式或丢弃输入到一半的 vim 命令,问题仍保持打开状态。在 NORMAL 模式下再次按 Escape 即可取消该问题。
按一次键取消问题
要在 vim 模式下按一次键即可取消问题,请在Select 上下文中将另一个键绑定到 select:cancel。在只能选择一个选项的问题中,您可以在 Other 行中以这种方式取消。在屏幕阅读器模式下,或在可以选择多个选项的问题中,绑定的键不会取消问题,此时请改用 Escape 取消。
请选择一个需要配合 Ctrl 或 Alt 按下的键。单独的字母或数字会输入到 Other 行中,而不会触发您的绑定。例如,要绑定 Ctrl+Q,请将以下内容添加到 ~/.claude/keybindings.json:
Other 行中按 Ctrl+Q。无论该行处于 INSERT 还是 NORMAL 模式,问题都会关闭。
验证
Claude Code 验证您的快捷键并向调试日志写入以下警告:- 解析错误(无效的 JSON 或结构)
- 拼写错误的修饰符,例如
ctl+k。Claude Code 会忽略整个绑定。请更正该修饰符,在此示例中应更正为ctrl+k。 - 按键字符串中
+旁边有空格,例如ctrl+ k。Claude Code 会将该字符串解读为由ctrl+后跟k组成的组合键序列。没有任何按键能单独匹配ctrl+,因此该绑定永远不会触发。请删除该空格。 - 无效的上下文名称
- 无效的操作值,例如不是字符串或
null的操作 - 未知的操作名称,例如注册操作的拼写错误。Claude Code 跳过该绑定并保持该键的任何默认绑定有效。
- 保留快捷键冲突
- 同一上下文中的重复绑定
--debug 启动 Claude Code 以查看详细信息。