Claude Code 允许通过 ~/.claude/keybindings.json 完全自定义键盘快捷键,修改后无需重启立即生效。运行 /keybindings 创建或编辑配置文件,使用 bindings 数组按上下文(如 ChatGlobal)指定按键映射,通过 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 修复问题。仅在发现问题时可用

滚动与文本选择操作(Scroll 上下文,启用全屏渲染时)

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   多个修饰键

支持的修饰键名称:

  • ctrlcontrol — Control 键
  • shift — Shift 键
  • altoptoptionmeta — Windows/Linux 上为 Alt,macOS 上为 Option
  • cmdcommandsuperwin — macOS 上为 Command,Windows 上为 Windows 键,Linux 上为 Super 键

cmd 组仅在支持 Super 修饰符的终端中生效(如 Kitty 键盘协议或 xterm 的 modifyOtherKeys 模式)。大多数终端不发送此修饰符,因此跨平台绑定时建议使用 ctrlmeta

大写字母

单独的大写字母默认等于 Shift + 小写字母,即 K 等同于 shift+k(适合 Vim 风格绑定)。

带修饰键的大写字母不额外加 Shift:ctrl+Kctrl+k 等效。

和弦键(连续按键)

用空格分隔两次按键:

ctrl+k ctrl+s   先按 Ctrl+K,再按 Ctrl+S

特殊键名

  • escapeesc — Escape 键
  • enterreturn — Enter 键
  • tab — Tab 键
  • space — 空格键
  • updownleftright — 方向键
  • backspacedelete — 删除键

解绑默认快捷键

将值设为 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。