ftplugin | ||
lua/custom | ||
plugin | ||
.gitignore | ||
init.lua | ||
main.py | ||
README.md |
Config refactor (v2.0)
Useful links
Основные прицнипы формирования конфига
Root plugin папка
Скрипты в этой папке загружаются автоматически после инициализации neovim
, но до загрузки файлов типа ftplugin/
или after/
.
Plugins
Разберем на примере oil.nvim
: Сначала базовые настройки, такие как инструкция откуда качать и всякие зависимости и атрибуты по типу приоритета кладутся в директорию custom/plugins
в виде названия плагина:
lua/custom/plugins/oil.lua
return {
"stevearc/oil.nvim",
dependencies = { { "echasnovski/mini.icons", opts = {} } },
config = function()
require "custom/oil"
end,
}
Затем, как можно видеть, сама функция настроек расположена отдельно в файле с идентичным названием, но в директории "повыше":
lua/custom/oil.lua
require("oil").setup{
opts = {
keymaps = {
["g?"] = "actions.show_help",
},
},
}
Разница между ftplugin и after/ftplugin
Суть одна и та-же: загрузка конфигураций для конкретных типов файлов, однако:
ftplugin
Тут храняться настройки, которые будут применены до загразуки плагинов. Т.е. настройки, что определны где-то в настройках плагинов будут переписывать если что те, которые установлены для типов файлов тут
after/ftplugin
Настройки для типов файлов тут будут применены уже после того, как загрузится все содержимое neovim => эти настройки будут перегружать все то, что было настроено в плагинах
Включение / Выключение некоторых плагинов
Из за возникновения случаев, когда некоторые плагины на некоторых машинах не нужно включать (например obsidian мне нужен только на хостовых машинах, на удаленных он будет только мешать открывать .md файлы), то в init.lua
у меня в самом начале устанавливаются для таких плагинов глобальные переменные со следующей семантикой:
vim.g.<plugin_name>_enabled = <type:bool>
Например:
vim.g.obsidian_enabled = false
Это позволяет динамически включать/выключать плагины без необходимости усложнять конфиг lazy
FAQ
Зачем так мучаться? Не проще все кидать в один файл?
Проще, но такое распараллеливание позволяет легче дебажить файлы настроек. Т.е. исправляя настройки мы можем просто source
ить файл настроек, не трогая конфигурации скачивания файлов, чтобы лишний раз не триггерить Lazy.
Что делать, если в
checkhealth
выдается ошибкаluarocks not found
?
Необходимо его установить по инструкции с сайта
Что делать, если при установке
luarocks
выдает ошибку что не найдены.h
файлы?
Надо установить хэдеры lua командой:
sudo apt install liblua5.3-dev
checkhealth не может найти tree-sitter cli
Надо установить соответствующий npm
пакет:
npm install -g tree-sitter-cli