Перейти к содержанию

Neovim: быстрый старт

Считаем, что плагин установлен и gui = true.

Запустить сессию

  1. Откройте файл проекта.
  2. Поставьте курсор на исполняемую строку и выполните :ToggleBreakpoint (или нажмите <leader>db).
  3. Выполните :DebugStart.

Открывается окно отладчика, программа выполняется и останавливается на вашей точке. В Neovim на строке остановки появляется , сама строка подсвечивается.

Если точка останова явно не поставлена, фронтенд берёт текущую строку как начальную.

Конфига ещё нет? Всё равно работает

:DebugStart в проекте без .bugsaur/config.toml не падает. Отладчик ищет маркер языка, создаёт конфиг, сообщает об этом и продолжает запуск. Файл появляется в репозитории, и дальше он ваш.

Если кандидатов несколько — workspace с несколькими бинарниками, Go с несколькими cmd/*, Python с несколькими точками входа, — выписываются все, а default встаёт на тот, из файла которого вы запустили отладку.

Создать конфиг заранее, ничего не запуская:

bugsaur init
bugsaur init /path/to/project

Если язык не опознан, запуск завершается ошибкой с указанием каталога. Молча отлаживать не то отладчик не станет.

Выбрать профиль

:DebugStart worker

Имена профилей дополняются по Tab и читаются из конфига проекта. Без аргумента берётся default.

Отладить тест под курсором

:DebugTest

по умолчанию <leader>dT. Курсор должен находиться внутри тестовой функции — в Rust годится и строка #[test]. На другой строке команда отказывает и ничего не запускает.

Если курсор стоит на строке тестовой группы — например mod tests, — та же команда запускает всю группу.

Два условия, о которые спотыкаются

Буфер должен быть сохранён. Бэкенд читает файл с диска и не может надёжно сопоставить несохранённый текст с собранным бинарником.

Сохранённые точки останова не подхватываются. В отличие от :DebugStart, запуск теста использует только точки текущего запроса.

Управлять выполнением

:DebugContinue
:DebugStepOver
:DebugStepInto
:DebugStepOut
:DebugPause
:DebugStop
:DebugFocus

Стандартные mappings — <leader>dS (старт), <leader>dT (отладка теста под курсором), <leader>dc, <leader>do, <leader>di, <leader>dO, <leader>dp, <leader>dt, <leader>du, <leader>db. Полный список с описаниями: Клавиши.

Условные точки останова

:ToggleBreakpoint condition == value

Выражение пишется на языке отлаживаемой программы, и остановка происходит, только когда оно истинно.

Закрытие Neovim не завершает сессию

Бэкенд продолжает работать. При повторном подключении приезжает актуальное состояние, так что редактор можно перезапустить посреди сессии, ничего не потеряв.

С auto_attach = true в setup() старт Neovim молча прицепляется к идущей сессии проекта.