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

Менеджер проекту

Вступ

Однією з особливостей, яку обов’язково має мати IDE, є можливість керувати різними проектами, над якими працює розробник або видавець. Можливість вибрати проект для роботи, коли NvChad відкрито, без необхідності вводити команди в рядку стану для досягнення мети. Це економить час і дозволяє спростити управління у випадку великої кількості проектів.

Використання charludo/projectmgr.nvim інтегрує цю функцію. Плагін забезпечує чудову інтеграцію з Telescope та деякими цікавими додатковими функціями, такими як можливість синхронізувати репозиторій git під час відкриття проекту.

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

Установка плагіна

Щоб установити плагін, вам потрібно буде відредагувати файл plugins/init.lua, додавши такий блок коду:

{
    "charludo/projectmgr.nvim",
    lazy = false, -- important!
},

Як тільки ви збережете файл, плагін буде доступний для встановлення. Щоб установити його, відкрийте lazy.nvim за допомогою команди :Lazy та введіть I. Після завершення встановлення вам доведеться вийти з редактора та знову відкрити його, щоб він прочитав нову конфігурацію, яку ви ввели.

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

ProjectMgr Init

Використання менеджера проекту

Усі операції виконуються за допомогою клавіші Ctrl, за якою йде літера (наприклад, <C-a), тоді як клавіші <CR> відповідає клавіша Enter.

У наступній таблиці показано всі доступні операції

Параметр Операція
<CR> Відкриває проект під курсором
<C-a> Додає проект за допомогою інтерактивної процедури
<C-d> Видаляє проект
<C-e> Змінює налаштування проекту
<C-q> Закриває буфер

Щоб додати свій перший проект, вам потрібно буде використати комбінацію Ctrl + a, яка відкриє інтерактивне меню в рядку стану. У цьому прикладі буде використано клон документації Rocky Linux, збереженої в ~/lab/rockydocs/documentation.

Перше запитання попросить вас назвати проект:

Project Name: documentation (Назва проекту: документація)

Він проходитиме шляхом проекту:

Project Path: ~/lab/rockydocs/documentation/

Далі слідує можливість встановлювати команди для запуску під час відкриття та закриття проекту. Ці команди стосуються виконуваних файлів у редакторі, а не мови bash.

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

Команда запуску (необов’язково): NvimTreeToggle

Або виконати команду перед закриттям редактора.

Команда виходу (необов’язково):

Команди слід вводити, пропускаючи двокрапку :, яка використовується для виконання тих самих команд у рядку стану.

Після завершення налаштування ваш проект буде доступний у буфері. Щоб відкрити його, виберіть його та натисніть Enter.

ProjectMgr Add

Як ви можете бачити на знімку екрана в Config & Info плагін розпізнає папку як керовану Git і надає нам деяку інформацію про неї.

Редагування проекту виконується за допомогою Ctrl + e і складається з нового інтерактивного циклу, тоді як будь-яке видалення виконується за допомогою комбінації Ctrl + d.

Додаткові функції

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

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

config = function()
    require("projectmgr").setup({
        autogit = {
            enabled = true,
            command = "git pull --ff-only >> .git/fastforward.log 2>&1",
        },
    })
end,

Як ви можете бачити з коду, викликається функція require("projectmgr").setup, яка дозволяє вам змінити параметри за замовчуванням. Все, що ви встановите всередині нього, змінить його роботу.

Команда git pull --ff-only виконує швидку синхронізацію сховища вперед, завантажуючи лише ті файли, які не мають конфліктів і можуть бути оновлено без втручання з вашого боку.

Результат команди також спрямовується до файлу .git/fastforward.log, щоб запобігти його відображенню на терміналі, де запущено NvChad, і мати доступну історію синхронізації.

Також надається можливість зберегти сеанс після його закриття. Це дозволяє повернутися до сторінок, над якими ви працювали, вибравши проект і відкривши його знову.

session = { enabled = true, file = "Session.vim" },

Цей параметр увімкнено за умовчанням, але він записує файл Session.vim у кореневий каталог проекту та це небажано у випадку документації Rocky Linux. У цьому прикладі його збережено в папці .git, яка не контролюється версіями.

Налаштуйте шлях Session.vim і fastforward.log відповідно до ваших потреб.

Після внесення змін ваша конфігурація має виглядати так:

{
    "charludo/projectmgr.nvim",
    lazy = false, -- important!
    config = function()
        require("projectmgr").setup({
            autogit = {
                enabled = true,
                command = "git pull --ff-only > .git/fastforward.log 2>&1",
            },
            session = { enabled = true, file = ".git/Session.vim" },
        })
    end,
},

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

Важливо

Відкриті файли в збережених буферах сеансу NvChad не оновлюються автоматично.

Щоб перевірити, чи відкриті файли не збігаються з оновленими зі сховища, ви можете скористатися командою :checktime, яка перевіряє, чи файли, відкриті в редакторі, змінено за межами NvChad, і попереджає вас про необхідність оновити буфери.

Маппінг

Щоб пришвидшити відкриття ваших проектів, ви можете створити комбінацію клавіш для розміщення свого відображення в mapping.lua. Прикладом може бути:

-- Projects
map("n", "<leader>fp", "<CMD> ProjectMgr<CR>", { desc = "Open Projects" })

З редактором у стані NORMAL ви можете відкрити менеджер проектів за допомогою комбінації Space + f і p.

Висновки та заключні думки

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

Ми також повинні відзначити чудову інтеграцію з Telescope, що робить керування проектами дуже функціональним.

Author: Franco Colussi

Contributors: Steven Spencer, Ganna Zhyrnova