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

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

Вступ

Однією з особливостей, яку обов’язково має мати 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