Перейти до змісту

Перетворення Neovim на просунутий IDE

Передумови

Як зазначено на сайті NvChad, вам потрібно переконатися, що система відповідає таким вимогам:

  • Neovim 0.10.0.
  • Шрифт Nerd Установіть його в емуляторі терміналу.
  • Переконайтеся, що шрифт, який ви налаштували, не закінчується на Mono
  • Приклад: шрифт Iosevka Nerd, а не Шрифт Iosevka Nerd Mono
  • Ripgrep потрібен для пошуку grep за допомогою Telescope (НЕОБОВ’ЯЗКОВО).
  • GCC та Make

Як зазначено у вимогах, встановлення цієї нової конфігурації поверх попередньої може створити проблеми, які неможливо виправити. Рекомендується чиста інсталяція.

Попередні операції

Якщо ви раніше використовували інсталяцію Neovim, вона створить три папки для запису ваших файлів, а саме:

~/.config/nvim
~/.local/share/nvim
~/.cache/nvim

Щоб виконати чисту інсталяцію конфігурації, нам потрібно спочатку створити резервну копію попередньої:

mkdir ~/backup_nvim
cp -r ~/.config/nvim ~/backup_nvim
cp -r ~/.local/share/nvim ~/backup_nvim
cp -r ~/.cache/nvim ~/backup_nvim

А потім видаляємо всі попередні конфігурації та файли:

rm -rf ~/.config/nvim
rm -rf ~/.local/share/nvim
rm -rf ~/.cache/nvim

Встановлення

Створення структури конфігурації реалізується шляхом копіювання файлів з репозиторію ініціалізації (starter) за допомогою Git. Цей метод дозволяє встановити конфігурацію NvChad, підготовлену як плагін Neovim, у менеджері плагінів lazy.nvim.
Таким чином, конфігурація оновлюється, як і всі інші плагіни, що спрощує керування користувачем. Крім того, цей підхід робить всю конфігурацію користувача незалежною, дозволяючи її повне керування та розподіл між кількома машинами.

Щоб завантажити та ініціалізувати конфігурацію, скористайтеся такою командою:

git clone https://github.com/NvChad/starter ~/.config/nvim && nvim

Команда складається з двох частин. Перший завантажує вміст стартового репозиторію до ~/.config/nvim/ (папка за замовчуванням для налаштувань Neovim), тоді як другий викликає виконуваний файл nvim, який ініціалізує редактор щойно завантаженою конфігурацією. Після завершення встановлення плагінів і синтаксичних аналізаторів ви побачите наступний екран. Щоб закрити менеджер плагінів, введіть q :

NvChad Install

Початкова конфігурація є мінімальною та є відправною точкою для ваших налаштувань. Як свідчить скріншот, під час першого запуску редактора завантажуються лише чотири модулі (плагіни), позначені галочкою, а саме:

  • base46 - надає теми редактора
  • NvChad - базова конфігурація, яка дозволяє вводити конфігурацію користувача в Neovim
  • nvim-treesitter - для аналізу та підсвічування коду
  • ui - інтерфейс редактора (рядок статусу, рядок вкладок..)

Решта модулів будуть активовані завдяки техніці lazyloading, коли буде запрошено функціональність, що надається модулем. Це покращує продуктивність редактора загалом і, зокрема, покращує час його запуску.

На цьому етапі редактор готовий до використання. Наступні розділи надають детальний огляд процесу інсталяції та не є необхідними для щоденного використання. Якщо вас цікавить лише його використання, ви можете звернутися до сторінки Використання NvChad.
Однак, все ж рекомендується ознайомитися з офіційною документацією для ознайомлення з її компонентами та функціональністю.

Щоб закрити редактор, використовуйте клавішу : q.

Bootstrap

Процес початкового завантаження реалізовано у файлі init.lua репозиторію starter і складається з таких кроків:

Початкове налаштування шляху до теми за замовчуванням і клавіші <leader>, у цьому випадку клавіші Space:

vim.g.base46_cache = vim.fn.stdpath "data" .. "/nvchad/base46/"
vim.g.mapleader = " "

Наступна інсталяція основного плагіна lazy.nvim:

-- bootstrap lazy and all plugins
local lazypath = vim.fn.stdpath "data" .. "/lazy/lazy.nvim"

if not vim.loop.fs_stat(lazypath) then
  local repo = "https://github.com/folke/lazy.nvim.git"
  vim.fn.system { "git", "clone", "--filter=blob:none", repo, "--branch=stable", lazypath }
end

vim.opt.rtp:prepend(lazypath)

local lazy_config = require "configs.lazy"

А також інсталяція плагінів NvChad і всіх налаштованих у папці plugins:

-- load plugins
require("lazy").setup({
  {
    "NvChad/NvChad",
    lazy = false,
    branch = "v2.5",
    import = "nvchad.plugins",
    config = function()
      require "options"
    end,
  },

  { import = "plugins" },
}, lazy_config)

Потім застосуйте тему до параметрів default і statusline:

-- load theme
dofile(vim.g.base46_cache .. "defaults")
dofile(vim.g.base46_cache .. "statusline")

Після завершення також буде введено autocmds (автокоманди Neovim), необхідні для операції конфігурації та розкладки клавіатури:

require "nvchad.autocmds"

vim.schedule(function()
  require "mappings"
end)

Структура конфігурації

Структура, встановлена NvChad, така:

~/.config/nvim/
├── init.lua
├── lazy-lock.json
├── LICENSE
├── lua
│   ├── chadrc.lua
│   ├── configs
│   │   ├── conform.lua
│   │   └── lazy.lua
│   ├── mappings.lua
│   ├── options.lua
│   └── plugins
│       └── init.lua
└── README.md

Він складається з початкового файлу init.lua, який ініціалізує та координує вставку налаштувань у конфігурацію Neovim. Цей файл спочатку виглядає ідентично файлу, який використовується bootstrap зі стартового репозиторію starter, показаного вище. Він буде використаний пізніше для завантаження інших файлів у конфігурацію, таких як власний файл autocommands.lua.

Далі йде файл lazy-lock.json, де зберігаються всі плагіни інсталяції та їхній статус щодо розробки на GitHub. Цей файл дозволяє синхронізувати статус редактора між інсталяціями, наявними на кількох машинах, і дозволяє користувацьким інсталяціям відтворювати потрібний статус.

Решта конфігурації знаходиться в папці lua та ініціалізується, починаючи з файлу chadrc.lua, який у початковій версії містить лише налаштування теми редактора.
Цей файл використовується для налаштування зовнішнього вигляду редактора (UI) та має спільний синтаксис з файлом nvconfig.lua плагіна NvChad; щоб скомпілювати його, просто скопіюйте потрібну частину файлу nvconfig.lua у ваш chadrc.lua та змініть його властивості за потреби.

Наступний файл, який використовується конфігурацією (папки будуть описані пізніше), – це файл option.lua для налаштувань редактора, таких як відступи, спільний доступ до буфера обміну з гостьовою системою та, що дуже важливо, включення бінарних файлів, встановлених Mason, до шляху.
Як і попередній, він використовує синтаксис відповідного файлу плагіна NvChad; для його налаштування, як описано вище, просто скопіюйте параметри та відредагуйте їх.

Нарешті, файл mapping.lua знаходиться там, де потрібно встановити клавіші клавіатури для виклику різних функцій, що пропонуються редактором. Початковий файл містить зіставлення клавіш для входу в режим COMMAND, для форматування за допомогою conform.nvim та клавішу для виходу з режиму INSERT.
Клавіші використовують рідний синтаксис Neovim vim.keymap.set, а для їх налаштування ви можете звернутися до [стандартного відображення] NvChad (https://github.com/NvChad/NvChad/blob/v2.5/lua/nvchad/mappings.lua) або до сторінки довідки, що міститься в Neovim :h vim.keymap.set.

require "nvchad.mappings"

-- add yours here

local map = vim.keymap.set

map("n", ";", ":", { desc = "CMD enter command mode" })

map("n", "<leader>fm", function()
  require("conform").format()
end, { desc = "File Format with conform" })

map("i", "jk", "<ESC>", { desc = "Escape insert mode" })

Дві папки, що входять до конфігурації configs та plugins, служать для керування плагінами; особисті плагіни слід розміщувати в папці plugins, а їхні додаткові конфігурації, якщо такі є, в папці configs.
Спочатку для встановлення буде доступний файл plugins/init.lua з плагіном conform.lua, налаштованим у configs/conform.lua та nvimtree.nvim, з опцією для декорацій, пов'язаних з Git.

Організація плагінів

Включення плагінів здійснюється шляхом вставлення будь-якого належним чином налаштованого файлу, наявного в папці plugins, це дозволяє організовувати плагіни, наприклад, за призначенням, шляхом створення окремих файлів (utils.lua, editor.lua, markdown.lua тощо), таким чином можна працювати над конфігурацією більш упорядковано.

Є також файли для ліцензування та README.md, скопійовані зі сховища starter, які можна використовувати для ілюстрації конфігурації, якщо вона підтримується у сховищі Git.

Основні клавіші клавіатури

Це виклик, який повертає основні відображення команд:

vim.schedule(function()
  require "mappings"
end)

Це встановлює чотири основні клавіші, за допомогою яких разом з іншими клавішами можна запускати команди. Основні ключі:

  • C = Ctrl
  • leader = Space
  • A = Alt
  • S = Shift

Note

Ми будемо посилатися на ці зіставлення ключів кілька разів у цих документах.

Відображення за замовчуванням міститься в lua/mapping.lua плагіна NvChad, але його можна розширити за допомогою інших спеціальних команд за допомогою власного mappings.lua.

<leader>th щоб змінити тему Space + t + h
<C-n> щоб відкрити nvimtree Ctrl + n
<A-i> щоб відкрити термінал у плаваючій вкладці Alt + i

Для вас є багато попередньо встановлених комбінацій, які охоплюють усі можливості використання NvChad. Варто зупинитися, щоб проаналізувати зіставлення ключів, перш ніж почати використовувати свій екземпляр Neovim, налаштований за допомогою NvChad.

Author: Franco Colussi

Contributors: Steven Spencer, Ganna Zhyrnova