Як почати з менеджерами плагінів
Що таке lazy?
Хоч я і люблю NeoVim, інколи його налаштування можуть бути складними. Він чудово виконує багато завдань, але установка і оновлення плагінів — не одна з них. Саме тому розробники третіх сторін прийшли на допомогу. Є кілька популярних менеджерів плагінів: packer, plug та мій улюблений lazy.
Перш ніж продовжити, потрібно розібратися з конфліктом у назвах. Є lazy — менеджер плагінів, часто званий lazy.nvim
, і є lazy — дистрибуція Vim, яка зазвичай називається LazyVim
. Дистрибуція — це попередньо упакований набір NeoVim, плюс вибрані та налаштовані плагіни. У цій статті йдеться саме про менеджер плагінів lazy.nvim.
Як встановити lazy.nvim
Ми будемо слідувати інструкціям на сайті lazy.nvim за посиланням https://lazy.folke.io/installation. Одна з заплутаних частин використання neovim полягає в тому, що є так багато способів організувати ваші конфігураційні файли. Перш за все, ви можете використовувати vimscript, мову сценаріїв, яка працює тільки в vim, або ви можете використати lua. Оскільки ми використовуємо neovim, оберемо lua.
NeoVim буде шукати ваш конфігураційний файл за шляхом ~/.config/nvim/init.lua
. Тож створіть цей каталог і файл. У ньому має бути лише текст:
require("config.lazy")
Це вказує на те, щоб NeoVim відкрив і виконав ваш конфігураційний файл для lazy. Це трохи оманливо, оскільки файл ~/.config/nvim/init.lua
припускає, що все, що він читає, знаходиться в каталозі ~/.config/nvim/lua
. Отже, цей конфігураційний файл насправді буде знаходитися за шляхом ~/.config/nvim/lua/config/lazy.lua
. Перейдіть до інструкцій з встановлення lazy.nvim і скопіюйте наданий текст. На цей момент текст виглядає так:
-- Bootstrap lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
if vim.v.shell_error ~= 0 then
vim.api.nvim_echo({
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
{ out, "WarningMsg" },
{ "\nPress any key to exit..." },
}, true, {})
vim.fn.getchar()
os.exit(1)
end
end
vim.opt.rtp:prepend(lazypath)
-- Make sure to setup `mapleader` and `maplocalleader` before
-- loading lazy.nvim so that mappings are correct.
-- This is also a good place to setup other settings (vim.opt)
vim.g.mapleader = " "
vim.g.maplocalleader = "\\"
-- Setup lazy.nvim
require("lazy").setup({
spec = {
-- import your plugins
{ import = "plugins" },
},
-- Configure any other settings here. See the documentation for more details.
-- colorscheme that will be used when installing plugins.
install = { colorscheme = { "habamax" } },
-- automatically check for plugin updates
checker = { enabled = true },
})
Цей скрипт lua виконує три функції. Перше, він ініціалізує lazy.nvim, перевіряючи, чи встановлено lazy.nvim. Якщо ні, то neovim завантажить його з github.
По-друге, він встановлює ваші клавіші лідера та локального лідера. Якщо ви не знаєте, що це, залиште їх за замовчуванням.
І нарешті, він завантажує lazy.nvim, імпортує плагіни, встановлює кольорову схему за замовчуванням і налаштовує lazy для автоматичних оновлень.
Далі потрібно створити каталог для плагінів за адресою ~/.config/nvim/lua/plugins
. Тут ми розмістимо всі інструкції для завантаження плагінів.
Додавання плагінів
Плагіни додаються шляхом створення lua файлів в каталозі ~/.config/nvim/lua/plugins
. Додамо наш перший плагін — простий плагін для форматування таблиць markdown. Створіть файл ~/.config/nvim/lua/plugins/nvim-markdown-tables.lua
.
Додайте наступний текст.
return {
'donovanhubbard/markdown-tables.nvim',
ft = markdown,
keys = {
vim.keymap.set("v", "ft", ":FormatTable"),
}
}
Тут є кілька моментів, на які варто звернути увагу. По-перше, всі специфікації плагінів повинні повертати таблицю lua. Перший елемент у таблиці повинен бути адресою на GitHub для вихідного коду. У цьому випадку другий елемент — це ключове слово ft
, що означає "filetype" (тип файлу). За замовчуванням плагіни завантажуються тільки тоді, коли їх викликають. Цей додаток працює тільки з markdown-файлами, тому ми хочемо, щоб він завантажувався лише для таких файлів. Якщо ви хочете, щоб плагін завжди завантажувався, замініть на lazy = false,
. Останній елемент задає клавіші, які ви будете використовувати для плагіна.
vim.keymap.set("v", "ft", ":FormatTable"),
Це означає, що якщо ви знаходитесь у візуальному режимі і натискаєте клавішу лідера (за замовчуванням пробіл), а потім вводите символи f
і t
, то викликається lua-функція :FormatTable
, яка активує плагін.
Давайте додамо інший плагін. Цього разу додамо тему Tokyo Night. Створіть новий файл за адресою ~/.config/nvim/lua/plugins/tokyo-night.lua
. Напишіть наступне.
return {
"folke/tokyonight.nvim",
lazy = false,
priority = 1000,
opts = {},
}
Знову ми бачимо, що повертається таблиця, першим елементом якої є адреса на GitHub для коду. У цьому випадку ми хочемо, щоб плагін завжди завантажувався, тому ставимо lazy = false
. Ми вказуємо пріоритет, який визначає порядок завантаження плагінів. Також ми задаємо opts зі значенням за замовчуванням {}
.
Тестування плагінів
Нарешті, відкрийте neovim, і ви побачите вікно, яке показує статус усіх ваших плагінів.
Воно має автоматично встановити всі завантажені плагіни. Для перевірки наявності оновлень натискайте shift + u
. Щоб примусово запустити установку, якщо вони виконуються автоматично, ви можете натискати shift + i
. Щоб вийти, натискайте q
.
Якщо ви хочете знову викликати це вікно, виконайте команду :lazy
.
Висновок
Існує цілий світ плагінів, і ви можете дійсно зайти в них з головою. Є багато інших варіантів плагінів, які ми не використовували, тому обов'язково ознайомтесь з документацією до lazy.nvim. Успішного vim'інгу!
Перекладено з: NeoVim Plugin Manager: lazy.nvim