跳到正文
FunCoding

搜索

搜索文档、智能体、博客、Skill 和 MCP

终端配置

Shift+Enter 换行、macOS 的 Option 键、完成时的响铃与通知、tmux、Windows 退格、主题与自定义主题。

Claude Code 在任何终端里不需要配置就能工作。本页用于某个具体地方不按你预期工作的时候,按症状找对应的一节;如果一切都已经顺手,就不需要这一页。本页讲的是让终端向 Claude Code 发送正确的信号;想改变 Claude Code 本身响应哪些键,见快捷键配置。

输入多行提示

按 Enter 提交消息。想换行而不提交,按 Ctrl+J,或输入 \ 后按 Enter,两者在每个终端里无需设置都能用。大多数终端里也可以按 Shift+Enter,但支持程度因终端模拟器而异:

终端Shift+Enter 换行
Ghostty、Kitty、iTerm2、WezTerm、Warp、Apple Terminal、Windows Terminal无需设置即可用
其他支持 kitty 键盘协议的终端,如 foot 和 Alacritty 0.16 及以上无需设置即可用(需要 v2.1.269 或更新版本)
VS Code、Cursor、Devin Desktop、0.16 之前的 Alacritty、Zed运行一次 /terminal-setup
gnome-terminal、PyCharm 和 Android Studio 等 JetBrains IDE不可用,用 Ctrl+J 或 \ 后按 Enter

对 VS Code、Cursor、Devin Desktop、0.16 之前的 Alacritty 和 Zed,/terminal-setup 会把 Shift+Enter 的快捷键绑定写进终端的配置文件;在 VS Code、Cursor 和 Devin Desktop 里,它还会更新两个编辑器设置:把 terminal.integrated.gpuAcceleration 设为 "off" 以防止集成终端里的文字乱码,并设置 terminal.integrated.mouseWheelScrollSensitivity 让全屏渲染下滚动更顺畅。在 tmux 里运行时,即使外层终端支持,Shift+Enter 也需要下面的 tmux 配置。想把换行绑到别的键,或交换成 Enter 插入换行、Shift+Enter 提交,在快捷键文件里映射 chat:newline 和 chat:submit 动作。

在 macOS 上启用 Option 键快捷键

一些 Claude Code 快捷键使用 Option 键,如 Option+Enter 换行、Option+P 切换模型。在 macOS 上,大多数终端默认不把 Option 作为修饰键发送,所以这些快捷键在你启用之前什么都不做,终端里对应的设置通常叫「Use Option as Meta Key」之类:

  • Apple Terminal:设置 → 描述文件 → 键盘,勾选「Use Option as Meta Key」
  • iTerm2:设置 → Profiles → Keys → General,把 Left Option key 和 Right Option key 设为「Esc+」
  • VS Code:在设置里添加 "terminal.integrated.macOptionIsMeta": true
  • Ghostty、Kitty 等其他终端:在终端的配置文件里找 Option-as-Alt 或 Option-as-Meta 设置

获得终端响铃或通知

当 Claude 完成任务或因权限提示暂停、而你看起来不在终端前时,它会触发通知事件。默认情况下,Claude Code 只在 Ghostty、Kitty 和 iTerm2 里发送桌面通知。在其他终端里,把 preferredNotifChannel 设为 "terminal_bell" 改为响铃:

{
  "preferredNotifChannel": "terminal_bell"
}

桌面通知通过 SSH 也能到达你的本机,所以远程会话仍然可以提醒你。Ghostty 和 Kitty 无需进一步设置就会把它转发到你的系统通知中心;iTerm2 需要你启用转发:设置 → Profiles → Terminal,勾选「Notification Center Alerts」,点「Filter Alerts」并启用「Send escape sequence-generated alerts」。如果通知仍然没出现,确认终端应用在系统设置里有通知权限,并且在 tmux 里运行时要启用 passthrough。

用 Notification Hook 播放声音:在任何终端里,你都可以配置 Notification Hook,在 Claude 需要你注意时播放声音或运行自定义命令。Hook 与内置通知并行运行,而不是替换它。下面的例子在 macOS 上播放系统声音:

{
  "hooks": {
    "Notification": [
      {
        "hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff" }]
      }
    ]
  }
}

配置 tmux

在 tmux 里运行 Claude Code 时,默认 Shift+Enter 会提交而不是换行,桌面通知和进度条也到不了外层终端。把下面几行加到 ~/.tmux.conf,然后运行 tmux source-file ~/.tmux.conf:

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,使换行快捷键能用。

修复 Windows 上退格键删除整个单词

在 Windows 上,Claude Code 把以 ^H 形式到达的退格读作 Ctrl+Backspace(删除前一个单词),除非 TERM_PROGRAM 是 mintty 或 TERM 是 cygwin。如果你每按一次退格就删除一个整词,说明你的终端对普通退格发送的是 ^H,设置环境变量 CLAUDE_CODE_BS_AS_CTRL_BACKSPACE=0,退格和 Ctrl+H 就各自只删一个字符。

匹配颜色主题

用 /theme 命令,或 /config 里的主题选择器,选一个与你的终端相匹配的 Claude Code 主题。选择 auto 选项会检测终端的明暗背景,所以终端跟随系统外观变化时,主题也会跟着变化。

创建自定义主题:除内置预设外,/theme 还会列出你定义的自定义主题和已安装插件贡献的主题。选列表末尾的 New custom theme… 可交互式创建。每个自定义主题是 ~/.claude/themes/ 里的一个 JSON 文件,文件名(去掉 .json)是主题的 slug。文件有三个可选字段:

字段类型说明
name字符串在 /theme 里显示的标签,默认是文件名 slug
base字符串主题所基于的内置预设:dark、light、dark-daltonized、light-daltonized、dark-ansi 或 light-ansi,默认 dark
overrides对象颜色令牌名到颜色值的映射,未列出的令牌沿用基础预设

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

官方原文还涵盖切换到全屏渲染(减少闪烁和滚动回跳)以及用 Vim 键位编辑提示。