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

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

# 为 Claude Code 配置终端

> 修复 Shift+Enter 换行问题、在 Claude 完成时获取终端提示音、配置 tmux、匹配颜色主题，以及在 Claude Code CLI 中启用 Vim 模式。

Claude Code 可在任何终端中工作，无需配置。本页面适用于某些具体功能不符合您预期的情况。在下方查找您的症状。如果一切正常，您不需要此页面。

* [Shift+Enter 提交而不是插入新行](#enter-multiline-prompts)
* [Option 键快捷键在 macOS 上不起作用](#enable-option-key-shortcuts-on-macos)
* [Claude 完成时没有声音或提醒](#get-a-terminal-bell-or-notification)
* [您在 tmux 中运行 Claude Code](#configure-tmux)
* [显示闪烁或回滚跳动](#switch-to-fullscreen-rendering)
* [您想在提示中使用 Vim 键](#edit-prompts-with-vim-keybindings)

本页面是关于让您的终端向 Claude Code 发送正确的信号。要更改 Claude Code 本身响应的按键，请参阅[按键绑定](/en/keybindings)。

## 输入多行提示

按 Enter 会提交您的消息。要添加换行而不提交，请按 Ctrl+J，或输入 `\` 然后按 Enter。两者都适用于所有终端，无需设置。

在大多数终端中，您也可以按 Shift+Enter，但支持因终端模拟器而异：

| 终端                                                                | Shift+Enter 换行                     |
| :---------------------------------------------------------------------- | :------------------------------------------ |
| Ghostty、Kitty、iTerm2、WezTerm、Warp、Apple Terminal、Windows Terminal | 无需设置即可使用                         |
| VS Code、Cursor、Windsurf、Alacritty、Zed                               | 运行一次 `/terminal-setup`                  |
| gnome-terminal、JetBrains IDE（如 PyCharm 和 Android Studio）       | 不可用；使用 Ctrl+J 或 `\` 然后按 Enter |

对于 VS Code、Cursor、Windsurf、Alacritty 和 Zed，`/terminal-setup` 会将 Shift+Enter 和其他按键绑定写入终端的配置文件。在 VS Code、Cursor 和 Windsurf 中，它还会在编辑器设置中设置 `terminal.integrated.mouseWheelScrollSensitivity`，以使[全屏模式](/en/fullscreen)下的滚动更顺畅。现有的绑定和设置会保留；如果您看到类似 `VSCode terminal Shift+Enter key binding already configured` 的消息，则表示未进行任何更改。请直接在宿主终端中运行 `/terminal-setup`，而不是在 tmux 或 screen 内部运行，因为它需要写入宿主终端的配置。

如果您在 tmux 内部运行，即使外部终端支持，Shift+Enter 也需要下面的 [tmux 配置](#configure-tmux)。

要将换行绑定到不同的键，或交换行为使 Enter 插入新行而 Shift+Enter 提交，请在您的[按键绑定文件](/en/keybindings)中映射 `chat:newline` 和 `chat:submit` 操作。

## 在 macOS 上启用 Option 键快捷键

一些 Claude Code 快捷键使用 Option 键，例如 Option+Enter 用于换行或 Option+P 用于切换模型。在 macOS 上，大多数终端默认不将 Option 作为修饰键发送，因此这些快捷键不起作用，直到您启用它。此功能的终端设置通常标记为"将 Option 用作 Meta 键"；Meta 是历史上 Unix 对现在标记为 Option 或 Alt 的键的名称。

<Tabs>
  <Tab title="Apple Terminal">
    打开 Settings → Profiles → Keyboard 并勾选"Use Option as Meta Key"。

    如果您接受了 Claude Code 首次运行提示中提供的"Option+Enter for newlines and visual bell"，则此操作已完成。该提示为您运行 `/terminal-setup`，它在您的 Apple Terminal 配置文件中启用 Option 作为 Meta 并将音频提示音切换为视觉屏幕闪烁。
  </Tab>

  <Tab title="iTerm2">
    打开 Settings → Profiles → Keys → General 并将 Left Option key 和 Right Option key 设置为 "Esc+"。

    在 iTerm2 中运行 `/terminal-setup` 会在 Settings → General → Selection 下启用"Applications in terminal may access clipboard"，以便 `/copy` 命令可以写入您的系统剪贴板。即使从 tmux 内部运行，该命令也能检测到 iTerm2。重启 iTerm2 以使更改生效。
  </Tab>

  <Tab title="VS Code">
    将 `"terminal.integrated.macOptionIsMeta": true` 添加到您的 VS Code 设置中。
  </Tab>
</Tabs>

对于 Ghostty、Kitty 和其他终端，请在终端的配置文件中查找 Option-as-Alt 或 Option-as-Meta 设置。

## 获取终端提示音或通知

当 Claude 完成任务或因权限提示而暂停时，它会触发通知事件。将其显示为终端提示音或桌面通知，让您可以在长时间任务运行时切换到其他工作。

默认情况下，Claude Code 仅在 Ghostty、Kitty 和 iTerm2 中发送桌面通知。在其他终端中，将 [`preferredNotifChannel`](/en/settings#available-settings) 设置为 `"terminal_bell"` 以改为响铃终端提示音，或配置[通知钩子](#play-a-sound-with-a-notification-hook)以使用自定义声音或命令。

桌面通知通过 SSH 到达您的本地机器，因此远程会话仍然可以提醒您。Ghostty 和 Kitty 无需进一步设置即可将其转发到您的操作系统通知中心。iTerm2 需要您启用转发：

<Steps>
  <Step title="打开 iTerm2 通知设置">
    前往 Settings → Profiles → Terminal。
  </Step>

  <Step title="启用提醒">
    勾选"Notification Center Alerts"，然后点击"Filter Alerts"并启用"Send escape sequence-generated alerts"。
  </Step>
</Steps>

如果通知仍未出现，请确认您的终端应用程序在操作系统设置中具有通知权限，如果您在 tmux 中运行，请[启用透传](#configure-tmux)。

### 使用通知钩子播放声音

在任何终端中，您可以配置[通知钩子](/en/hooks-guide#get-notified-when-claude-needs-input)来播放声音或在 Claude 需要您注意时运行自定义命令。钩子与内置通知一起运行，而不是替换它，因此不接收桌面通知的终端（如 Warp 或 VS Code 集成终端）可以使用钩子或将 `preferredNotifChannel` 设置为 `"terminal_bell"`。

以下示例在 macOS 上播放系统声音。链接的指南提供了适用于 macOS、Linux 和 Windows 的桌面通知命令。

```json ~/.claude/settings.json theme={null}
{
  "hooks": {
    "Notification": [
      {
        "hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff" }]
      }
    ]
  }
}
```

## 配置 tmux

当 Claude Code 在 tmux 内部运行时，默认情况下有两件事会出问题：Shift+Enter 提交而不是插入新行，以及桌面通知和[进度条](/en/settings#available-settings)永远不会到达外部终端。将以下行添加到 `~/.tmux.conf`，然后运行 `tmux source-file ~/.tmux.conf` 将其应用到正在运行的服务器：

```bash ~/.tmux.conf theme={null}
set -g allow-passthrough on
set -s extended-keys on
set -as terminal-features 'xterm*:extkeys'
```

`allow-passthrough` 行让通知和进度更新到达外部终端，而不是被 tmux 吞掉。`extended-keys` 行让 tmux 区分 Shift+Enter 和普通 Enter，以便换行快捷键正常工作。

## 匹配颜色主题

使用 `/theme` 命令或 `/config` 中的主题选择器，选择与您的终端匹配的 Claude Code 主题。选择自动选项会检测终端的浅色或深色背景，因此当终端跟随操作系统外观更改时主题也会随之更改。Claude Code 不控制终端本身的颜色方案，该方案由终端应用程序设置。

要自定义界面底部显示的内容，请配置[自定义状态行](/en/statusline)以显示当前模型、工作目录、git 分支或其他上下文。

### 创建自定义主题

<Note>
  自定义主题需要 Claude Code v2.1.118 或更高版本。
</Note>

除了内置预设外，`/theme` 还会列出您定义的任何自定义主题以及已安装[插件](/en/plugins-reference#themes)贡献的任何主题。在列表末尾选择 **New custom theme...** 以交互方式创建主题：您命名主题，然后选择要覆盖的各个颜色标记。在自定义主题高亮时按 `Ctrl+E` 可编辑它。

每个自定义主题是 `~/.claude/themes/` 中的一个 JSON 文件。不带 `.json` 扩展名的文件名是主题的 slug，选择主题会将 `custom:<slug>` 存储为您的主题首选项。该文件有三个可选字段：

| 字段       | 类型   | 描述                                                                                                                                     |
| :---------- | :----- | :---------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`      | string | 在 `/theme` 中显示的标签。默认为文件名 slug                                                                                  |
| `base`      | string | 主题开始的内置预设：`dark`、`light`、`dark-daltonized`、`light-daltonized`、`dark-ansi` 或 `light-ansi`。默认为 `dark` |
| `overrides` | object | 颜色标记名称到颜色值的映射。此处未列出的标记会回退到基础预设                                                |

颜色值接受 `#rrggbb`、`#rgb`、`rgb(r,g,b)`、`ansi256(n)` 或 `ansi:<name>`，其中 `<name>` 是 16 个标准 ANSI 颜色名称之一，如 `red` 或 `cyanBright`。未知标记和无效的颜色值会被忽略，因此拼写错误不会破坏渲染。

以下示例定义了一个保持深色预设但重新着色提示强调色、错误文本和成功文本的主题：

```json ~/.claude/themes/dracula.json theme={null}
{
  "name": "Dracula",
  "base": "dark",
  "overrides": {
    "claude": "#bd93f9",
    "error": "#ff5555",
    "success": "#50fa7b"
  }
}
```

Claude Code 监视 `~/.claude/themes/` 并在文件更改时重新加载，因此在编辑器中进行的编辑无需重启即可应用到正在运行的会话。

下面的参考涵盖了您可以在 `overrides` 中设置的标记。`/theme` 中的交互式编辑器显示相同的标记并带有实时预览，以及一些单用途强调色（如引导屏幕颜色），此处省略。

<Accordion title="颜色标记参考">
  以下示例组合了以下几组中的标记：品牌强调色、计划模式边框、差异背景和全屏消息背景。

  ```json ~/.claude/themes/midnight.json theme={null}
  {
    "name": "Midnight",
    "base": "dark",
    "overrides": {
      "claude": "#a78bfa",
      "planMode": "#38bdf8",
      "diffAdded": "#14532d",
      "diffRemoved": "#7f1d1d",
      "userMessageBackground": "#1e1b4b"
    }
  }
  ```

  #### 文本和强调色

  控制界面中使用的主要品牌强调色和前景文本色调。

  | 标记         | 控制                                                         |
  | :------------ | :--------------------------------------------------------------- |
  | `claude`      | 主要品牌强调色，用于加载动画和助手标签   |
  | `text`        | 默认前景文本                                          |
  | `inverseText` | 在彩色背景上绘制的文本，如状态徽章 |
  | `inactive`    | 次要文本，如提示、时间戳和禁用项     |
  | `subtle`      | 淡色边框和去强调的次要文本                   |
  | `suggestion`  | 自动完成建议和选择器中的选择高亮      |
  | `permission`  | 对话框边框，包括权限提示和选择器         |
  | `remember`    | 记忆和 `CLAUDE.md` 指示器                                |

  #### 状态颜色

  在消息和指示器中表示成功、失败和警告状态。

  | 标记     | 控制                                             |
  | :-------- | :--------------------------------------------------- |
  | `success` | 成功消息和通过检查                  |
  | `error`   | 错误消息和失败                          |
  | `warning` | 警告、注意消息和自动模式边框 |
  | `merged`  | 已合并的拉取请求状态                           |

  #### 输入框和模式指示器

  设置输入框边框颜色和权限模式或指示器处于活动状态时显示的强调色。

  | 标记          | 控制                                           |
  | :------------- | :------------------------------------------------- |
  | `promptBorder` | 默认权限模式下的输入框边框    |
  | `planMode`     | 计划模式强调色和边框                        |
  | `autoAccept`   | 接受编辑模式强调色和边框                |
  | `bashBorder`   | 输入 `!` shell 命令时的输入框边框 |
  | `ide`          | IDE 连接指示器                           |
  | `fastMode`     | 快速模式指示器                                |

  #### 差异渲染

  为文件编辑和审查中的添加和删除代码着色。

  | 标记               | 控制                                           |
  | :------------------ | :------------------------------------------------- |
  | `diffAdded`         | 添加行的背景                          |
  | `diffRemoved`       | 删除行的背景                        |
  | `diffAddedDimmed`   | 添加行附近未更改上下文的背景   |
  | `diffRemovedDimmed` | 删除行附近未更改上下文的背景 |
  | `diffAddedWord`     | 添加行内的单词级高亮          |
  | `diffRemovedWord`   | 删除行内的单词级高亮         |

  #### 全屏模式

  仅在[全屏渲染模式](/en/fullscreen)中应用，消息在此模式下有背景填充。

  | 标记                        | 控制                                                           |
  | :--------------------------- | :----------------------------------------------------------------- |
  | `userMessageBackground`      | 对话记录中您消息背后的背景                  |
  | `userMessageBackgroundHover` | 悬停或展开时消息背后的背景              |
  | `messageActionsBackground`   | 操作栏打开时选中消息背后的背景 |
  | `bashMessageBackgroundColor` | 对话记录中 `!` shell 命令条目背后的背景      |
  | `memoryBackgroundColor`      | 对话记录中 `#` 记忆条目背后的背景             |
  | `selectionBg`                | 鼠标选中文本的背景                         |

  #### 用量表和说话者标签

  调整 `/usage` 视图中显示的条形图以及区分您的消息和 Claude 消息的标签。

  | 标记              | 控制                                          |
  | :----------------- | :------------------------------------------------ |
  | `rate_limit_fill`  | 用量表的填充部分                 |
  | `rate_limit_empty` | 用量表的未填充部分               |
  | `briefLabelYou`    | 您消息上 `You` 标签的颜色         |
  | `briefLabelClaude` | 助手消息上 `Claude` 标签的颜色 |

  #### 闪光变体和子代理颜色

  几个标记有配对的闪光变体，为加载动画中使用的动画渐变提供较浅的颜色。如果动画看起来不匹配，请在其基础标记旁边覆盖闪光标记。

  * `claude` 和 `claudeShimmer`
  * `warning` 和 `warningShimmer`
  * `permission` 和 `permissionShimmer`
  * `promptBorder` 和 `promptBorderShimmer`
  * `inactive` 和 `inactiveShimmer`
  * `fastMode` 和 `fastModeShimmer`

  每个[子代理](/en/sub-agents)和并行任务以八种命名颜色之一显示，以便您在对话记录中区分它们。标记名称遵循 `<color>_FOR_SUBAGENTS_ONLY` 模式，其中 `<color>` 是 `red`、`blue`、`green`、`yellow`、`purple`、`orange`、`pink` 或 `cyan`。覆盖这些标记可更改每种命名颜色的外观。例如，定义中 `color: blue` 的子代理使用 `blue_FOR_SUBAGENTS_ONLY` 值绘制。

  提示输入中的 [`ultrathink`](/en/model-config#use-ultrathink-for-one-off-deep-reasoning) 和 [`ultraplan`](/en/ultraplan) 关键字使用七色彩虹渐变渲染。标记名称遵循 `rainbow_<color>` 和 `rainbow_<color>_shimmer` 模式，其中 `<color>` 是 `red`、`orange`、`yellow`、`green`、`blue`、`indigo` 或 `violet`。
</Accordion>

## 切换到全屏渲染

如果显示闪烁或滚动位置在 Claude 工作时跳动，请切换到[全屏渲染模式](/en/fullscreen)。它绘制到终端为全屏应用保留的单独屏幕上，而不是追加到您的正常回滚中，这使内存使用保持平稳，并添加了鼠标滚动和选择支持。在此模式下，您在 Claude Code 内部使用鼠标或 PageUp 滚动，而不是使用终端的原生回滚；有关如何搜索和复制，请参阅[全屏页面](/en/fullscreen#search-and-review-the-conversation)。

运行 `/tui fullscreen` 可在当前会话中切换，同时保留您的对话。要使其成为默认设置，请在启动 Claude Code 之前设置 `CLAUDE_CODE_NO_FLICKER` 环境变量：

<CodeGroup>
  ```bash Bash 和 Zsh theme={null}
  CLAUDE_CODE_NO_FLICKER=1 claude
  ```

  ```powershell PowerShell theme={null}
  $env:CLAUDE_CODE_NO_FLICKER = "1"; claude
  ```

  ```json ~/.claude/settings.json theme={null}
  {
    "env": {
      "CLAUDE_CODE_NO_FLICKER": "1"
    }
  }
  ```
</CodeGroup>

## 粘贴大量内容

当您向提示中粘贴超过 10,000 个字符时，Claude Code 会将输入折叠为 `[Pasted text]` 占位符，以便输入框保持可用。完整内容在您提交时仍会发送给 Claude。

VS Code 集成终端可能会在非常大的粘贴内容到达 Claude Code 之前丢弃字符，因此在该环境中优先使用基于文件的工作流。对于非常大的输入（如整个文件或长日志），请将内容写入文件并让 Claude 读取它，而不是粘贴。这使对话记录保持可读性，并让 Claude 在后续轮次中通过路径引用该文件。

## 使用 Vim 按键绑定编辑提示

Claude Code 包含一个用于提示输入的 Vim 风格编辑模式。通过 `/config` → Editor mode 启用它，或在 `~/.claude/settings.json` 中将 [`editorMode`](/en/settings#available-settings) 设置为 `"vim"`。将 Editor mode 设置回 `normal` 可关闭它。

Vim 模式支持 NORMAL 和 VISUAL 模式动作和操作符的子集，如 `hjkl` 导航、`v`/`V` 选择以及 `d`/`c`/`y` 配合文本对象。完整的按键表请参阅 [Vim 编辑器模式参考](/en/interactive-mode#vim-editor-mode)。Vim 动作无法通过按键绑定文件重新映射。

在 INSERT 模式下按 Enter 仍会提交您的提示，这与标准 Vim 不同。在 NORMAL 模式下使用 `o` 或 `O`，或使用 Ctrl+J 来插入新行。

## 相关资源

* [交互模式](/en/interactive-mode)：完整的键盘快捷键参考和 Vim 按键表
* [按键绑定](/en/keybindings)：重新映射任何 Claude Code 快捷键，包括 Enter 和 Shift+Enter
* [全屏渲染](/en/fullscreen)：全屏模式下滚动、搜索和复制的详细信息
* [钩子指南](/en/hooks-guide)：适用于 Linux 和 Windows 的更多通知钩子示例
* [故障排除](/en/troubleshooting)：终端配置之外问题的修复
