是什么

keybindings 允许自定义 Claude Code 内部的键盘快捷键,通过 ~/.claude/keybindings.json 配置文件实现。支持按 context(界面区域)分别绑定,修改后无需重启即时生效。

核心机制

配置文件格式

{
  "$schema": "https://www.schemastore.org/claude-code-keybindings.json",
  "bindings": [
    {
      "context": "Chat",
      "bindings": {
        "ctrl+e": "chat:externalEditor",
        "ctrl+u": null
      }
    }
  ]
}
  • null 值解绑快捷键
  • 文件变更自动检测,无需重启

Context 列表

Context适用场景
Global全局,任何地方
Chat主聊天输入区
Autocomplete自动补全菜单打开时
Confirmation权限确认对话框
Task后台任务运行时
Scroll全屏模式的对话滚动和文本选择
DiffDialogDiff 查看器
ModelPicker模型选择器
HistorySearchCtrl+R 历史搜索
TranscriptTranscript 查看器

常用 Actions(Chat context)

  • chat:submit:提交消息
  • chat:newline:插入换行
  • chat:externalEditor:打开外部编辑器
  • chat:clearInput:清空输入
  • chat:historyPrev / chat:historyNext:历史导航

打开/创建配置文件

/keybindings

关键细节

  • 需要 Claude Code v2.1.18+
  • 快捷键格式:ctrl+e、meta+k、shift+enter 等
  • 与终端快捷键的区别:keybindings 配置 Claude Code 内部响应的键,terminal-config 配置终端发送的信号
  • chat:newline 和 chat:submit 可以互换绑定,实现 Enter 换行、Shift+Enter 提交的习惯

与其他概念的关联

  • terminal-config - 终端层面的键盘信号配置(Shift+Enter 等)
  • settings - keybindings 文件路径和配置体系

实践要点

  • 修改 chat:newline 和 chat:submit 的绑定可以改变 Enter 键行为
  • 解绑默认快捷键:将值设为 null
  • 使用 $schema 字段获得编辑器自动补全支持