Кейбиндинги Claude Code: переназначение клавиш, режим Vim и горячие клавиши
Все способы изменить поведение клавиш в Claude Code: правка keybindings.json, включение режима vim через /vim или /config и набор горячих клавиш по умолчанию, которые действительно стоит запомнить.
Коротко
- Кейбиндинги живут в ~/.claude/keybindings.json — команда /keybindings создает и открывает файл. Правки вступают в силу сразу после сохранения, без перезапуска.
- Привязки сгруппированы по контекстам (Chat, Autocomplete, Agents, Scroll…) и сопоставляют клавишу вроде "ctrl+e" действию вроде chat:externalEditor. Присвойте клавише null, чтобы отвязать её.
- Режим vim: выполните /vim, либо /config → Editor mode → Space → Enter. Escape переключает INSERT/NORMAL, а визуальный режим (v/V) появился в v2.1.118.
- Некоторые клавиши не тронуть: Ctrl+C, Ctrl+D и Ctrl+M нельзя переназначить, а префикс Ctrl+B в tmux перехватывает сочетания до того, как их увидит Claude Code.
How to Enable Vim Editor in Claude Code CLI
Канал: ProgrammingKnowledge21:32
Claude Code v2.1.118 — Vim Visual Mode & Custom Themes
Канал: Claude Code Updates0:41
How to use Vim in Claude Code
Канал: HAMY LABS5:41
Claude Code release notes — v2.1.118 & v2.1.288
Release notes: github.com/anthropics/claude-code
Keybindings — official documentation
Документация: code.claude.com/docs
Факты на этой странице сверены с официальной документацией по кейбиндингам и записями changelog v2.1.118 и v2.1.288; скриншоты взяты из перечисленных выше видео. Описанное поведение соответствует Claude Code v2.1.288 (октябрь 2026).
Скриншоты — кадры из упомянутых видео: используются с указанием авторства и на каждом шаге ссылаются на исходный таймкод.
Переназначаем клавиши и включаем режим vim, шаг за шагом
Переназначение клавиш в keybindings.json
- 1
Запустите Claude Code и проверьте окружение
Выполните claude в терминале, чтобы начать сессию. Настройка клавиш и режим vim — возможности CLI, поэтому все на этой странице происходит в том же промпте. В v2.1.288 и новее доступны и свежие сочетания окна agents: поиск по Ctrl+F и переходы между группами по Alt+↑/↓.

Свежая сессия Claude Code, готовая к настройке.Смотреть с 0:17 - 2
Откройте keybindings.json командой /keybindings
Введите /keybindings в промпте. Если ~/.claude/keybindings.json ещё не существует, Claude Code создаст файл и откроет его в вашем редакторе. Любое сохранённое изменение подхватывается автоматически — перезапуск не нужен.

Меню слэш-команд фильтруется по мере ввода — /keybindings среди пунктов.Смотреть с 0:34 - 3
Сопоставьте клавишу действию внутри контекста
Файл содержит массив bindings, сгруппированный по контекстам — Chat, Autocomplete, Agents, Task, Scroll и другие. Каждый блок сопоставляет клавишу имени действия: undefined }. Добавьте поле $schema в начало файла, и редактор будет автодополнять имена действий.
- 4
Отвязывайте через null и собирайте последовательности
Присвойте клавише null, чтобы отключить стандартное поведение — "ctrl+s": null выключает stash ввода. Последовательности (chords) разделяются пробелом: "ctrl+x ctrl+k" означает нажать Ctrl+X, затем в течение трех секунд Ctrl+K. Несколько комбинаций зарезервированы и не переназначаются: Ctrl+C, Ctrl+D, Ctrl+M, Ctrl+[ и Ctrl+I.
Включение режима vim
- 5
Откройте панель настроек командой /config
Предпочитаете переключатель правке JSON вручную? /config открывает панель из видеоразбора: вкладки Status, Config и Usage плюс поле поиска, фильтрующее список по мере ввода.

Панель /config перечисляет все настройки, включая Editor mode.Смотреть с 0:40 - 6
Отфильтруйте список до Editor mode
Введите edit в поле поиска, и список сузится до настройки Editor mode. По умолчанию там стоит normal — редактирование в стиле readline, привычное, если вы пришли из bash или эмакс-привязок.

Editor mode по умолчанию — normal; Space переключает.Смотреть с 1:08 - 7
Нажмите Space, чтобы переключиться на vim
Когда строка Editor mode выделена, нажмите Space — значение сменится с normal на vim. Строка подсказки фиксирует правила: Space меняет, Enter сохраняет, / ищет, Esc отменяет.

Чтобы выбрать vim, достаточно одного нажатия Space.Смотреть с 1:11 - 8
Сохраните и найдите -- INSERT --
Нажмите Enter для сохранения. Claude Code выведет «Set editor mode to vim», а в статусной строке появится vim-маркер -- INSERT --. Выбор сохраняется между сессиями на той же машине — он хранится как editorMode внутри ~/.claude.json. Это рантайм-файл с кэшами OAuth и состоянием сессий, symlink его в свои dotfiles не стоит.

Сохранено — в футере появился индикатор -- INSERT --.Смотреть с 1:28 - 9
Вставляйте в insert mode, командуйте в normal mode
Insert mode работает как обычный набор текста. Escape переключает в normal mode: h, j, k, l двигают курсор, b и w прыгают по словам, d удаляет, c меняет, r заменяет. Повторный запуск /vim выключает режим целиком. Собственные клавиши vim не переназначаются через keybindings.json — для INSERT-последовательностей вроде jj существует настройка vimInsertModeRemaps.
- 10
Выделяйте текст визуальным режимом (v2.1.118+)
Старые туториалы пишут, что визуального режима нет — это устарело. В релизе v2.1.118 появились визуальный режим (v) и построчный режим (V) с выделением, операторами и наглядной обратной связью: v плюс движение выделяет символы, V плюс движение — целые строки, затем d, y или c применяются к выделению.

В v2.1.118 выделение v и V добралось до vim-режима Claude Code.Смотреть с 0:16
Горячие клавиши по умолчанию, которые стоит выучить
- 11
Выучите самые нужные стандартные сочетания
Shift+Tab листает режимы разрешений, Enter отправляет, Ctrl+J добавляет перевод строки, Ctrl+L очищает ввод, Ctrl+R ищет по истории, Ctrl+O показывает транскрипт, Ctrl+T — задачи, Ctrl+B уводит задачу в фон, Ctrl+X Ctrl+K останавливает агентов. В окне agents (v2.1.288+) Ctrl+F ищет сессию по имени, Alt+↑/↓ прыгает по группам — и всё это переназначается в keybindings.json.
keybindings.json против /config и /vim: кто что меняет
За поведение клавиш в Claude Code отвечают три слоя. Они накладываются друг на друга, а не конкурируют — выбирайте слой под нужное изменение.
- 1keybindings.json переназначает отдельные действия. Перенесите chat:externalEditor на ctrl+e, отвяжите chat:stash, добавьте последовательность ctrl+x. Тонкая настройка, переносимость и безопасное версионирование.
- 2/config → Editor mode переключает всю модель редактирования между normal (readline) и vim. Один переключатель, мгновенное сохранение, действие во всех будущих сессиях этой машины.
- 3/vim делает ровно то же, что переключатель Editor mode, — самый короткий путь и команда из разбора HAMY LABS. Повторный запуск возвращает normal.
- 4Терминал перехватывает часть клавиш до того, как их увидит Claude Code: префикс Ctrl+B в tmux, Ctrl+A в GNU screen и Ctrl+Z, приостанавливающий процесс. Это решается на уровне терминала, а не keybindings.json.
- 5Внутри режима vim переназначить его поведение (скажем, jj на escape) позволяет только vimInsertModeRemaps — keybindings.json намеренно не трогает внутренние клавиши vim.
Общее правило: раздражает одно сочетание → keybindings.json; нужен другой стиль редактирования в целом → режим vim; клавиша вовсе не доходит → сначала проверьте терминал.
Кейбиндинг не работает? Чините по порядку
Почти все жалобы на кейбиндинги сводятся к пяти причинам. Пройдите список до того, как снова править файл.
- 1После правки ничего не меняется: убедитесь, что файл — именно ~/.claude/keybindings.json (не settings.json) и что JSON парсится. Запустите Claude Code с --debug, чтобы увидеть предупреждения о привязках: опечатки в действиях, неизвестные контексты.
- 2Клавиша отказывается переназначаться: Ctrl+C, Ctrl+D, Ctrl+M (всегда Enter), Ctrl+[ (всегда Escape) и Ctrl+I (всегда Tab) зарезервированы. Печатные символы в текстовых полях уходят во ввод, а не в привязки.
- 3Ctrl+B или Ctrl+A не доходят: tmux и GNU screen съедают их как собственные префиксы. Переназначьте сочетание в keybindings.json или смените префикс мультиплексора.
- 4Повторное использование префикса не удаётся: пока с ctrl+x начинается несколько последовательностей, отвяжите их все — только тогда ctrl+x сработает как обычная одиночная клавиша.
- 5Клавиши vim игнорируют ваши привязки: так задумано — режим vim управляет своими клавишами сам. Для insert-последовательностей есть vimInsertModeRemaps, а если выделение v или V не работает, обновите Claude Code (нужна v2.1.118+).
Чтобы вернуть любое значение по умолчанию, удалите его строку из keybindings.json — восстанавливает исходную привязку именно удаление, а не записанное «default»-значение.
