{/* TRANSLATED — 已翻译为中文 */}

> ## 文档索引
> 在此处获取完整文档索引：https://code.claude.com/docs/llms.txt
> 使用此文件发现所有可用页面，然后再进一步探索。

# 自定义键盘快捷键

> 使用按键绑定配置文件自定义 Claude Code 中的键盘快捷键。

<Note>
  可自定义的键盘快捷键需要 Claude Code v2.1.18 或更高版本。使用 `claude --version` 检查你的版本。
</Note>

Claude Code 支持可自定义的键盘快捷键。运行 `/keybindings` 创建或打开位于 `~/.claude/keybindings.json` 的配置文件。

## 配置文件

按键绑定配置文件是一个包含 `bindings` 数组的对象。每个块指定一个上下文和按键到操作的映射。

<Note>对按键绑定文件的更改会自动检测并应用，无需重启 Claude Code。</Note>

| 字段       | 描述                                       |
| :--------- | :----------------------------------------- |
| `$schema`  | 可选的 JSON Schema URL，用于编辑器自动补全 |
| `$docs`    | 可选的文档 URL                             |
| `bindings` | 按上下文分组的绑定块数组                   |

此示例将 `Ctrl+E` 绑定为在聊天上下文中打开外部编辑器，并取消绑定 `Ctrl+U`：

```json theme={null}
{
  "$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
      }
    }
  ]
}
```

## 上下文

每个绑定块指定绑定适用的**上下文**：

| 上下文              | 描述                                    |
| :------------------ | :-------------------------------------- |
| `Global`            | 应用于应用中的所有位置                  |
| `Chat`              | 主聊天输入区域                          |
| `Autocomplete`      | 自动补全菜单打开时                      |
| `Settings`          | 设置菜单                                |
| `Confirmation`      | 权限和确认对话框                        |
| `Tabs`              | 标签页导航组件                          |
| `Help`              | 帮助菜单可见时                          |
| `Transcript`        | 转录查看器                              |
| `HistorySearch`     | 历史搜索模式（Ctrl+R）                  |
| `Task`              | 后台任务正在运行                        |
| `ThemePicker`       | 主题选择器对话框                        |
| `Attachments`       | 选择对话框中的图片附件导航              |
| `Footer`            | 页脚指示器导航（任务、团队、差异）      |
| `MessageSelector`   | 回退和摘要对话框消息选择                |
| `DiffDialog`        | 差异查看器导航                          |
| `ModelPicker`       | 模型选择器努力程度                      |
| `Select`            | 通用选择/列表组件                       |
| `Plugin`            | 插件对话框（浏览、发现、管理）          |
| `Scroll`            | 全屏模式下的对话滚动和文本选择          |
| `Doctor`            | `/doctor` 诊断屏幕                      |

## 可用操作

操作遵循 `namespace:action` 格式，例如 `chat:submit` 发送消息或 `app:toggleTodos` 显示任务列表。每个上下文有特定的可用操作。

### 应用操作

在 `Global` 上下文中可用的操作：

| 操作                   | 默认值    | 描述                   |
| :--------------------- | :-------- | :--------------------- |
| `app:interrupt`        | Ctrl+C    | 取消当前操作           |
| `app:exit`             | Ctrl+D    | 退出 Claude Code       |
| `app:redraw`           | （未绑定）| 强制终端重绘           |
| `app:toggleTodos`      | Ctrl+T    | 切换任务列表可见性     |
| `app:toggleTranscript` | Ctrl+O    | 切换详细转录           |

### 历史操作

用于导航命令历史的操作：

| 操作               | 默认值 | 描述             |
| :----------------- | :----- | :--------------- |
| `history:search`   | Ctrl+R | 打开历史搜索     |
| `history:previous` | Up     | 上一个历史项     |
| `history:next`     | Down   | 下一个历史项     |

### 聊天操作

在 `Chat` 上下文中可用的操作：

| 操作                    | 默认值                        | 描述                                                                                                                                                           |
| :---------------------- | :---------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `chat:cancel`           | Escape                        | 取消当前输入                                                                                                                                                   |
| `chat:clearInput`       | Ctrl+L                        | 强制全屏重绘，保留输入。在[全屏渲染](/en/fullscreen#clear-the-conversation)模式下，两秒内按两次运行 `/clear`                                                    |
| `chat:clearScreen`      | Cmd+K                         | 在[全屏渲染](/en/fullscreen#clear-the-conversation)模式下，两秒内按两次运行 `/clear`                                                                           |
| `chat:killAgents`       | Ctrl+X Ctrl+K                 | 终止此会话中所有正在运行的[后台子代理](/en/sub-agents#run-subagents-in-foreground-or-background)                                                                 |
| `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）  | 粘贴图片                                                                                                                                                       |

\*在没有 VT 模式的 Windows 上（Node \<24.2.0/\<22.17.0，Bun \<1.2.23），默认为 Meta+M。

### 自动补全操作

在 `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:nextField`         | Tab       | 下一个字段             |
| `confirm:previousField`     | （未绑定）| 上一个字段             |
| `confirm:toggle`            | Space     | 切换选择               |
| `confirm:cycleMode`         | Shift+Tab | 循环切换权限模式       |
| `confirm:toggleExplanation` | Ctrl+E    | 切换权限解释           |

### 权限操作

在 `Confirmation` 上下文中用于权限对话框的操作：

| 操作                     | 默认值    | 描述                                                                                                            |
| :----------------------- | :-------- | :-------------------------------------------------------------------------------------------------------------- |
| `permission:toggleDebug` | （未绑定）| 切换权限调试信息。之前的默认值 Ctrl+D 在 v2.1.146 中被移除，因为它与 `app:exit` 冲突                          |

### 转录操作

在 `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         | 执行选定命令                             |
| `historySearch:cycleScope` | Ctrl+S        | 循环范围：会话、项目、全部               |

### 任务操作

在 `Task` 上下文中可用的操作：

| 操作              | 默认值 | 描述                 |
| :---------------- | :----- | :------------------- |
| `task:background` | Ctrl+B | 后台当前任务         |

### 主题操作

在 `ThemePicker` 上下文中可用的操作：

| 操作                             | 默认值 | 描述                   |
| :------------------------------- | :----- | :--------------------- |
| `theme:toggleSyntaxHighlighting` | Ctrl+T | 切换语法高亮           |

### 帮助操作

在 `Help` 上下文中可用的操作：

| 操作           | 默认值 | 描述             |
| :------------- | :----- | :--------------- |
| `help:dismiss` | Escape | 关闭帮助菜单     |

### 标签页操作

在 `Tabs` 上下文中可用的操作：

| 操作            | 默认值            | 描述           |
| :-------------- | :---------------- | :------------- |
| `tabs:next`     | Tab, Right        | 下一个标签页   |
| `tabs:previous` | Shift+Tab, Left   | 上一个标签页   |

### 附件操作

在 `Attachments` 上下文中可用的操作：

| 操作                   | 默认值              | 描述                   |
| :--------------------- | :------------------ | :--------------------- |
| `attachments:next`     | Right               | 下一个附件             |
| `attachments:previous` | Left                | 上一个附件             |
| `attachments:remove`   | Backspace, Delete   | 移除选定附件           |
| `attachments:exit`     | Down, Escape        | 退出附件导航           |

### 页脚操作

在 `Footer` 上下文中可用的操作：

| 操作                    | 默认值 | 描述                                   |
| :---------------------- | :----- | :------------------------------------- |
| `footer:next`           | Right  | 下一个页脚项                           |
| `footer:previous`       | Left   | 上一个页脚项                           |
| `footer:up`             | Up     | 在页脚中向上导航（在顶部取消选择）     |
| `footer:down`           | Down   | 在页脚中向下导航                       |
| `footer:openSelected`   | Enter  | 打开选定页脚项                         |
| `footer:clearSelection` | Escape | 清除页脚选择                           |

### 消息选择器操作

在 `MessageSelector` 上下文中可用的操作：

| 操作                     | 默认值                                        | 描述               |
| :----------------------- | :-------------------------------------------- | :----------------- |
| `messageSelector:up`     | Up, K, Ctrl+P                                 | 在列表中向上移动   |
| `messageSelector:down`   | Down, J, Ctrl+N                               | 在列表中向下移动   |
| `messageSelector:top`    | Ctrl+Up, Shift+Up, Meta+Up, Shift+K           | 跳转到顶部         |
| `messageSelector:bottom` | Ctrl+Down, Shift+Down, Meta+Down, Shift+J     | 跳转到底部         |
| `messageSelector:select` | Enter                                         | 选择消息           |

### 差异操作

在 `DiffDialog` 上下文中可用的操作：

| 操作                  | 默认值               | 描述                                                          |
| :-------------------- | :------------------- | :------------------------------------------------------------ |
| `diff:dismiss`        | Escape               | 关闭差异查看器                                                |
| `diff:previousSource` | Left                 | 上一个差异源                                                  |
| `diff:nextSource`     | Right                | 下一个差异源                                                  |
| `diff:previousFile`   | Up, K                | 文件列表中的上一个文件；在详细视图中向上滚动一行              |
| `diff:nextFile`       | Down, J              | 文件列表中的下一个文件；在详细视图中向下滚动一行              |
| `diff:viewDetails`    | Enter                | 查看差异详情                                                  |
| `diff:back`           | （上下文特定）       | 在差异查看器中返回                                            |

差异详细视图还将分页器样式的键绑定到标准[滚动操作](#scroll-actions)。这些绑定是 `DiffDialog` 上下文的一部分，仅在详细视图中适用；[滚动操作](#scroll-actions)下列出的 `Scroll` 上下文默认值不变。

| 操作                  | 默认值           | 描述                       |
| :-------------------- | :--------------- | :------------------------- |
| `scroll:pageUp`       | PageUp           | 向上滚动半个视口           |
| `scroll:pageDown`     | PageDown         | 向下滚动半个视口           |
| `scroll:fullPageUp`   | Shift+Space, B   | 向上滚动整个视口           |
| `scroll:fullPageDown` | Space            | 向下滚动整个视口           |
| `scroll:top`          | G, Home          | 跳转到顶部                 |
| `scroll:bottom`       | Shift+G, End     | 跳转到底部                 |

### 模型选择器操作

在 `ModelPicker` 上下文中可用的操作：

| 操作                         | 默认值 | 描述                                       |
| :--------------------------- | :----- | :----------------------------------------- |
| `modelPicker:decreaseEffort` | Left   | 降低努力程度                               |
| `modelPicker:increaseEffort` | Right  | 提高努力程度                               |
| `modelPicker:setAsDefault`   | d      | 将高亮模型设为新会话的默认值               |

### 选择操作

在 `Select` 上下文中可用的操作：

| 操作              | 默认值            | 描述           |
| :---------------- | :---------------- | :------------- |
| `select:next`     | Down, J, Ctrl+N   | 下一个选项     |
| `select:previous` | Up, K, Ctrl+P     | 上一个选项     |
| `select:accept`   | Enter             | 接受选择       |
| `select:cancel`   | Escape            | 取消选择       |

### 插件操作

在 `Plugin` 上下文中可用的操作：

| 操作              | 默认值 | 描述                                                               |
| :---------------- | :----- | :----------------------------------------------------------------- |
| `plugin:toggle`   | Space  | 切换插件选择                                                       |
| `plugin:install`  | I      | 安装选定插件                                                       |
| `plugin:favorite` | F      | 收藏选定插件，使其排序到已安装标签页顶部                           |

### 设置操作

在 `Settings` 上下文中可用的操作：

| 操作              | 默认值 | 描述                                                                    |
| :---------------- | :----- | :---------------------------------------------------------------------- |
| `settings:search` | /      | 进入搜索模式                                                            |
| `settings:retry`  | R      | 重试加载使用数据（出错时）                                              |
| `settings:close`  | Enter  | 保存更改并关闭配置面板。Escape 丢弃更改并关闭                           |

### 诊断操作

在 `Doctor` 上下文中可用的操作：

| 操作         | 默认值 | 描述                                                                                           |
| :----------- | :----- | :--------------------------------------------------------------------------------------------- |
| `doctor:fix` | F      | 将诊断报告发送给 Claude 以修复报告的问题。仅在发现问题时激活                                    |

### 语音操作

当启用[语音听写](/en/voice-dictation)时，在 `Chat` 上下文中可用的操作：

| 操作               | 默认值 | 描述                                                       |
| :----------------- | :----- | :--------------------------------------------------------- |
| `voice:pushToTalk` | Space  | 听写提示。根据 `/voice` 模式长按或点击                     |

### 滚动操作

当启用[全屏渲染](/en/fullscreen)时，在 `Scroll` 上下文中可用的操作：

| 操作                        | 默认值                 | 描述                                                                                              |
| :-------------------------- | :--------------------- | :------------------------------------------------------------------------------------------------ |
| `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+Left             | 将活动选择向左扩展一列                                                                            |
| `selection:extendRight`     | Shift+Right            | 将活动选择向右扩展一列                                                                            |
| `selection:extendUp`        | Shift+Up               | 将活动选择向上扩展一行。当选择到达顶部边缘时滚动视口                                              |
| `selection:extendDown`      | Shift+Down             | 将活动选择向下扩展一行。当选择到达底部边缘时滚动视口                                              |
| `selection:extendLineStart` | Shift+Home             | 将活动选择扩展到行首                                                                              |
| `selection:extendLineEnd`   | Shift+End              | 将活动选择扩展到行尾                                                                              |

## 按键语法

### 修饰键

使用 `+` 分隔符与修饰键：

* `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`。

例如：

```text theme={null}
ctrl+k          Ctrl + K
shift+tab       Shift + Tab
meta+p          Option + P on macOS, Alt + P elsewhere
ctrl+shift+c    Multiple modifiers
```

### 大写字母

单独的大写字母隐含 Shift。例如，`K` 等同于 `shift+k`。这对于 vim 风格的绑定很有用，其中大写和小写键具有不同的含义。

带修饰键的大写字母（例如 `ctrl+K`）被视为风格性的，**不**隐含 Shift：`ctrl+K` 与 `ctrl+k` 相同。

### 和弦

和弦是用空格分隔的按键序列：

```text theme={null}
ctrl+k ctrl+s   Press Ctrl+K, release, then Ctrl+S
```

### 特殊键

* `escape` 或 `esc` - Escape 键
* `enter` 或 `return` - Enter 键
* `tab` - Tab 键
* `space` - 空格键
* `up`、`down`、`left`、`right` - 方向键
* `backspace`、`delete` - 删除键

## 取消绑定默认快捷键

将操作设置为 `null` 以取消绑定默认快捷键：

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

这也适用于和弦绑定。取消绑定共享前缀的每个和弦可释放该前缀用于单键绑定：

```json theme={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` → 编辑器模式启用 vim 模式时，按键绑定和 vim 模式独立运行：

* **Vim 模式**在文本输入级别处理输入（光标移动、模式、移动命令）
* **按键绑定**在组件级别处理操作（切换待办事项、提交等）
* vim 模式中的 Escape 键将 INSERT 切换为 NORMAL 模式；它不会触发 `chat:cancel`
* 大多数 Ctrl+键快捷键会穿过 vim 模式传递到按键绑定系统
* 在 vim NORMAL 模式下，`?` 显示帮助菜单（vim 行为）

## 验证

Claude Code 会验证你的按键绑定并显示以下警告：

* 解析错误（无效的 JSON 或结构）
* 无效的上下文名称
* 保留快捷键冲突
* 终端复用器冲突
* 同一上下文中的重复绑定

运行 `/doctor` 可查看任何按键绑定警告。
