Skip to content

SMarkls/nvim-config

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Сборка NeoVim

Минималистичная сборка 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 и должны вернуть таблицу с настройками.

Список пакетов Mason

Эти пакеты необходимо установить для корректной работы. Не обязательно устанавливать все из них. Достаточно лишь тех, которые вы будете использовать.

"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

Конфигурация готова из коробки для работы с GoLang. Для отладки изменений используется Delve. Команды Delve начинаются с Dlv. Например для начала отладки: :DlvDebug Чтобы поставить брикпоинт: space + b. Настройка комбинации в lua/plugins/languages/go.lua

Разработка на Python

Конфигурация почти готова из коробки для работы с 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 указать путь до этого венва.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages