Neovim: клавиши¶
Наборов привязок два, и их постоянно путают:
- Mappings Neovim работают в редакторе.
- Хоткеи окна работают внутри окна отладчика — это отдельный процесс со своей обработкой клавиатуры.
Mappings Neovim¶
Умолчания:
| Mapping | Команда | Что делает |
|---|---|---|
<leader>dS |
:DebugStart |
Начать отладку профилем по умолчанию |
<leader>dT |
:DebugTest |
Отладить тест под курсором |
<leader>dc |
:DebugContinue |
Продолжить до следующей остановки |
<leader>di |
:DebugStepInto |
Шаг внутрь вызова |
<leader>do |
:DebugStepOver |
Шаг через вызов |
<leader>dO |
:DebugStepOut |
Шаг наружу, до возврата из функции |
<leader>dp |
:DebugPause |
Прервать работающую программу |
<leader>dt |
:DebugStop |
Завершить сессию отладки |
<leader>du |
:DebugFocus |
Поднять окно отладчика |
<leader>db |
:ToggleBreakpoint |
Поставить или снять точку останова на строке |
Обратите внимание на регистр: <leader>do — шаг с обходом, <leader>dO —
шаг наружу; <leader>dt — стоп, <leader>dT — отладка теста, <leader>dS —
старт.
Профиль привязкой не передать: <leader>dS и <leader>dT делают то же, что
:DebugStart и :DebugTest без аргумента. Для другого профиля наберите
команду — имена профилей из .bugsaur/config.toml она дополняет сама.
У каждой привязки есть подпись, поэтому which-key и :nmap <leader>d показывают
действие, а не повтор самой клавиши.
Это обычные mappings Neovim, поэтому переназначаются как всё остальное — своей
клавишей на соответствующую команду :Debug*.
Хоткеи окна: gui_keymaps¶
Mappings Neovim до окна отладчика не дотягиваются, поэтому привязки окна настраиваются отдельно, таблицей действие → аккорд:
require("bugsaur").setup({
gui = true,
gui_keymaps = {
continue = "Ctrl+R",
step_over = "F6",
step_into = "F7",
step_out = "Shift+F8",
pause = "F10",
restart = "Ctrl+Shift+F5",
},
})
Здесь поддерживаются действия continue, step_into, step_over, step_out,
pause, terminate, restart. Значение vim.NIL отключает привязку.
Модификаторы — Cmd, Ctrl, Alt, Shift, и их порядок в аккорде не важен:
Shift+Alt+F8 и Alt+Shift+F8 — один и тот же аккорд.
gui_keymaps читается при запуске процесса GUI
Правка этой таблицы и повторный :source конфига не подействуют на уже
открытое окно.
Проект может перебить ваши хоткеи окна¶
Секция [ui.keymaps] в .bugsaur/config.toml имеет приоритет над
gui_keymaps — но по действиям, а не блоком:
Названное проектом выигрывает; не названное остаётся тем, что вы настроили в редакторе. Так проект с непривычной раскладкой одинаков у всех, кто его открывает, и при этом ваши личные привязки на остальные действия не теряются.
Полная стопка слоёв, снизу вверх:
- встроенные умолчания — F7, F8, Shift+F8, F9, Cmd+F2 / Ctrl+F2, H J K L, стрелки;
<корень>/.bugsaur-keys.json— личный файл проекта, аккорд → действие, гдеnullснимает привязку;gui_keymapsизsetup()плагина;[ui.keymaps]из конфига проекта.
Кроме выполнения, [ui.keymaps] умеет привязывать переход к панелям и навигацию
внутри них, чего gui_keymaps не покрывает. Полный список действий:
Настройка → Интерфейс.
Если сомневаетесь — спросите у окна¶
F1 или ? внутри окна отладчика показывает действующие сейчас
привязки — те, что получились после всех четырёх слоёв. Истина именно там, а не
на этой странице и не в вашем init.lua.