Минималистичная сборка NeoVim для работы на JavaScript, TypeScript, GoLang. (В планах добавить Python и C(++))
Чтобыть начать работу с каким-то инструментом необходимо через :Mason установить cоответствующие
Language Server Protocol и Debug Adapter Protocol, а также линтеры/форматтеры.
По настройке инструментария для конкретных яызков смотреть эту часть
После этого ОБЯЗАТЕЛЬНО указать в файлах в папке languages, какие инструменты использовать для языка. Эти данные автоматически
подхватываются следующими модулями:
lua/plugins/conform.lua— форматтеры по типам файлов.lua/plugins/nvim-lint.lua— линтеры.lua/plugins/lsp.lua— сами LSP вместе с любыми специфичными настройками и хоткеями. Не забудьте добавить новый модуль языка вlua/plugins/languages/langs.lua, чтобы он участвовал в сборке настроек.
- Bufferline - табы, вкладки как в браузере
- GitSigns - отображение, что было добавлено/изменено в рамках текущего индекса (
:Gitsigns) - LuaLine - строка состояния снизу, пишет про гит, ошибки и прочее
- Telescope - поиск файлов, вхождений строк по проекту, подсказок и табов (
:Telescope) - Cmp - подсказки в коде (выпадающие)
- ToggleTerm - терминал.
- Conform - форматтер.
- Nvim-Lint - линтер.
- Leap - продвинутые перемещения
- Which-Key - панелька с хоткеями
- Snacks - куча мини-утилит. Файловая система, модалки, Git.
- space + e - файловая система
- space + w - сохранить
- space + q - закрыть
- | - разделить окно по-вертикали
- \ - разделить окно по-горизонтали
- ctrl +
h(jkl)- переместиться на левое(нижнее, верхнее, правое) разделенное окно - Tab/Shift + Tab - перемещение по буфферам
- ctrl + x - закрыть все буфферы, кроме текущего
- space + х - выбрать, какие буферы закрыть
- space + space - найти файлы в проекте
- space + fw - найти слова в проекте
- space + fb - найти вкладки(буфферы) в проекте
- space + fh - найти подсказки
- space + lr - переименовать
- space + la - быстрые код экшны
- ctrl + \ - открытие/закрытие терминалах
- space + aa - все ошибки и варнинги в текущем буфере
- space + aA - ошибки и варнинги в проекте
- shift + K - показать сигнатуру
- ctrl + K - подсказка по текущему вводимому парметру метода
- space + u + C - выбрать тему
Прочие кеймапы можно посмотреть в конфигурации самостоятельно. Большая их часть находится в config/keymap.lua, а также специфичные
для каждого плагина где-то рядом с ним.
Чтобы настроить окружения для разработки на каком-то специфичном языке необходимо создать в папке plugins/languages соответствующий файл и добавить
его в таблицу langs.lua. Каждый модуль должен вернуть таблицу со следующими полями:
servers: table — ключом выступает имя LSP, значением — объект, совпадающий по структуре сvim.lsp.config(). Внутри можно указыватьsettings,cmd,root_markersи т.д. Дополнительно допускаетсяon_attach, где удобно навесить хоткеи для дебага, включить inlay hints и прочий языкоспецифичный функционал.formatters: table — ключи соответствуютfiletype, значения — массив используемых форматтеров.linters: table — ключи соответствуютfiletype, значения — массив линтеров.
Если нужно построить конфигурацию программно, servers допускает функции: они получают рассчитанные capabilities и должны вернуть таблицу с настройками.
Эти пакеты необходимо установить для корректной работы. Не обязательно устанавливать все из них. Достаточно лишь тех, которые вы будете использовать.
"debugpy", -- python DAP
"delve", -- go DAP
"eslint-lsp", -- js/ts lsp
"eslint_d", -- js/ts lsp
"gofumpt", -- go format
"goimports", -- go formata
"gopls", -- go lsp
"lua-language-server", -- lua lsp
"prettier", -- ts/js format
"prettierd", -- ts/js format
"ruff", -- python format lint lsp
"selene", -- lua lint
"typescript-language-server", -- ts/js lspКонфигурация готова из коробки для работы с GoLang. Для отладки изменений используется Delve.
Команды Delve начинаются с Dlv. Например для начала отладки: :DlvDebug
Чтобы поставить брикпоинт: space + b. Настройка комбинации в lua/plugins/languages/go.lua
Конфигурация почти готова из коробки для работы с Python. Также поддерживается дополнительная конфигурация форматтинга и линтинга с помощью
ruff. Для начала отладки нужно использовать :DapNew. Для брикпоинта тот же space + b.
- Шаг с заходом - F1
- Шаг с обходом - F2
- Шаг с выходом - F3
- Продолжить выполнение -
:DapContinueНастройка комбинаций вlua/plugins/languages/py.lua
Для отладки нужно установить debugpy. Сделать это можно глобально: python3 -m pip install debugpy. Или создав венв. Во втором случае необходимо
в файле lua/plugins/nvim-dap-python указать путь до этого венва.