/keybindings для создания или открытия файла конфигурации в ~/.claude/keybindings.json.
Файл конфигурации
Файл конфигурации сочетаний клавиш — это объект с массивомbindings. Каждый блок указывает контекст и карту нажатий клавиш на действия.
Изменения в файле сочетаний клавиш автоматически обнаруживаются и применяются без перезагрузки Claude Code.
Этот пример привязывает
Ctrl+E к открытию внешнего редактора в контексте чата и отменяет привязку Ctrl+U:
Контексты
Каждый блок привязки указывает контекст, где применяются привязки:
До версии 2.1.205 контекст
Doctor и действие doctor:fix существовали для экрана диагностики /doctor.
Доступные действия
Действия следуют форматуnamespace:action, например chat:submit для отправки сообщения или app:toggleTodos для отображения списка задач. Каждый контекст имеет определённые доступные действия.
Действия приложения
Действия, доступные в контекстеGlobal:
Действия истории
Действия для навигации по истории команд:Действия чата
Действия, доступные в контекстеChat:
*На Windows без режима VT (Node <24.2.0/<22.17.0, Bun <1.2.23) по умолчанию используется Meta+M.
Действия автодополнения
Действия, доступные в контекстеAutocomplete:
Действия подтверждения
Действия, доступные в контекстеConfirmation:
*На Windows без режима VT (Node <24.2.0/<22.17.0, Bun <1.2.23) по умолчанию используется Meta+M.
До v2.1.257 действие
confirm:toggleExplanation, привязанное к Ctrl+E по умолчанию, показывало сгенерированное моделью объяснение команды в подсказках разрешений Bash и PowerShell.
Диалоги используют confirm:yes и confirm:no для принятия и отмены даже когда они не задают вопрос да или нет. Если вы привяжете простую букву, такую как y или n, в этом контексте, буква также действует на диалоги, которые никогда не показывают её как клавишу. Диалог, который показывает y и n как его клавиши, читает эти буквы сам и не требует привязки.
В большинстве диалогов нажатие Ctrl+C или Ctrl+D дважды закрывает диалог вместо выхода из Claude Code. Подсказка после первого нажатия говорит, закрывает ли второе нажатие диалог или выходит. Обе клавиши зарезервированы и не могут быть переназначены.
Этот пример привязывает y к confirm:yes и n к confirm:no:
y и n по-прежнему вводятся как буквы, пока текстовое поле имеет фокус.
До v2.1.280 y также была привязана к confirm:yes и n к confirm:no по умолчанию. Если вы создали свой keybindings.json с помощью /keybindings до v2.1.280, файл содержит обе привязки и они остаются в силе, пока вы не удалите эти две строки.
Действия разрешений
Действия, доступные в контекстеConfirmation для диалогов разрешений:
Действия стенограммы
Действия, доступные в контекстеTranscript:
transcript:toggleShowAll применяется только в классическом рендерере; в полноэкранном рендеринге средство просмотра стенограммы не предлагает переключение показа всего.
Действия поиска истории
Действия, доступные в контекстеHistorySearch:
Значения по умолчанию
historySearch:next, historySearch:accept, historySearch:cancel и historySearch:execute применяются к встроенному поиску истории в классическом рендерере, который всегда ищет подсказки из всех проектов. historySearch:cycleScope вступает в силу только в полноэкранном рендеринге, где Ctrl+R открывает диалог поиска вместо этого и Ctrl+S циклирует его область. Другие клавиши диалога фиксированы и не могут быть переназначены: Enter или Tab помещает выделенное совпадение в ввод подсказки и Esc отменяет.
Действия задачи
Действия, доступные в контекстеTask:
Действия темы
Действия, доступные в контекстеThemePicker:
Действия справки
Действия, доступные в контекстеHelp:
Действия вкладок
Действия, доступные в контекстеTabs:
В диалоге с вкладками
tabs:next и tabs:previous переключают вкладки, пока строка вкладок имеет фокус. В некоторых диалогах, таких как /help и /sandbox, клавиши переключения вкладок также работают изнутри содержимого вкладки.
Up и Down перемещают фокус между строкой вкладок и содержимым вкладки, а список в содержимом реагирует на клавиши только пока он имеет фокус.
Действия вложений
Действия, доступные в контекстеAttachments:
Действия нижнего колонтитула
Действия, доступные в контекстеFooter:
Пока элемент нижнего колонтитула выбран, например строка в панели агента ниже подсказки,
Enter открывает его даже если вы переназначили Enter в контексте Chat на chat:queueSubmit или chat:newline.
Привязки Chat на клавишах, которые контекст Footer не привязывает, такие как Shift+Tab для chat:cycleMode, продолжают работать пока элемент выбран.
Действия выбора сообщения
В списке сообщений меню перемотки вы перемещаетесь по сообщениям и выбираете одно с помощью действий выбора и их клавиш по умолчанию. Ваши привязкиSelect для этих действий применяются там же. Контекст MessageSelector не имеет собственных действий или привязок по умолчанию. Используйте его для изменения клавиши только для этого списка, привязав действие Select, такое как select:accept, в блоке MessageSelector.
Этот пример привязывает o для выбора выделенного сообщения в меню перемотки, без изменения каких-либо других списков:
messageSelector:up, messageSelector:down, messageSelector:top, messageSelector:bottom и messageSelector:select. Если ваш keybindings.json привязывает одно из этих имён, привязка продолжает работать в этом списке как действие Select, которое делает то же самое. Home и End прыгают на любой конец списка; до v2.1.283 клавиши, такие как Shift+K и Shift+J, делали это по умолчанию.
Действия diff
Действия, доступные в контекстеDiffDialog:
Список файлов также реагирует на действия выбора, через их клавиши по умолчанию и ваши привязки
Select. select:previous и select:next перемещаются к предыдущему и следующему файлу, а Enter открывает diff выбранного файла через select:accept. Чтобы изменить одну из этих клавиш только для списка файлов, привяжите действие Select в блоке DiffDialog.
До v2.1.283 список файлов игнорировал привязки Select, и Enter открывал diff выбранного файла через отдельное действие diff:viewDetails. Если ваш keybindings.json привязывает diff:viewDetails, привязка продолжает работать в списке файлов как select:accept.
Представление деталей diff также привязывает клавиши в стиле пейджера к стандартным действиям прокрутки. Эти привязки являются частью контекста DiffDialog и применяются только в представлении деталей; значения по умолчанию контекста Scroll, указанные в разделе Действия прокрутки, остаются неизменными.
Действия панели diff
Действия для панели diff, которую открывает/diff в полноэкранном рендеринге. app:cycleDiffBase находится в контексте DiffPanel, который активен пока панель открыта; остальные находятся в Global. Панель требует Claude Code v2.1.260 или более позднюю версию.
Действия выбора модели
Действия, доступные в контекстеModelPicker:
Действия ползунка усилий
Действия, доступные в контекстеEffortSlider, ползунок, который открывается при запуске /effort без аргументов. Клавиши Enter и Escape ползунка не могут быть переназначены.
Действия выбора
Действия, доступные в контекстеSelect:
В панелях списков, таких как
/skills и /mcp, Claude Code применяет ваши привязки select:pageUp, select:pageDown, select:first и select:last. В большинстве других списков, таких как выбор модели /model, ваши привязки select:first и select:last применяются. PageUp и PageDown разбивают на страницы параметры в этих списках независимо от ваших привязок.
До v2.1.280 эти другие списки игнорировали Home, End и ваши привязки select:first и select:last.
Действия plugin
Действия, доступные в контекстеPlugin:
Действия параметров
Действия, доступные в контекстеSettings. Действия select:accept и confirm:no переиспользуются из контекстов Select и Confirmation с поведением, специфичным для Settings: изменения применяются к каждому параметру сразу же при его изменении, поэтому Escape закрывает панель с сохранёнными изменениями, а не отклоняет их.
Действия агентов
Действия, доступные в контекстеAgents, который применяется в представлении агента, открытом с помощью claude agents. Требует v2.1.257 или более позднюю версию.
Пока представление агента открыто, Claude Code использует привязку
Agents для любой клавиши, которую контекст Agents привязывает, и игнорирует привязку Chat или Global на той же клавише. Например, нажатие Ctrl+S в представлении агента переключает группировку сеанса, а не запускает значение по умолчанию chat:stash.
Сочетание клавиш внешнего редактора ввода диспетчера не является действием Agents. Представление агента следует привязке chat:externalEditor контекста Chat, Ctrl+G по умолчанию.
Привязки срабатывают на одиночных нажатиях клавиш в представлении агента, поэтому сочетание Ctrl+X Ctrl+E, привязанное к chat:externalEditor, не открывает редактор там.
Действия голоса
Действия, доступные в контекстеChat при включённой диктовке голосом:
Действия прокрутки
Действия, доступные в контекстеScroll при включённом полноэкранном рендеринге:
Синтаксис нажатия клавиш
Модификаторы
Используйте клавиши-модификаторы с разделителем+:
ctrlилиcontrol- клавиша Controlshift- клавиша Shiftalt,opt,optionилиmeta- клавиша Alt в Windows и Linux, клавиша Option в macOScmd,command,superилиwin- клавиша Command в macOS, клавиша Windows в Windows, клавиша Super в Linux
cmd обнаруживается только в терминалах, которые сообщают о модификаторе Super, таких как те, которые поддерживают протокол клавиатуры Kitty или режим modifyOtherKeys xterm. Большинство терминалов его не отправляют, поэтому используйте ctrl или meta для привязок, которые вы хотите использовать везде.
Например:
Прописные буквы
Claude Code анализирует названия клавиш без учёта регистра, поэтомуK — это то же самое привязка, что и k, а ctrl+K — то же самое, что ctrl+k. Чтобы привязать Shift и букву, напишите shift+k.
Раскладки клавиатуры, отличные от US
Пишите названия клавиш сочетаний Ctrl как латинские символы, даже если ваша активная раскладка клавиатуры вводит другие символы. То, как Claude Code сопоставляет нажатую вами клавишу с привязкой, зависит от типа раскладки:- При использовании нелатинской раскладки, такой как кириллица, Claude Code сопоставляет сочетания Ctrl по позиции клавиши в раскладке US, когда терминал использует протокол клавиатуры Kitty и сообщает эту позицию. В таком терминале с активной русской раскладкой нажатие Ctrl и физической клавиши W запускает
ctrl+w. В терминале, который не сообщает позицию, Claude Code сопоставляет то, что отправляет терминал для нажатия клавиши: код управления ASCII запускает латинское сочетание, а нажатие клавиши, которое приходит как кириллический символ, не соответствует никакой привязке - При использовании раскладок, которые переставляют латинские буквы, такие как AZERTY, Claude Code сопоставляет букву, которую вводит клавиша, поэтому нажатие Ctrl и клавиши с надписью A запускает
ctrl+a
Аккорды
Аккорды — это последовательности нажатий клавиш, разделённые пробелами:Специальные клавиши
escapeилиesc- клавиша Escapeenterилиreturn- клавиша Entertab- клавиша Tabspace- пробелup,down,left,right- клавиши со стрелкамиpageup,pagedown- клавиши Page Up и Page Downhome,end- клавиши Home и Endbackspace,delete- клавиши удаленияwheelup,wheeldown- события прокрутки колеса мыши
Отмена привязки сочетаний по умолчанию
Установите действие наnull для отмены привязки сочетания по умолчанию:
ctrl+x: ctrl+x ctrl+k, ctrl+x ctrl+e, ctrl+x enter, ctrl+x ctrl+a, ctrl+x ctrl+s и ctrl+x tab в Chat, ctrl+x ctrl+b в Task и ctrl+x b в DiffPanel. Аккорд ctrl+x enter требует версии v2.1.247 или более поздней, ctrl+x b, ctrl+x ctrl+a и ctrl+x tab требуют версии v2.1.260 или более поздней, и ctrl+x ctrl+s требует версии v2.1.275 или более поздней.
Чтобы вернуть ctrl+x как привязку с одной клавишей, отмените привязку всех из них:
Зарезервированные сочетания клавиш
Эти сочетания клавиш не могут быть переназначены:Конфликты терминала
Некоторые сочетания клавиш могут конфликтовать с мультиплексорами терминала:Текстовые поля
Если вы привяжете простую букву, цифру или пробел, вы все равно сможете вводить этот символ в текстовое поле внутри диалога или панели. Одно из таких полей — это ответOther на вопрос, который задает Claude. Пока поле имеет фокус, печатаемая клавиша, которую вы нажимаете без Ctrl, Alt или Cmd, переходит в поле, и Claude Code не сопоставляет ее с вашими сочетаниями клавиш.
Эти клавиши все еще выполняют свои сочетания клавиш, пока поле имеет фокус:
- Клавиши, которые не вводят символ, такие как Enter, Escape, Tab и клавиши со стрелками
- Любая клавиша, нажатая с Ctrl, Alt или Cmd
- Второй нажим chord, уже выполняемого
Chat, и вводит клавишу только когда никакое сочетание клавиш ее не перехватывает.
Взаимодействие с режимом vim
Когда включен режим vim через/config → Editor mode, сочетания клавиш и режим vim работают независимо:
- Режим vim обрабатывает ввод на уровне текстового ввода (движение курсора, режимы, движения)
- Сочетания клавиш обрабатывают действия на уровне компонента (переключение задач, отправка и т. д.)
- Клавиша Escape в режиме vim переключает INSERT в NORMAL режим; она не запускает
chat:cancel - Большинство сочетаний Ctrl+клавиша проходят через режим vim в систему сочетаний клавиш
- Клавиши vim не переназначаются через файл сочетаний клавиш. Чтобы сопоставить двухклавишную последовательность в режиме INSERT, такую как
jj, с клавишей Escape, используйте параметрvimInsertModeRemaps - В режиме vim NORMAL
?показывает меню справки (поведение vim) - В режиме vim NORMAL
/открывает поиск по истории, то же самое, что Ctrl+R в стандартном режиме
Валидация
Claude Code проверяет ваши сочетания клавиш и показывает предупреждения для:- Ошибок разбора (неверный JSON или структура)
- Неверных имён контекстов
- Неверных значений действий, таких как действие, которое не является строкой или
null - Неизвестных имён действий, таких как опечатка зарегистрированного действия. Claude Code пропускает привязку и сохраняет любую привязку по умолчанию для этого ключа в силе. До версии 2.1.246 привязка с неизвестным именем действия молча отключала этот ключ
- Конфликтов зарезервированных сочетаний
- Дублирующихся привязок в одном контексте
--debug для просмотра деталей.