No description
Find a file
t0xa e0b6f4ba88 Snippets: Markdown, Go
- Go: Add section snippet
- Markdown: Update golang codeblock
2026-10-17 20:36:26 +03:00
compiler Draft: Trying to make a compiler for ivlint 2026-02-22 15:44:31 +03:00
ftplugin Update treesitter 2026-09-21 17:19:55 +03:00
lua/custom Snippets: Markdown, Go 2026-10-17 20:36:26 +03:00
plugin Update treesitter 2026-09-21 17:19:55 +03:00
init.lua Plugins: Migrate to vim.pack 2026-10-11 15:01:58 +03:00
lazy-lock.json Plugins: Update lock file 2026-10-17 15:37:52 +03:00
main.py Some merge magic 2025-07-28 18:28:03 +03:00
nvim-pack-lock.json Plugins: Migrate to vim.pack 2026-10-11 15:01:58 +03:00
README.md Plugins: Migrate to vim.pack 2026-10-11 15:01:58 +03:00

Config refactor (v2.0)

Основные прицнипы формирования конфига

Root plugin папка

Скрипты в этой папке загружаются автоматически после инициализации neovim, но до загрузки файлов типа ftplugin/ или after/.

Plugins

Плагины ставятся встроенным менеджером vim.pack (Neovim 0.12+), см. раздел Работа с vim.pack.
Разберем на примере oil.nvim: источник плагина указывается в списке vim.pack.add в lua/custom/pack.lua:
lua/custom/pack.lua

vim.pack.add({
  gh("echasnovski/mini.icons"),
  gh("stevearc/oil.nvim"),
})
require("mini.icons").setup()
require "custom.oil"

Затем сама функция настроек расположена отдельно, в файле с названием плагина:
lua/custom/oil.lua

require("oil").setup{
	opts = {
		keymaps = {
			["g?"] = "actions.show_help",
        },
    },
}

Разница между ftplugin и after/ftplugin

Суть одна и та-же: загрузка конфигураций для конкретных типов файлов, однако:

ftplugin

Тут храняться настройки, которые будут применены до загразуки плагинов. Т.е. настройки, что определны где-то в настройках плагинов будут переписывать если что те, которые установлены для типов файлов тут

after/ftplugin

Настройки для типов файлов тут будут применены уже после того, как загрузится все содержимое neovim => эти настройки будут перегружать все то, что было настроено в плагинах

Работа с vim.pack

Плагины описаны в lua/custom/pack.lua, версии зафиксированы в nvim-pack-lock.json (его нужно коммитить). Плагины ставятся в ~/.local/share/nvim/site/pack/core/opt.

Задача lazy.nvim vim.pack
Установить плагин добавить spec, :Lazy install добавить в vim.pack.add({...}) и перезапустить, недостающее ставится при старте с подтверждением
Обновить все :Lazy update :lua vim.pack.update(), откроется буфер с диффом
Обновить один :Lazy update name :lua vim.pack.update({"name"})
Применить обновление кнопка в UI :write в буфере с диффом
Отклонить обновление закрыть окно закрыть буфер (:quit)
Список плагинов :Lazy :lua vim.print(vim.pack.get())
Удалить убрать spec, :Lazy clean убрать из pack.lua, затем :lua vim.pack.del({"name"})
Откатить к lock-файлу :Lazy restore :lua vim.pack.update(nil, {target = "lockfile"})
Lock-файл lazy-lock.json nvim-pack-lock.json
Профилирование :Lazy profile nvim --startuptime out.log

Порядок обновления: :lua vim.pack.update() → прочитать дифф → :write → перезапустить nvim → закоммитить nvim-pack-lock.json.
Парсеры treesitter обновляются вручную командой :TSUpdate.

Чего нет по сравнению с lazy

  • Нет окна :Lazy, всё делается командами и через буфер диффа.
  • Нет ленивой загрузки (event, cmd, ft, keys), плагины грузятся при старте.
  • Нет dependencies, opts и config: зависимости перечисляются в vim.pack.add, а setup() вызывается вручную.
  • Нет хука build. Вместо него автокоманда PackChanged, которую нужно объявить до vim.pack.add (пример для markdown-preview в pack.lua).

Версии

Без version плагин следует за веткой по умолчанию. Версию можно зафиксировать:

{ src = gh("L3MON4D3/LuaSnip"), version = vim.version.range("2.*") }

FAQ

Зачем так мучаться? Не проще все кидать в один файл?

Проще, но такое распараллеливание позволяет легче дебажить файлы настроек. Т.е. исправляя настройки мы можем просто sourceить файл настроек, не трогая список плагинов в pack.lua.

Что делать, если в checkhealth выдается ошибка luarocks not found?

Необходимо его установить по инструкции с сайта

Что делать, если при установке luarocks выдает ошибку что не найдены .h файлы?

Надо установить хэдеры lua командой:

sudo apt install liblua5.3-dev

checkhealth не может найти tree-sitter cli

Надо установить соответствующий npm пакет:

npm install -g tree-sitter-cli