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

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

Помилкові інструкції

З випуском версії 2.5 інструкції на цій сторінці більше не є правильними; його використання не рекомендується для нових установок. Для отримання додаткової інформації див. головну сторінку посібника.

Передумови

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

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

Насправді це не справжня «інсталяція», а скоріше написання спеціальної конфігурації Neovim для нашого користувача.

??? warning «Виконання чистої інсталяції»

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

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

Якщо ви раніше використовували інсталяцію 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

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

Тепер, коли ми очистили, ми можемо переходити до встановлення NvChad.

Конфігурація клонування

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

git clone https://github.com/NvChad/NvChad ~/.config/nvim --depth 1 && nvim

Перша частина команди клонує репозиторій NvChad до папки ~/.config/nvim; це типовий шлях Neovim для пошуку конфігурації користувача. Параметр --depth 1 наказує git клонувати лише репозиторій, встановлений як «за замовчуванням» на GitHub.

Після завершення процесу клонування у другій частині команди викликається виконуваний файл Neovim (nvim), який, знайшовши папку конфігурації, почне імпортувати конфігурації, знайдені в його файли init.lua у попередньо визначеному порядку.

Bootstrap

Перед початком початкового завантаження програма встановлення запропонує встановити базову структуру (template chadrc) для наших подальших налаштувань:

Do you want to install chadrc template? (Бажаєте встановити шаблон chadrc?) (y/n):

Хоча вибір для встановлення рекомендованої структури не є обов’язковим, це однозначно рекомендується для тих, хто новачок у цьому редакторі. Поточні користувачі NvChad, які вже мають папку custom, зможуть її використовувати після внесення необхідних змін.

Структура, створена за допомогою шаблону, також використовуватиметься в цьому посібнику для розробки конфігурації для написання документів у Markdown.

Для тих, хто хоче дізнатися більше про цю тему перед початком встановлення, можна переглянути відповідну сторінку Template Chadrc.

Сторінка містить інформацію про структуру папки, яка буде створена, функції пов’язаних файлів та іншу корисну інформацію для налаштування NvChad.

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

Інсталяція

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

NvChad Rockydocs

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

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

Це дає змогу оновлювати редактор без шкоди для особистої конфігурації.

Базова структура

Частина, зарезервована для редактора, наступна:

.config/nvim
├── init.lua
├── lazy-lock.json
├── LICENSE
└── lua
    ├── core
    │   ├── bootstrap.lua
    │   ├── default_config.lua
    │   ├── init.lua
    │   ├── mappings.lua
    │   └── utils.lua
    └── plugins
        ├── configs
        │   ├── cmp.lua
        │   ├── lazy_nvim.lua
        │   ├── lspconfig.lua
        │   ├── mason.lua
        │   ├── nvimtree.lua
        │   ├── others.lua
        │   ├── telescope.lua
        │   └── treesitter.lua
        └── init.lua

Структура шаблону

Частина, яка стосується налаштувань, складається з наступної структури:

.config/nvim/lua/custom/
├── chadrc.lua
├── configs
│   ├── lspconfig.lua
│   ├── null-ls.lua
│   └── overrides.lua
├── highlights.lua
├── init.lua
├── mappings.lua
├── plugins.lua
└── README.md

Аналіз структури

Перший файл, який ми зустрічаємо, це файл init.lua, який ініціалізує конфігурацію шляхом вставки папки lua/core та lua/core/utils.lua</0 > (і якщо є, файли <code>lua/custom/init.lua) у дерево nvim. Запускає завантажувальну програму lazy.nvim (менеджер плагінів) і після завершення ініціалізує папку plugins.

Зокрема, функція load_mappings() викликається для завантаження комбінацій клавіш. Крім того, функція gen_chadrc_template() надає підпрограму для створення папки custom.

require("core")

local custom_init_path = vim.api.nvim_get_runtime_file("lua/custom/init.lua", false)[1]

if custom_init_path then
    dofile(custom_init_path)
end

require("core.utils").load_mappings()

local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"

-- bootstrap lazy.nvim!
if not vim.loop.fs_stat(lazypath) then
    require("core.bootstrap").gen_chadrc_template()
    require("core.bootstrap").lazy(lazypath)
end

vim.opt.rtp:prepend(lazypath)
require("plugins")

dofile(vim.g.base46_cache .. "defaults")

Включення папки core також призводить до включення файлу core/init.lua, який замінює деякі конфігурації інтерфейсу Neovim і готує до керування буфером.

Як ми бачимо, кожен файл init.lua включено відповідно до добре встановленого порядку. Це використовується для вибіркового перевизначення різних параметрів із основних налаштувань. Загалом можна сказати, що файли init.lua мають функції для завантаження глобальних параметрів, autocmd або будь-чого іншого.

Continuing with the structural analysis, we find the lua/plugins folder, which contains the setup of the built-in plugins and their configurations. Основні плагіни конфігурації будуть описані в наступному розділі. Як ми бачимо, папка core/plugins також містить файл init.lua, який тут використовується для встановлення та подальшої компіляції плагінів.

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

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

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

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

require("core.utils").load_mappings()

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

  • C = Ctrl
  • leader = ++пробіл++
  • A = Alt
  • S = Shift

Примітка

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

Ось деякі з набору ключів. Ми рекомендуємо переглянути файл, згаданий вище, щоб отримати вичерпний список.

<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