一、配置文件
keybindings 配置文件是一个包含 bindings 数组的对象。每个 block 指定一个上下文(context)和按键到动作的映射。
注意:说明:
注意:对 keybindings 文件的更改会自动检测并应用,无需重启 CodeBuddy Code。
| 字段 | 说明 |
| $schema | 可选,JSON Schema URL,用于编辑器自动补全 |
| $docs | 可选,文档 URL |
| bindings | 按上下文组织的绑定块数组 |
以下示例在 Chat 上下文中将 Ctrl+E 绑定到外部编辑器,并解绑 Ctrl+U:
{ "$schema": "https://code.codebuddy.ai/schemas/keybindings.json", "$docs": "https://code.codebuddy.ai/docs/keybindings", "bindings": [ { "context": "Chat", "bindings": { "ctrl+e": "chat:externalEditor", "ctrl+u": null } } ]}
二、上下文(Contexts)
每个绑定块指定一个 context,决定快捷键在何时生效:
| Context | 说明 |
| Global | 在应用的任何位置生效 |
| Chat | 聊天输入框获得焦点时 |
| InputBox | 文本输入框处于活跃状态时 |
| Terminal | 终端视图处于活跃状态时 |
| Autocomplete | 自动补全菜单显示时 |
| Confirmation | 确认/权限对话框显示时 |
| HistorySearch | 搜索命令历史时 (Ctrl+R) |
| Task | 任务/代理在前台运行时 |
| Settings | 设置面板打开时 |
| CommandPalette | 命令面板打开时 |
| Select | 选择/列表组件获得焦点时 |
| PermissionDialog | 工具权限对话框显示时 |
| Help | 帮助页面打开时 |
| Plugin | 插件对话框打开时 |
| DiffDialog | Diff 对话框打开时 |
| MessageSelector | 消息选择器 (rewind) 打开时 |
三、可用动作(Actions)
动作遵循 namespace:action 格式,如 chat:submit 发送消息、app:toggleTodos 切换待办事项列表。每个上下文有特定的可用动作。
四、应用动作
在 Global 上下文中可用:
| 动作 | 默认按键 | 说明 |
| app:interrupt | Ctrl+C | 中断当前操作 |
| app:exit | Ctrl+D | 退出 CodeBuddy Code |
| app:redraw | Ctrl+L | 刷新终端屏幕 |
| app:toggleTodos | Ctrl+T | 切换待办事项列表 |
| app:toggleTranscript | Ctrl+O | 切换详细转录 |
| app:toggleSidebar | Cmd+B | 切换侧边栏(Web UI) |
| app:toggleTerminal | Cmd+J | 切换终端(Web UI) |
| app:commandPalette | Cmd+Shift+P / Ctrl+Shift+P | 打开命令面板(Web UI) |
| app:newChat | Cmd+N | 新建对话(Web UI) |
| app:settings | Cmd+, | 打开设置(Web UI) |
| app:focusInput | Cmd+L | 聚焦输入框(Web UI) |
五、历史动作
用于导航命令历史:
| 动作 | 默认按键 | 说明 |
| history:search | Ctrl+R | 打开历史搜索 |
| history:previous | Up | 上一条历史 |
| history:next | Down | 下一条历史 |
六、聊天动作
在 Chat 上下文中可用:
| 动作 | 默认按键 | 说明 |
| chat:cancel | Escape | 取消当前输入,或中断当前前台请求 |
| chat:submit | Enter | 发送消息 |
| chat:killAgents | Ctrl+X Ctrl+K | 终止所有后台代理 |
| chat:cycleMode | Shift+Tab (Windows 同时支持 Alt+M) | 切换权限模式 |
| chat:modelPicker | Meta+P | 打开模型选择器 |
| chat:thinkingToggle | Meta+T | 切换扩展思考 |
| chat:undo | Ctrl+_, Ctrl+Shift+- | 撤销 |
| chat:externalEditor | Ctrl+G, Ctrl+X Ctrl+E | 在外部编辑器中打开 |
| chat:stash | Ctrl+S | 暂存当前输入 |
| chat:imagePaste | Ctrl+V (Windows: Alt+V) | 粘贴图片 |
所有平台统一使用 Shift+Tab 作为主快捷键。Windows 上同时保留 Alt+M 作为别名,方便终端不支持 Shift+Tab 时使用。
七、自动补全动作
在 Autocomplete 上下文中可用:
| 动作 | 默认按键 | 说明 |
| autocomplete:accept | Tab | 接受建议 |
| autocomplete:dismiss | Escape | 关闭菜单 |
| autocomplete:previous | Up | 上一项 |
| autocomplete:next | Down | 下一项 |
八、确认动作
在 Confirmation 上下文中可用:
| 动作 | 默认按键 | 说明 |
| confirm:yes | Y, Enter | 确认 |
| confirm:no | N, Escape | 取消 |
| confirm:previous | Up | 上一项 |
| confirm:next | Down | 下一项 |
| confirm:toggle | Space | 切换选中 |
| confirm:toggleExplanation | Ctrl+E | 切换权限说明 |
| permission:toggleDebug | Ctrl+D | 切换权限调试信息 |
九、转录动作
在 Transcript 上下文中可用:
| 动作 | 默认按键 | 说明 |
| transcript:toggleShowAll | Ctrl+E | 切换显示全部内容 |
| transcript:exit | Q, Ctrl+C, Escape | 退出转录视图 |
十、历史搜索动作
在 HistorySearch 上下文中可用:
| 动作 | 默认按键 | 说明 |
| historySearch:next | Ctrl+R | 下一条匹配 |
| historySearch:accept | Escape, Tab | 接受选择 |
| historySearch:cancel | Ctrl+C | 取消搜索 |
| historySearch:execute | Enter | 执行选中命令 |
十一、任务动作
在 Task 上下文中可用:
| 动作 | 默认按键 | 说明 |
| task:background | Ctrl+B | 将当前任务转入后台 |
十二、帮助动作
在 Help 上下文中可用:
| 动作 | 默认按键 | 说明 |
| help:dismiss | Escape | 关闭帮助菜单 |
十三、设置动作
在 Settings 上下文中可用:
| 动作 | 默认按键 | 说明 |
| settings:search | / | 进入搜索模式 |
| settings:close | Enter | 保存并关闭配置面板 |
十四、选择列表动作
在 Select 上下文中可用:
| 动作 | 默认按键 | 说明 |
| select:next | Down, J, Ctrl+N | 下一项 |
| select:previous | Up, K, Ctrl+P | 上一项 |
| select:accept | Enter | 确认选择 |
| select:cancel | Escape | 取消选择 |
十五、命令面板动作
在 CommandPalette 上下文中可用:
| 动作 | 默认按键 | 说明 |
| commandPalette:previous | Up | 上一项 |
| commandPalette:next | Down | 下一项 |
| commandPalette:execute | Enter | 执行命令 |
| commandPalette:close | Escape | 关闭面板 |
十六、Diff 动作
在 DiffDialog 上下文中可用:
| 动作 | 默认按键 | 说明 |
| diff:dismiss | Escape | 关闭 Diff 查看器 |
| diff:previousFile | Up | 上一个文件 |
| diff:nextFile | Down | 下一个文件 |
| diff:viewDetails | Enter | 查看详情 |
十七、消息选择器动作
在 MessageSelector 上下文中可用:
| 动作 | 默认按键 | 说明 |
| messageSelector:up | Up, K, Ctrl+P | 向上移动 |
| messageSelector:down | Down, J, Ctrl+N | 向下移动 |
| messageSelector:top | Shift+Up | 跳到顶部 |
| messageSelector:bottom | Shift+Down | 跳到底部 |
| messageSelector:select | Enter | 选择消息 |
十八、插件动作
在 Plugin 上下文中可用:
| 动作 | 默认按键 | 说明 |
| plugin:toggle | Space | 切换插件选中 |
| plugin:install | I | 安装选中插件 |
20、修饰键
使用 + 分隔符组合修饰键:
·ctrl 或 control — Control 键
·alt、opt 或 option — Alt/Option 键
·shift — Shift 键
·meta、cmd 或 command — Meta/Command 键
示例:
ctrl+k 单个修饰键 + 按键shift+tab Shift + Tabmeta+p Command/Meta + Pctrl+shift+c 多个修饰键
21、弦序列(Chords)
弦序列是用空格分隔的连续按键组合:
ctrl+x ctrl+k 先按 Ctrl+X,松开,再按 Ctrl+Kctrl+x ctrl+e 先按 Ctrl+X,松开,再按 Ctrl+E
弦序列有 1000ms 超时。如果超时未完成第二步,弦序列将被取消。
22、特殊按键
·escape 或 esc — Escape 键
·enter 或 return — Enter 键
·tab — Tab 键
·space — 空格键
·up、down、left、right — 方向键
·backspace、delete — 删除键
23、解绑默认快捷键
将动作设为 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" } } ]}
如果只解绑了部分弦序列,按下前缀键仍会进入弦等待模式。
24、保留快捷键
以下快捷键不可重新绑定:
| 快捷键 | 原因 |
| Ctrl+C | 硬编码的中断/取消 |
| Ctrl+D | 硬编码的退出 |
| Ctrl+M | 在终端中等同于 Enter(两者都发送 CR) |
25、终端冲突
某些快捷键可能与终端复用器冲突:
| 快捷键 | 冲突 |
| Ctrl+B | tmux 前缀键(按两次发送) |
| Ctrl+A | GNU screen 前缀键 |
| Ctrl+Z | Unix 进程挂起 (SIGTSTP) |
26、Web UI 可视化配置
除了编辑 JSON 文件,你还可以在 Web UI 中通过可视化界面管理快捷键:
1. 在侧边栏点击 快捷键 导航项,或使用 URL #/keybindings
2. 使用搜索框按名称、按键或上下文筛选快捷键
3. 点击编辑按钮(铅笔图标)录制新的快捷键组合
4. 录制对话框会实时显示冲突检测
5. 用户自定义的绑定以左侧高亮边框标记
6. 点击重置按钮可恢复单个绑定为默认值
27、REST API
Web UI 通过 REST API 管理快捷键:
| 端点 | 方法 | 说明 |
| /api/v1/keybindings | GET | 获取所有快捷键(默认 + 用户 + 合并) |
| /api/v1/keybindings | PUT | 保存用户快捷键配置 |
| /api/v1/keybindings/reset | POST | 重置为默认值(删除用户配置) |
| /api/v1/keybindings/validate | POST | 验证配置(不保存) |
28、验证
CodeBuddy Code 会验证你的快捷键配置并对以下情况显示警告:
·解析错误(无效的 JSON 或结构)
·无效的上下文名称
·保留快捷键冲突
·终端复用器冲突
·同一上下文中的重复绑定