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

Вступ

У цій книзі ви знайдете способи впровадження Neovim разом із NvChad для створення повнофункціонального Integrated Development Environment (IDE).

Я кажу «шляхи», тому що є багато можливостей. Тут автор зосереджується на використанні цих інструментів для написання markdown, але якщо markdown не є вашою метою, не хвилюйтеся, просто читайте далі. Якщо ви не знайомі з жодним із цих інструментів (NvChad або Neovim), тоді ця книга дасть вам вступ до обох, і якщо ви покроково ознайомитеся з цими документами, ви незабаром зрозумієте, що можете налаштувати це середовище, щоб воно було величезною допомогою для будь-яких потреб у програмуванні чи написанні сценаріїв.

Хочете IDE, яка допоможе писати playbooks Ansible? Ви можете це отримати! Хочете IDE для Golang? Це теж доступно. Вам потрібен хороший інтерфейс для написання сценаріїв BASH? Це також доступно.

Через використання Language Server Protocols і linters, ви можете налаштувати середовище, налаштоване саме для вас. Найкраще те, що після налаштування середовища його можна швидко оновити, коли з’являться нові зміни, за допомогою lazy.nvim і Mason, обидва з яких є розглянуто тут.

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

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

Використання Neovim як IDE

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

Конфігурація написана на Lua, дуже швидкій мові програмування, яка дозволяє NvChad мати дуже швидкий час запуску та виконання для команд і натискань клавіш. Це також стало можливим завдяки техніці Lazy loading, яка використовується для плагінів і завантажує їх лише за потреби.

Інтерфейс виходить дуже чистим і приємним.

Як зазначають розробники NvChad, проект призначений лише як основа для створення вашої власної персональної IDE. Подальше налаштування здійснюється за допомогою плагінів.

NvChad UI

Основні особливості

  • Розроблено, щоб бути швидким. Від вибору мови програмування до методів завантаження компонентів, усе створено для мінімізації часу виконання.
  • Привабливий інтерфейс. Незважаючи на те, що це програма cli, інтерфейс виглядає сучасно та красиво графічно, а всі компоненти підходять інтерфейс ідеально.
  • Надзвичайна конфігурація. Завдяки модульності, отриманій від базової програми (NeoVim), редактор можна ідеально адаптувати до потреб. Однак пам’ятайте, що коли ми говоримо про налаштування, ми маємо на увазі функціональність, а не зовнішній вигляд інтерфейсу.
  • Механізм автоматичного оновлення. Редактор постачається з механізмом (через використання git), який дозволяє оновлення за допомогою проста команда :NvChadUpdate.
  • На базі Lua. Конфігурація NvChad повністю написана мовою lua, що дає змогу легко інтегрувати її в конфігурацію Neovim за допомогою всього потенціалу редактора, на якому він заснований.
  • Безліч вбудованих тем. Конфігурація вже містить велику кількість тем для використання, завжди пам’ятаючи, що ми говоримо про * програма cli*; теми можна вибрати за допомогою <leader> + клавіша th.

NvChad Themes

Посилання

Lua

Що таке Lua?

Lua — це надійна, легка мова сценаріїв, яка підтримує різноманітні методи програмування. Назва "Lua" походить від португальського слова, що означає «місяць.»

Lua було розроблено в Католицькому університеті Ріо-де-Жанейро Роберто Єрусалімським, Луїсом Енріке де Фігейредо та Вальдемаром Селесом. Розробка була необхідна для них, оскільки до 1992 року в Бразилії діяли суворі правила щодо імпорту апаратного та програмного забезпечення, тож із чистої необхідності ці троє програмістів розробили власну мову сценаріїв під назвою Lua.

Оскільки Lua зосереджена насамперед на сценаріях, вона рідко використовується як окрема мова програмування. Замість цього вона найчастіше використовується як мова сценаріїв, яку можна інтегрувати (вбудовувати) в інші програми.

Lua використовується при розробці відеоігор та ігрових движків (Roblox, Warframe..), як мова програмування в багатьох мережевих програмах (Nmap, ModSecurity..) і як мова програмування в промислових програмах. Lua також використовується як бібліотека, яку розробники можуть інтегрувати у свої програми, щоб увімкнути функціональність сценаріїв, діючи виключно як невід’ємна частина основної програми.

Як працює Lua

Є два основних компоненти Lua:

  • Інтерпретатор Lua
  • Віртуальна машина Lua (VM)

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

Ключові особливості

  • Швидкість: Lua вважається однією з найшвидших мов програмування серед інтерпретованих мов сценаріїв; він може виконувати дуже важкі завдання швидше, ніж більшість інших мов програмування.
  • Розмір: Lua крихітна порівняно з іншими мовами програмування. Цей невеликий розмір ідеально підходить для інтеграції Lua в різні платформи, від вбудованих пристроїв до ігрових движків.
  • Портативність та інтеграція: портативність Lua практично необмежена. Будь-яка платформа, яка підтримує стандартний компілятор C, може без проблем запускати Lua. Lua не вимагає складних перезаписів, щоб бути сумісним з іншими мовами програмування.
  • Простота: Lua має простий дизайн, але забезпечує потужну функціональність. Однією з головних особливостей Lua є метамеханізми, які дозволяють розробникам реалізувати їх функціональні можливості. Синтаксис простий і зрозумілий, тому будь-хто може легко вивчити Lua та використовувати його у своїх програмах.
  • Ліцензія: Lua — це безкоштовне програмне забезпечення з відкритим вихідним кодом, що розповсюджується за ліцензією MIT. Це дозволяє будь-кому використовувати його без сплати ліцензії чи роялті.

Neovim

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

  • Продуктивність: дуже швидка.
  • Можливість налаштування: широка екосистема плагінів і тем.
  • Підсвічування синтаксису: інтеграція з Treesitter і LSP (вимагає деяких додаткових конфігурацій).
  • Мультиплатформенність: Linux, Windows і macOS
  • Ліцензія: Mit: коротка та проста дозвільна ліцензія з умовами, що вимагають лише збереження авторських прав і повідомлень про ліцензію.

LSP

Що таке Language Server Protocol?

Мовний сервер — це стандартизована мовна бібліотека, яка використовує власну процедуру (протокол) для підтримки таких функцій, як автозаповнення, визначення переходу або визначення наведення курсора.

Ідея протоколу мовного сервера (LSP) полягає в стандартизації протоколу зв’язку між інструментами та серверами, щоб один мовний сервер можна було повторно використовувати в кількох інструментах розробки. Таким чином, розробники можуть просто інтегрувати ці бібліотеки у свої редактори та посилатися на існуючі мовні інфраструктури, замість того, щоб налаштовувати свій код для їх включення.

tree-sitter

Tree-sitter в основному складається з двох компонентів: генератора аналізатора та бібліотеки інкрементального аналізу. Він може побудувати синтаксичне дерево вихідного файлу та ефективно оновлювати його з кожною зміною.

Синтаксичний аналізатор — це компонент, який розкладає дані на менші елементи, щоб полегшити їх переклад іншою мовою або, як у нашому випадку, для передачі в бібліотеку аналізу. Після розкладання вихідного файлу бібліотека синтаксичного аналізу аналізує код і перетворює його на синтаксичне дерево, що дозволяє більш розумно керувати структурою коду. Це дає змогу покращити (і прискорити)

  • підсвічування синтаксису
  • навігацію по коду
  • рефакторинг
  • текстові об’єкти та рухи
Взаємодоповнюваність LSP і tree-sitter.

Хоча може здатися, що дві служби (LSP і tree-sitter) є зайвими, вони насправді доповнюють один одного, оскільки LSP працює на рівні проекту, тоді як tree-sitter працює лише з файлом з відкритим кодом.

Тепер, коли ми трохи пояснили технології, які використовуються для створення IDE, ми можемо перейти до Додаткового програмного забезпечення, необхідного для налаштування нашого NvChad.

Author: Franco Colussi

Contributors: Steven Spencer, Ganna Zhyrnova