Перейти к содержимому

Горячие клавиши

Сочетания клавиш берутся из одного реестра-const — KeybindingRegistry в lib/core/constants/keybindings.dart. В нём 49 привязок. Раздел Настройки → Вы → Сочетания клавиш отображает этот реестр как справочник только для чтения: интерфейса переназначения нет, как и пользовательского файла привязок.

Cmd ниже — основной модификатор команды: ⌘ в macOS, Ctrl в Windows и Linux. Привязка срабатывает, только когда у её команды есть зарегистрированный обработчик на текущем экране и выполняется её условие when; !textInputFocus означает, что клавиша вместо этого передаётся в поле ввода в фокусе.

Сочетания для навигации по цифровым клавишам нет. «Входящие», тикеты, pull request и всё остальное открываются с боковой панели или через ⌘K. У раздела Наблюдаемость сочетаний тоже нет.

Область действия — global, поэтому они работают в любом месте оболочки.

Сочетание Действие Условие
Cmd/Ctrl + K Палитра команд —
Shift + / (?) Шпаргалка по сочетаниям клавиш Фокус не в текстовом поле
Cmd/Ctrl + Z Отменить Фокус не в текстовом поле (поле в фокусе хранит собственную историю отмены)
Cmd/Ctrl + Shift + Z Повторить Фокус не в текстовом поле
Cmd/Ctrl + Shift + T Переключить тему —
Cmd/Ctrl + , Открыть настройки (открывается на /settings/you/appearance) —
Cmd/Ctrl + Shift + Alt + F Переключить режим фокуса —
Cmd/Ctrl + Shift + W Показать или скрыть переключатель рабочих пространств —
Cmd/Ctrl + ] Следующее рабочее пространство —
Cmd/Ctrl + [ Предыдущее рабочее пространство —
Cmd/Ctrl + Alt + 1 … Cmd/Ctrl + Alt + 9 Переключиться на рабочее пространство 1–9 —

Область действия — /pull-requests. Все требуют route == '/pull-requests' и отсутствия текстового поля в фокусе, поэтому они не срабатывают, пока поверх списка открыт маршрут деталей PR.

Сочетание Действие
R Обновить
Enter Открыть PR
F Открыть меню фильтров

Enter (pr.list-open) объявлено в реестре и показано в справочнике сочетаний клавиш, но экран списка не регистрирует для него обработчик, поэтому сейчас оно не срабатывает. F открывает меню фильтров (pr.list-open-filter), а не поиск.

Область действия — /pull-requests/. Для обновления нужно, чтобы текстовое поле не было в фокусе. У закрытия вкладки нет защиты по вводу текста (сочетание с ⌘ никогда не бывает обычным текстом), зато есть регулярное выражение маршрута, поэтому в списке оно не срабатывает.

Сочетание Действие Условие
R Обновить Фокус не в текстовом поле
Cmd/Ctrl + W Закрыть вкладку В расположении /pull-requests/<…>

Переключение вкладок (1/2/3), отметка «просмотрено» и сворачивание (V/C), список файлов (T) и поиск по диффу (Cmd/Ctrl + F) обрабатывает собственный обработчик просмотрщика diff — см. Клавиши просмотрщика diff вне реестра.

Сочетание Действие
F Открыть меню фильтров

Требует route == '/inbox' и отсутствия текстового поля в фокусе.

Область действия — /users/. Условие when — регулярное выражение для /users/<login> или /teams/<organization>/<slug> плюс отсутствие текстового поля в фокусе.

Сочетание Действие
R Обновить
/ Перейти к поиску
Cmd/Ctrl + F Перейти к поиску

Область действия — /spaces. Условия when построены на регулярном выражении, поэтому они срабатывают и в списке пространств (/spaces), и в выбранном пространстве (/spaces/<id>).

Сочетание Действие Условие
Enter Отправить сообщение —
Cmd/Ctrl + N Новое пространство В маршруте /spaces
J Следующее пространство Фокус не в текстовом поле
K Предыдущее пространство Фокус не в текстовом поле
Cmd/Ctrl + Shift + D Диктовка push-to-talk —
Cmd/Ctrl + T Открыть вкладку редактора В маршруте /spaces
Cmd/Ctrl + W Закрыть вкладку редактора В маршруте /spaces
Cmd/Ctrl + B Переключить боковую панель редактора В маршруте /spaces
Cmd/Ctrl + P Перейти к файлу В маршруте /spaces

«Перейти к файлу» открывает окно выбора по файлам разговора. Пока ничего не введено, в нём перечислены недавно открытые файлы; при вводе поиск идёт по всем файлам в worktree разговора. Enter открывает выбранный файл в новой вкладке, Cmd/Ctrl + Enter или кнопка разделения в строке — в панели справа, а × в строке недавнего файла удаляет его из списка.

Отправку по Enter обрабатывает текстовое поле композера, а push-to-talk — кнопка микрофона композера (у неё свой обработчик аппаратной клавиатуры). Оба указаны в реестре для справочника настроек.

Область действия — /workspaces; работают только в самом экране выбора.

Сочетание Действие
Cmd/Ctrl + N Новое рабочее пространство
Enter Открыть выбранное рабочее пространство

Для Enter нужно, чтобы текстовое поле не было в фокусе.

Сочетание Действие Экран
J Следующая страница настроек Любой маршрут /settings, фокус не в текстовом поле
K Предыдущая страница настроек Любой маршрут /settings, фокус не в текстовом поле
Cmd/Ctrl + N Новый агент Настройки → Рабочее пространство → Агенты
Cmd/Ctrl + N Добавить репозиторий Настройки → Рабочее пространство → Репозитории
R Повторно найти адаптеры Настройки → Сервер → Провайдеры моделей

Область действия — /newsfeed. Все требуют route == '/newsfeed' и отсутствия текстового поля в фокусе.

Сочетание Действие
J Следующая статья
K Предыдущая статья
Enter Открыть статью
S Переключить закладку
R Обновить ленты

Просмотрщик diff в PR обрабатывает их сам (PrDiffKeyboardHandler). Поиск, просмотр и сворачивание перечислены в комментариях реестра только для справочника настроек — обработчик диспетчера для них не зарегистрирован, поэтому диспетчер оставляет их представлению diff. Отдельных строк в справочнике сочетаний клавиш у них нет.

Сочетание Действие
Cmd/Ctrl + F Поиск по диффу
J / K Следующий / предыдущий файл
V Переключить отметку «просмотрено» у файла в фокусе
C Переключить сворачивание файла в фокусе
T Показать список файлов
Enter Следующее совпадение поиска (только пока открыт поиск по диффу)
Shift + Enter Предыдущее совпадение поиска
Escape Закрыть поиск по диффу или снять выделение текста в диффе
Cmd/Ctrl + C Скопировать выделенное в диффе

В веб-сборке браузер перехватывает часть ускорителей раньше, чем их успевает увидеть страница, поэтому соответствующие привязки там сработать не могут. В настольном приложении они работают как обычно. Зарезервированы в сочетании с основным модификатором команды: T, W, N и цифры 1–9.

Это касается переключения рабочих пространств по Cmd/Ctrl + Alt + 1–9, Cmd/Ctrl + N (новое пространство, новое рабочее пространство, новый агент, добавить репозиторий) и Cmd/Ctrl + T / Cmd/Ctrl + W в пространствах и деталях PR.