Vim dla Git

Do edycji commitów lub rebase –interactive trzeba skorzystać z edytora tekstowego. Ja sobie wybrałem starego dobrego Vima (pod Windows instaluje gvim). Za co lubię Vima? Prawie wszystko da się zrobić za pomoca przycisków, które są pod ręką, nie trzeba nawet szukać strzałek.

Vim minimum dla Git

  • h,j,k,l – lewo,dół,góra, prawo
  • dw – skasuj aktualne słowo
  • i – tryb wstawiania
  • ESC – wyjście z trybu wstawiania
  • dd – skasuj całą linie
  • :wq – zapisz i wyjdź (chociaż prostsze jest ‚ZZ’
  • :q! – wyjdź bez zapisywania
  • u – usuń poprzednie (takie Ctrl-Z), działa w try nie-wstawiania

Makro do kompresji commitów

Makro ma zamienia commit message (r jak rewoke) dla commita od którego chcemy scalić commity, a wszystkie następnę scalić do tego pierwszego (f jak fixup).

Poniższe coś należy wklepać w edytorze

ESCAPEqdESCAPE:s/pick/r/gENTERj:.,$s/pick/f/gENTERq

Gdzie ESCAPE to Escape, a ENTER to Enter.

Uruchomienie makra – @d

Makro krok po kroku

  • qd – rozpocznij nagrywanie makra dla litery d
  • ESC – wyjdź z trybu wstawiania
  • :s/pick/r/gENTER – w aktaulnej linii zamień wystąpienia ‚pick’ na ‚r’
  • j – przejdź linijkę niżej
  • :.,$s/pick/f/gENTER – zamień wystąpienia ‚pick’ na ‚f’, linie zaczynając od aktualnej do końca pliku.
  • q – koniec nagrywania makra

Pewnie mógłbym wrzucić plik z komendami, który należy dodać do konfiguracji Vima, ale kodowanie znaków ESC jest trochę dziwne dla mnie i nie przekleja się.

Aby ustawić VIM jako edytor w git dodajemy do .gitconfig linijkę (gdy VIM jest naszym domyślnym edytorem dla plików tekstowych to nie musimy tego ustawiać).

[core]
    editor = vim

Backup files ~

Vim domyślnie tworzy kopie zapasowe plików które edytuje. Te pliki mogą zostawać po zrobieniu rebase –interactive w katalogu w którym mamy otwartego gita.
Aby się tego pozbyć edytujemy plik _vimrc u mnie w (C:\Program Files (x86)\Vim). Ja dodałem linijkę

set backupdir=~/vim_tmp

(katalog vim_tmp musimy utworzyć). Można też ustawić całkowity brak tych backupowych plików (ja jednak wolę backup bo używam vima nie tylko do gita).
W tym pytaniu na Stack Overflow jest napisane co jak i dlaczego z backupami.

Advertisements
Ten wpis został opublikowany w kategorii Programowanie i oznaczony tagami , , . Dodaj zakładkę do bezpośredniego odnośnika.