Skip to content

自定义键盘快捷键

需要 Claude Code v2.1.18 或更高版本(claude --version 查看)。

运行 /keybindings 创建或打开配置文件 ~/.claude/keybindings.json,对 Claude Code 的快捷键进行完全自定义。修改后无需重启即时生效。

配置文件格式

json
{
  "$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
      }
    }
  ]
}

bindings 是一个数组,每个元素指定一个上下文和该上下文下的按键映射。值为 null 表示解绑该快捷键。


所有上下文

上下文说明
Global应用全局生效
Chat主聊天输入区
Autocomplete自动补全菜单打开时
Settings设置菜单
Confirmation权限/确认对话框
TabsTab 导航组件
Help帮助菜单可见时
Transcript文本记录查看器
HistorySearch历史搜索模式(Ctrl+R)
Task后台任务运行时
ThemePicker主题选择对话框
Attachments图片/附件栏导航
Footer底部状态导航
MessageSelector回退/摘要对话框消息选择
DiffDialogDiff 查看器导航
ModelPicker模型选择器推理力度调整
Select通用选择/列表组件
Plugin插件对话框

可用 Action 完整列表

全局 App 操作(Global 上下文)

Action默认键说明
app:interruptCtrl+C取消当前操作
app:exitCtrl+D退出 Claude Code
app:toggleTodosCtrl+T切换任务列表显示
app:toggleTranscriptCtrl+O切换详细记录显示

历史记录操作

Action默认键说明
history:searchCtrl+R打开历史搜索
history:previous上一条历史
history:next下一条历史

Chat 操作(Chat 上下文)

Action默认键说明
chat:cancelEscape取消当前输入
chat:cycleModeShift+Tab循环切换权限模式
chat:modelPickerCmd+P / Meta+P打开模型选择器
chat:thinkingToggleCmd+T / Meta+T切换扩展思考模式
chat:submitEnter提交消息
chat:undoCtrl+_撤销上一步
chat:externalEditorCtrl+G在外部编辑器中打开
chat:stashCtrl+S暂存当前提示词
chat:imagePasteCtrl+V(Windows 为 Alt+V)粘贴图片

Windows 不带 VT 模式时(Node < 24.2.0 / < 22.17.0,Bun < 1.2.23),chat:cycleMode 默认为 Meta+M。

语音操作(Chat 上下文,启用语音输入时)

Action默认键说明
voice:pushToTalkSpace(按住)按住说话

自动补全操作(Autocomplete 上下文)

Action默认键说明
autocomplete:acceptTab接受建议
autocomplete:dismissEscape关闭菜单
autocomplete:previous上一个建议
autocomplete:next下一个建议

确认对话框操作(Confirmation 上下文)

Action默认键说明
confirm:yesY, Enter确认
confirm:noN, Escape拒绝
confirm:cycleModeShift+Tab循环切换权限模式
confirm:toggleExplanationCtrl+E切换权限详情说明
permission:toggleDebugCtrl+D切换权限调试信息

任务操作(Task 上下文)

Action默认键说明
task:backgroundCtrl+B将当前任务放到后台

Diff 操作(DiffDialog 上下文)

Action默认键说明
diff:dismissEscape关闭 Diff 查看器
diff:previousSource上一个 diff 来源
diff:nextSource下一个 diff 来源
diff:previousFile上一个文件
diff:nextFile下一个文件

按键语法

修饰键

+ 分隔:

ctrl+k         # Control + K
shift+tab      # Shift + Tab
meta+p         # Command/Meta + P
ctrl+shift+c   # 多个修饰键

支持的修饰键名称:

  • ctrlcontrol
  • altoptoption
  • shift
  • metacmdcommand

大写字母

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

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

和弦(连续按键)

用空格分隔两次按键:

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

特殊键名

escape/escenter/returntabspaceup/down/left/rightbackspacedelete


解绑默认快捷键

将值设为 null

json
{
  "bindings": [
    {
      "context": "Chat",
      "bindings": {
        "ctrl+s": null
      }
    }
  ]
}

保留快捷键(不可修改)

快捷键原因
Ctrl+C硬编码的中断/取消
Ctrl+D硬编码的退出

终端冲突

快捷键冲突
Ctrl+Btmux 前缀键(按两次发送)
Ctrl+AGNU screen 前缀键
Ctrl+ZUnix 进程暂停(SIGTSTP)

Vim 模式兼容说明

开启 Vim 模式(/vim)后,快捷键和 Vim 模式独立工作:

  • Vim 模式:在文本输入层处理(光标移动、模式切换、操作命令)
  • Keybindings:在组件层处理(切换任务列表、提交等)
  • Vim 模式下 Escape 切换 INSERT → NORMAL 模式,不触发 chat:cancel
  • 大多数 Ctrl+键 快捷键会透传到 keybinding 系统

配置验证

Claude Code 会验证你的 keybindings 并给出警告:

  • JSON 解析错误
  • 无效上下文名称
  • 保留快捷键冲突
  • 终端复用器冲突
  • 同一上下文内重复绑定

运行 /doctor 查看所有键绑定警告。