Настройте ваш терминал для Claude Code
Исправьте Shift+Enter для новых строк, получайте звуковой сигнал терминала при завершении Claude, настройте tmux, сопоставьте цветовую схему и включите режим Vim в CLI Claude Code.
Claude Code работает в любом терминале без конфигурации. Эта страница предназначена для случаев, когда что-то конкретное ведёт себя не так, как вы ожидаете. Найдите вашу проблему ниже. Если всё уже работает правильно, вам не нужна эта страница.
- Shift+Enter отправляет вместо вставки новой строки
- Сочетания клавиш с Option на macOS ничего не делают
- Нет звука или оповещения при завершении Claude
- Вы запускаете Claude Code внутри tmux
- Backspace удаляет целое слово на Windows
- Дисплей мерцает или прокрутка истории прыгает
- Вы хотите использовать клавиши Vim в приглашении
Эта страница посвящена тому, чтобы ваш терминал отправлял правильные сигналы в 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 или позже | Работает без настройки. Требуется Claude Code v2.1.269 или позже |
| VS Code, Cursor, Devin Desktop, Alacritty до версии 0.16, Zed | Запустите /terminal-setup один раз |
| gnome-terminal, JetBrains IDEs такие как PyCharm и Android Studio | Недоступно; используйте Ctrl+J или \ затем Enter |
Для VS Code, Cursor, Devin Desktop, Alacritty до версии 0.16 и Zed, /terminal-setup записывает сочетание клавиш Shift+Enter в файл конфигурации терминала. При первом запуске вы видите подтверждение, например Installed VSCode terminal Shift+Enter key binding. Существующие сочетания клавиш остаются на месте; если вы видите сообщение, например VSCode terminal Shift+Enter key binding already configured, изменений не было внесено. Запустите /terminal-setup непосредственно в хост-терминале, а не внутри tmux или screen, так как ему нужно записать в конфигурацию хост-терминала.
В VS Code, Cursor и Devin Desktop, /terminal-setup также обновляет два параметра редактора: он устанавливает terminal.integrated.gpuAcceleration на "off" для предотвращения искажённого текста в интегрированном терминале и устанавливает terminal.integrated.mouseWheelScrollSensitivity для более плавной прокрутки в полноэкранном режиме. Чтобы отменить изменение ускорения GPU, установите его обратно на "auto" и перезагрузите окно редактора.
В Zed, /terminal-setup обновляет ваш keymap.json на месте:
- Если keymap уже содержит сочетания клавиш и ни одно из них не является Terminal
shift-enter, Claude Code сначала создаёт его резервную копию в том же каталоге, напримерkeymap.json.1a2b3c4d.bak, затем объединяет сочетание клавиш Shift+Enter в ваш keymap, сохраняя ваши другие сочетания клавиш и комментарии - Если Claude Code не может прочитать или разобрать keymap, не может создать резервную копию или не может проверить объединённый результат, он оставляет файл без изменений и выводит блок сочетания клавиш для добавления вручную
Если вы работаете внутри tmux, Shift+Enter также требует конфигурацию tmux ниже даже когда внешний терминал её поддерживает.
Чтобы привязать новую строку к другой клавише или поменять поведение так, чтобы Enter вставлял новую строку, а Shift+Enter отправлял, сопоставьте действия chat:newline и chat:submit в вашем файле сочетаний клавиш.
Включение сочетаний клавиш с клавишей Option на macOS
Некоторые сочетания клавиш Claude Code используют клавишу Option, например Option+Enter для новой строки или Option+P для переключения моделей. На macOS большинство терминалов по умолчанию не отправляют Option в качестве модификатора, поэтому эти сочетания клавиш не работают, пока вы их не включите. Параметр терминала для этого обычно называется "Use Option as Meta Key"; Meta — это историческое название Unix для клавиши, которая теперь называется Option или Alt.
Откройте Settings → Profiles → Keyboard и установите флажок "Use Option as Meta Key".
Если вы приняли приглашение Claude Code для первоначальной настройки терминала, это уже сделано. Это приглашение запускает /terminal-setup для вас, что включает Option как Meta и отключает звуковой сигнал в вашем профиле Apple Terminal.
В режиме чтения с экрана /terminal-setup оставляет параметр звонка без изменений, чтобы звонок терминала оставался слышимым. До версии 2.1.211 /terminal-setup отключал звонок даже в режиме чтения с экрана. Если более ранний запуск отключил звонок, включите его снова в Settings → Profiles → Advanced → "Audible bell".
Откройте Settings → Profiles → Keys → General и установите Left Option key и Right Option key на "Esc+".
Запуск /terminal-setup в iTerm2 включает "Applications in terminal may access clipboard" в Settings → General → Selection, чтобы команда /copy могла писать в буфер обмена вашей системы. Команда обнаруживает iTerm2 даже при запуске изнутри tmux. Перезагрузите iTerm2, чтобы изменение вступило в силу.
Добавьте "terminal.integrated.macOptionIsMeta": true в ваши параметры VS Code.
Для Ghostty, Kitty и других терминалов ищите параметр Option-as-Alt или Option-as-Meta в файле конфигурации терминала.
Получение звонка терминала или уведомления
Когда Claude завершает задачу или ждёт разрешения, и вы, похоже, отошли от терминала, он отправляет событие уведомления. Смотрите когда срабатывает каждый тип уведомления для точного времени. Отображение этого как звонка терминала или уведомления рабочего стола позволяет вам переключиться на другую работу, пока выполняется длительная задача.
По умолчанию Claude Code отправляет уведомление рабочего стола только в Ghostty, Kitty и iTerm2. В других терминалах установите preferredNotifChannel на "terminal_bell" для звонка терминала, или настройте Notification hook для пользовательского звука или команды. Следующая запись параметров включает звонок терминала:
{
"preferredNotifChannel": "terminal_bell"
}
Уведомление рабочего стола достигает вашей локальной машины через SSH, поэтому удалённый сеанс всё ещё может вас оповестить. Ghostty и Kitty перенаправляют его в центр уведомлений вашей ОС без дополнительной настройки. iTerm2 требует включения перенаправления:
Откройте параметры уведомлений iTerm2
Перейдите в Settings → Profiles → Terminal.
Включите оповещения
Установите флажок "Notification Center Alerts", затем нажмите "Filter Alerts" и включите "Send escape sequence-generated alerts".
Если уведомления по-прежнему не появляются, убедитесь, что приложение вашего терминала имеет разрешение на уведомления в параметрах ОС, и если вы работаете внутри tmux, включите passthrough.
Воспроизведение звука с помощью Notification hook
В любом терминале вы можете настроить Notification hook для воспроизведения звука или запуска пользовательской команды, когда Claude нуждается в вашем внимании. Hooks работают наряду со встроенным уведомлением, а не заменяют его, поэтому терминалы, которые не получают уведомление рабочего стола, такие как Warp или встроенный терминал VS Code, могут использовать hook или установить preferredNotifChannel на "terminal_bell" вместо этого.
Пример ниже воспроизводит системный звук на macOS. Связанное руководство содержит команды уведомлений рабочего стола для macOS, Linux и Windows.
{
"hooks": {
"Notification": [
{
"hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff" }]
}
]
}
}
Настройка tmux
Когда Claude Code работает внутри tmux, по умолчанию возникают две проблемы: 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, чтобы сочетание клавиш для новой строки работало.
Исправление удаления целого слова при нажатии Backspace на Windows
На Windows Claude Code читает Backspace, поступающий как ^H, как Ctrl+Backspace, который удаляет предыдущее слово, за исключением случаев, когда TERM_PROGRAM имеет значение mintty или TERM имеет значение cygwin. На macOS и Linux Claude Code читает его как обычный Backspace.
Если каждое нажатие Backspace удаляет целое слово, ваш терминал отправляет ^H для обычного Backspace. Установите CLAUDE_CODE_BS_AS_CTRL_BACKSPACE=0. Backspace и Ctrl+H затем стирают по одному символу каждый. Если Ctrl+Backspace стирает только один символ на macOS или Linux, потому что ваш терминал отправляет ^H для него, установите переменную на 1 вместо этого.
Подберите цветовую тему
Используйте команду /theme или средство выбора темы в /config, чтобы выбрать тему Claude Code, которая соответствует вашему терминалу. Выбор опции auto автоматически определяет светлый или тёмный фон вашего терминала, поэтому тема следует изменениям внешнего вида ОС всякий раз, когда это делает ваш терминал. Claude Code не контролирует собственную цветовую схему терминала, которая устанавливается приложением терминала.
Чтобы настроить, что отображается в нижней части интерфейса, настройте пользовательскую строку состояния, которая показывает текущую модель, рабочий каталог, ветку git или другой контекст.
Создайте пользовательскую тему
Помимо встроенных предустановок, /theme отображает все определённые вами пользовательские темы и любые темы, предоставленные установленными plugins. Выберите New custom theme… в конце списка, чтобы создать её интерактивно: вы назовёте тему, а затем выберете отдельные цветовые токены для переопределения. Нажмите Ctrl+E, пока выделена пользовательская тема, чтобы отредактировать её.
Каждая пользовательская тема — это JSON-файл в ~/.claude/themes/. Имя файла без расширения .json — это слаг темы, а выбор темы сохраняет custom:<slug> как ваше предпочтение темы. Файл имеет три необязательных поля:
| Поле | Тип | Описание |
|---|---|---|
name |
string | Метка отображения, показываемая в /theme. По умолчанию используется слаг имени файла |
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. Неизвестные токены и недопустимые значения цветов игнорируются, поэтому опечатка не может нарушить отрисовку.
Следующий пример определяет тему, которая сохраняет тёмную предустановку, но перекрашивает акцент приглашения, текст ошибки и текст успеха:
{
"name": "Dracula",
"base": "dark",
"overrides": {
"claude": "#bd93f9",
"error": "#ff5555",
"success": "#50fa7b"
}
}
Claude Code отслеживает ~/.claude/themes/ и перезагружается при добавлении или изменении файла, поэтому изменения, внесённые в вашем редакторе, применяются к работающему сеансу без перезагрузки. Если папка ~/.claude/themes/ не существовала при запуске Claude Code, перезагрузитесь один раз после создания первого файла темы. После этого изменения применяются без перезагрузки.
Справочник ниже охватывает токены, которые вы можете установить в overrides. Интерактивный редактор в /theme показывает те же токены с живым предпросмотром, плюс несколько специализированных акцентов, таких как цвета экрана адаптации, которые здесь опущены.
Справочник цветовых токенов
Следующий пример объединяет токены из нескольких групп ниже: фирменный акцент, границу режима плана, фоны diff и фон сообщения.
{
"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 |
Предупреждения, сообщения о предостережении и граница режима auto |
merged |
Статус объединённого запроса на слияние |
Поле ввода и индикаторы режима
Установите цвет границы поля ввода и акцент, отображаемый при активном режиме разрешения или индикаторе.
| Токен | Управляет |
|---|---|
promptBorder |
Граница поля ввода |
planMode |
Акцент режима Plan mode, сообщения режима плана и диалоги режима плана |
autoAccept |
Акцент режима Accept-edits |
bashBorder |
Граница поля ввода при вводе команды оболочки ! |
ide |
Индикатор подключения IDE |
fastMode |
Индикатор режима Fast mode |
effortUltra |
Тег ultracode на границе поля ввода, пока ultracode включён. Ваше переопределение этого цвета вступает в силу в Claude Code v2.1.239 или позже |
Отрисовка diff
Раскрасьте добавленный и удалённый код в правках и рецензиях файлов.
| Токен | Управляет |
|---|---|
diffAdded |
Фон добавленных строк |
diffRemoved |
Фон удалённых строк |
diffAddedDimmed |
Фон добавленных строк в приглушённом diff, показываемом после отклонения правки |
diffRemovedDimmed |
Фон удалённых строк в приглушённом diff, показываемом после отклонения правки |
diffAddedWord |
Выделение на уровне слова в добавленной строке |
diffRemovedWord |
Выделение на уровне слова в удалённой строке |
Полноэкранный режим
Claude Code рисует userMessageBackground, bashMessageBackgroundColor и memoryBackgroundColor как в средстве отрисовки по умолчанию, так и в полноэкранном. Он использует userMessageBackgroundHover и selectionBg только в режиме полноэкранной отрисовки.
| Токен | Управляет |
|---|---|
userMessageBackground |
Фон позади ваших сообщений в стенограмме |
userMessageBackgroundHover |
Фон позади сообщения при наведении или развёртывании |
bashMessageBackgroundColor |
Фон позади записей команд оболочки ! в стенограмме |
memoryBackgroundColor |
Фон позади записей памяти # в стенограмме |
selectionBg |
Фон текста, выбранного мышью |
Счётчик использования и метки динамика
Отрегулируйте полосу, показываемую в представлении /usage, и метки, которые отличают ваши сообщения от сообщений Claude.
| Токен | Управляет |
|---|---|
rate_limit_fill |
Заполненная часть счётчика использования |
rate_limit_empty |
Незаполненная часть счётчика использования |
briefLabelYou |
Цвет метки You на ваших сообщениях |
briefLabelClaude |
Цвет метки Claude на сообщениях помощника |
Варианты shimmer и цвета подагентов
Несколько токенов имеют парный вариант shimmer, который предоставляет более светлый цвет, используемый в анимированном градиенте спиннера. Переопределите shimmer вместе с его базовым токеном, если анимация выглядит несовместимой.
claudeиclaudeShimmerwarningиwarningShimmerpermissionиpermissionShimmerpromptBorderиpromptBorderShimmerinactiveиinactiveShimmerfastModeиfastModeShimmer
Каждый subagent и параллельная задача отображаются в одном из восьми именованных цветов, чтобы вы могли отличить их в стенограмме. Имена токенов следуют шаблону <color>_FOR_SUBAGENTS_ONLY, где <color> — это red, blue, green, yellow, purple, orange, pink или cyan. Переопределите их, чтобы изменить внешний вид каждого именованного цвета. Например, подагент с color: blue в его определении отрисовывается с использованием значения blue_FOR_SUBAGENTS_ONLY.
Claude Code отрисовывает ключевое слово ultrathink во входных данных приглашения с семицветным радужным градиентом. Имена токенов следуют шаблону rainbow_<color> и rainbow_<color>_shimmer, где <color> — это red, orange, yellow, green, blue, indigo или violet.
Переключение на полноэкранный рендеринг
В режиме чтения с экрана этот раздел не применяется. Claude Code всегда отображается как обычный прокручиваемый текст, кроме присоединённых фоновых сеансов, и если вы запустите /tui fullscreen в любом другом сеансе, Claude Code выведет объяснение вместо переключения.
Если дисплей мерцает или позиция прокрутки прыгает во время работы Claude, переключитесь на режим полноэкранного рендеринга. В этом режиме вы прокручиваете с помощью мыши или PageUp внутри Claude Code, а не с помощью встроенной прокрутки вашего терминала; см. страницу полноэкранного режима для получения информации о поиске и копировании.
Если мерцание — единственная проблема и ваш терминал поддерживает синхронизированный вывод, но не определяется автоматически, например Emacs eat, установите CLAUDE_CODE_FORCE_SYNC_OUTPUT=1, чтобы остановить мерцание без изменения рендеров.
Запустите /tui fullscreen для переключения и сохранения предпочтения. Ваш разговор перезапустится в целости и сохранности, и будущие сеансы начнутся в полноэкранном режиме, если только полноэкранный запуск не завершится ошибкой. Вы также можете установить переменную окружения CLAUDE_CODE_NO_FLICKER перед запуском Claude Code:
CLAUDE_CODE_NO_FLICKER=1 claude
$env:CLAUDE_CODE_NO_FLICKER = "1"; claude
{
"env": {
"CLAUDE_CODE_NO_FLICKER": "1"
}
}
Вставка большого содержимого
Когда вы вставляете более 800 символов или более трёх строк в подсказку, Claude Code сворачивает ввод в заполнитель, например [Pasted text #1 +120 lines], чтобы поле ввода оставалось удобным для использования. В окне терминала высотой менее 12 строк лимит строк снижается, поэтому Claude Code сворачивает трёхстрочную вставку при 11 строках и любую многострочную вставку при 10 строках или меньше. Claude Code по-прежнему отправляет полное содержимое при отправке.
Когда вы удаляете с помощью сочетания клавиш для слова или строки, такого как Ctrl+W или Ctrl+K, или с помощью удаления vim через движение f/t, такое как df], и удаляемый диапазон достигает внутри заполнителя, Claude Code удаляет заполнитель целиком. Вы можете вставить удаление обратно, чтобы восстановить его, с помощью Ctrl+Y после сочетания клавиш для слова или строки, или с помощью p в режиме NORMAL после удаления vim.
Claude Code хранит свёрнутое содержимое в ~/.claude/paste-cache/, поэтому когда вы вызываете подсказку из истории команд и повторно отправляете её, Claude Code отправляет полное вставленное содержимое снова, включая в более позднем сеансе, пока развёртка очистки не удалит файл кэша.
Claude Code удаляет файлы кэша старше cleanupPeriodDays, следуя правилам развёртки очистки, поэтому вызванная подсказка может ссылаться на вставленный текст, который больше не существует. Когда вы отправляете такую подсказку, Claude Code никогда не отправляет буквальную строку [Pasted text #N] и показывает уведомление с названием отсутствующей вставки:
- В простой подсказке с оставшимся текстом Claude Code удаляет заполнитель и отправляет оставшийся текст.
- В команде режима shell или команде
/, где удаление изменило бы то, что выполняется, и в любой подсказке, где удаление оставляет пусто, Claude Code отменяет отправку и сохраняет исходный текст в вводе с заполнителем, всё ещё находящимся в нём. Удалите заполнитель или отредактируйте команду, затем повторно отправьте.
Интегрированный терминал VS Code может отбросить символы из очень больших вставок, прежде чем они достигнут Claude Code, поэтому предпочитайте там рабочие процессы на основе файлов. Для очень больших входных данных, таких как целые файлы или длинные журналы, запишите содержимое в файл и попросите Claude прочитать его вместо вставки. Это сохраняет стенограмму разговора читаемой и позволяет Claude ссылаться на файл по пути в более поздних ходах.
Редактирование подсказок с сочетаниями клавиш Vim
Claude Code включает режим редактирования в стиле Vim для ввода подсказок. Включите его через /config → Editor mode или установив editorMode на "vim" в ~/.claude/settings.json. Установите Editor mode обратно на normal, чтобы отключить его.
Режим Vim поддерживает подмножество движений и операторов режимов NORMAL и VISUAL, таких как навигация hjkl, выделение v/V и d/c/y с текстовыми объектами. Полную таблицу клавиш см. в справочнике режима редактора Vim.
Движения Vim не переназначаются через файл сочетаний клавиш. Чтобы сопоставить двухклавишную последовательность режима INSERT, такую как jj, с Escape, установите vimInsertModeRemaps в параметрах пользователя.
Нажатие Enter по-прежнему отправляет вашу подсказку в режиме INSERT, в отличие от стандартного Vim. Используйте o или O в режиме NORMAL или Ctrl+J, чтобы вставить новую строку.
Связанные ресурсы
- Интерактивный режим: полный справочник сочетаний клавиш и таблица клавиш Vim
- Сочетания клавиш: переназначьте любое сочетание клавиш Claude Code, включая Enter и Shift+Enter
- Полноэкранный рендеринг: детали прокрутки, поиска и копирования в полноэкранном режиме
- Руководство по hooks: больше примеров хуков Notification для Linux и Windows
- Troubleshooting: исправления для проблем вне конфигурации терминала