DEV Community

Cover image for Emacs-команды в Claude Code CLI на русской раскладке для iTerm2
Mikhail Konkov
Mikhail Konkov

Posted on

Emacs-команды в Claude Code CLI на русской раскладке для iTerm2

Проблема

Я уже несколько месяцев работаю с Claude Code CLI в терминале и столкнулся с неприятной мелочью: команды Emacs для редактирования текста (Ctrl+A, Ctrl+E, Ctrl+W и т.д.) не работают на русской раскладке.

Раньше всё было нормально, так как я работал в терминале только на английском. Но сейчас, когда удобнее вводить промты на родном языке, эта проблема мешает.

  • Ctrl+A не прыгает в начало строки
  • Ctrl+W не удаляет слово назад
  • Ctrl+V для вставки скриншотов тоже мимо
  • Переключать раскладку каждый раз ради одной команды — боль

Решение

Это лечится одним key mapping файлом для iTerm2. Он:

  • маппит кириллические позиции клавиш на правильные управляющие коды (Emacs-команды работают и на RU, и на EN);
  • добавляет Option+а / Option+и как прыжки по словам;

Как применить

  1. Откройте iTerm2 → Settings → Profiles → Keys → Key Mappings.

    iTerm2 profile key mapping

  2. Нажмите кнопку Presets... → Import... и выберите файл с конфигом ниже (сохраните его как ru-emacs.itermkeymap или вставьте через JSON-редактор).

Конфиг

{
  "Key Mappings": {
    "0x430-0x40000": {"Action": 11, "Text": "0x06"},
    "0x438-0x40000": {"Action": 11, "Text": "0x02"},
    "0x430-0x80000": {"Action": 11, "Text": "0x1b 0x66"},
    "0x438-0x80000": {"Action": 11, "Text": "0x1b 0x62"},
    "0x444-0x40000": {"Action": 11, "Text": "0x01"},
    "0x443-0x40000": {"Action": 11, "Text": "0x05"},
    "0x43b-0x40000": {"Action": 11, "Text": "0x0b"},
    "0x433-0x40000": {"Action": 11, "Text": "0x15"},
    "0x446-0x40000": {"Action": 11, "Text": "0x17"},
    "0x43c-0x40000": {"Action": 11, "Text": "0x16"},
    "0x43d-0x40000": {"Action": 11, "Text": "0x19"},
    "0x449-0x40000": {"Action": 11, "Text": "0x0f"}
  },
  "Touch Bar Items": []
}
Enter fullscreen mode Exit fullscreen mode

Шпаргалка по маппингам

Emacs-навигация на русской раскладке

Клавиша (RU) Что делает Эквивалент EN
Ctrl+ф в начало строки Ctrl+A
Ctrl+у в конец строки Ctrl+E
Ctrl+а символ вправо Ctrl+F
Ctrl+и символ влево Ctrl+B
Ctrl+л удалить до конца строки Ctrl+K
Ctrl+г удалить всю строку Ctrl+U
Ctrl+ц удалить слово назад Ctrl+W
Ctrl+н Yank (вставить из kill-буфера) Ctrl+Y
Option+а / Option+и прыжок по словам вправо/влево Option+F / Option+B
Ctrl+м вставить скриншот в claude code cli Ctrl+V
Ctrl+щ развернуть вывод команд в claude code cli Ctrl+O

Почему это работает

iTerm2 ловит события клавиатуры до того, как macOS успевает решить «эта раскладка не знает Ctrl+a». Мы матчимся на конкретные кодпоинты Unicode (0x444 это ф, 0x443у, и т.д.) с модификатором 0x40000 (Control) и руками отправляем в TTY правильный байт (0x01 для Ctrl+A).

Итог

Один импорт пресета — и Claude Code CLI перестаёт быть пыткой при работе на русском. Промт теперь можно набирать, не дёргая Cmd+Space каждые пять секунд.

Если у вас другой терминал — подход тот же: ищите в их конфигах секцию key bindings и маппите кириллические кодпоинты на управляющие байты.

Удачи в промтах.

Top comments (0)