Робота з Git у Vim

4 хв. читання

Сьогодні розглянемо, як можна організувати роботу з Git у редакторі Vim. З коробки в нього немає функціоналу для контролю версій, але редактор дуже легко розширюється за допомогою плагінів. Для початку оновіть свій Vim/Neovim до останньої версії та встановіть менеджер плагінів. Я буду використовувати vim-plug.

Почнемо з плагіна vim-fugitive. Для встановлення за допомогою vim-plug потрібно додати його до списку плагінів:

call plug#begin('~/.local/share/nvim/plugged')
	Plug 'tpope/vim-fugitive'
call plug#end()

Зберігаємо і перезавантажуємо файл, для цього можна використати source ~/.config/nvim/init.vim. Далі виконуємо команду :PlugInstall. Плагін надає нам можливість взаємодіяти з Git через командний режим.

Наприклад, щоб подивитись статус, ми можемо виконати :G, замість того щоб відкривати термінал через :ter або переходити в нове вікно терміналу і там виконувати git status. За аналогією ми можемо застосувати :Gcommit для коміту, перед тим додавши файл командою :Gw.

Також перевагою плагіна є зручне керування вікнами. Для прикладу, коли ми хочемо подивитись, хто робив коміти по файлу, можемо використати :Gblameі отримаємо зручний вивід авторів комітів. Так само можна застосувати :Gdiff. Список усіх команд є в GitHub-репозиторії.

Наступний плагін — Xuyuanp/nerdtree-git-plugin, він використовується разом з плагіном Nerdtree. Про нього я вже писав у статті, присвяченій навігації у Vim, там ви можете подивитись, як його встановлювати. Плагін виділяє файли, які були модифіковані та не закомічені, це дозволяє нам побачити, що і в якій директорії потрібно додати до коміту.

Також у вищезгаданій статті ми розглядали плагін fzf.vim. Ознайомтесь з його функціоналом, встановіть і налаштуйте за інструкцією, а тоді поверніться до цього тексту. До всіх налаштувань, які ми розбирали в попередній статті, нам потрібно 2 рядки коду.

nnoremap <Leader>C :Commits<CR>
nnoremap <Leader>BC :BCommits<CR>

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

:BCommits — робить все те саме, але підтягує коміти, що стосуються тільки поточного буфера (відкритого файла).

Плагін airblade/vim-gitgutter показує, які рядки коду були модифіковані, видалені або додані. Це не єдина його задача, детально почитати про функціонал найкраще у документації. Встановлюємо плагін у звичайний спосіб.

Plug 'airblade/vim-gitgutter'

Далі можемо використати команду :GitGutterEnable, щоб показати інформацію. Для зручності варто додати до нашої конфігурації autocmd BufWritePost * GitGutter, тоді при зберіганні файлу інформація буде оновлюватись автоматично.

Розглянемо також простий плагін rhysd/git-messenger.vim. Він дозволяє нам переглянути деяку інформацію про певний рядок. Для цього використовуємо <Leader>gm. Плагін встановлюється так само, як попередні.

Plug 'rhysd/git-messenger.vim'

Детальніше про нього можна дізнатись з документації.

Наступний плагін mbbill/undotree дозволяє нам переміщатись по історії буфера. Він доволі простий і зрозумілий, тому не будемо акцентувати увагу на ньому. Встановлюємо плагін.

Plug 'mbbill/undotree'

Також додамо до наших конфігурацій рядок nnoremap <F5> :UndotreeToggle<cr>. Тепер, коли ми натиснемо клавішу F5, відкриється окреме вікно плагіна, де ми зможемо пересуватись по історії нашого буфера.

Останній плагін, який ми розглянемо, vim-airline/vim-airline. Він доволі функціональний і широкий, але його дії будуть знайомі усім, хто користувався сучасними редакторами коду або IDE. Плагін створює для нас статус-лінію, яка є дуже інформативною. Що стосується Git, вона показує поточну гілку, на якій ми зараз перебуваємо. Цей плагін дуже добре розширюється, тому найкраще буде ознайомитись з його документацією.

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

Тому маємо 2 варіанти: перший — використати vimdiff в якості mergetool, але це на любителя. Другий варіант — встановити будь-яку іншу, їх є безліч, тому вибирайте на свій смак. Я використовую P4Merge, тому можу порекомендувати її. Після того як ви встановили P4Merge, додайте її глобально до Git. Для користувачів MacOs i Ubuntu це можна зробити так:

git config --global mergetool.p4merge.path /path/to/p4merge
git config --global merge.tool p4merge
git config --global mergetool.prompt false

Тоді спробуйте створити конфлікт і спульте зміни. Якщо все вказано корректно, то відкриється вікно p4merge, де можна буде усунути конфлікти.

Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Codeguida 5.1K
Приєднався: 9 місяців тому
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід / Реєстрація