Używanie git commit -a z vimem

111

Jestem nowy w git, więc zdecydowałem się nauczyć go korzystając z samouczków github. W trzecim rozdziale czytamy:

„W tym pierwszym przykładzie zmodyfikujemy plik README, aby dodać siebie jako autora projektu. Po prostu edytujemy plik. Teraz chcemy zatwierdzić tę zmianę, więc uruchamiamy git commit -apolecenie”.

Kiedy używam git commit -apolecenia, konsola otwiera vim i napisałem wiadomość, ale nie wiem, jak zamknąć ten edytor vim z konsoli. Jak zapisać wiadomość i zamknąć Vima?

Drelich
źródło
9
Ta graficzna ściągawka jest bardzo przydatna: viemu.com/vi-vim-cheat-sheet.gif . Używam go jako tapety na pulpit.
yasouser
@Jean - Na jakiej platformie jesteś i czy używasz konsoli lub GUI Vima? Nie otrzymujesz tekstu wprowadzającego (numer wersji, autor itp.) Na ekranie startowym?
Rook

Odpowiedzi:

193
  1. W vimie zapisujesz plik :wEnterw trybie normalnym (do normalnego trybu przechodzisz naciskając Esc).
  2. Zamykasz plik :qw trybie normalnym.

Możesz połączyć obie te czynności i zrobić, Esc:wqEnteraby zapisać zatwierdzenie i wyjść z vima.

Alternatywnie do powyższego możesz również nacisnąć ZZw trybie normalnym, co spowoduje zapisanie pliku i wyjście z vima. Jest to również łatwiejsze dla niektórych osób, ponieważ ten sam klawisz został naciśnięty dwukrotnie.

abcd
źródło
24
Możesz także wykonać polecenie git commit -a -m "your message here", które nie wywoła VIM-a.
David Basarab
8
@David: Oczywiście. Wiele z tych pytań dotyczy tego, że ludzie zapominają o -mopcji, a następnie są wrzucani do okna Vima i nie wiedzą, jak się wydostać.
abcd
3
@yoda: Możesz także przejść do trybu normalnego, używając ctrl + c. Ponadto, to Shift + (z + z), aby zapisać i wyjść (dwie duże litery Z).
Rocket Hazmat
1
@Rocket: Masz rację. Nie zdawałem sobie sprawy, że wszedłem zzamiast Z.
abcd
5
@EEva: Tak, ale wolałbym nie uczyć tego nowicjusza, jakby zapomniał o :, a potem zaczyna usuwać postacie, a to prowadzi do paniki 2.
abcd
58

Zamiast próbować nauczyć się vima, użyj innego, łatwiejszego edytora (na przykład nano). O ile lubię vima, nie sądzę, by użycie go w tym przypadku było rozwiązaniem. Opanowanie go wymaga poświęcenia i czasu.

git config core.editor "nano"
Uku Loskit
źródło
52
Zabawne; nano było domyślne na Ubuntu i nie mogłem wymyślić, jak zapisać, więc użyłem twojego polecenia, aby przełączyć się na vim.
hiperslug
11

Zobacz ten wątek, aby uzyskać wyjaśnienie: VIM dla Windows - co wpisać, aby zapisać plik i wyjść z niego?

Jak tam napisałem: aby nauczyć się Vimmingu, możesz skorzystać z jednej z szybkich kart referencyjnych:

Uwaga: Jak skonfigurować edytor do pracy z Git w systemie Windows? jeśli nie czujesz się komfortowo w używaniu Vima, ale chcesz użyć innego edytora dla swoich komunikatów o zmianach.

Jeśli wiadomość dotycząca zatwierdzenia nie jest zbyt długa, możesz również wpisać

git commit -a -m "your message here"
eckes
źródło
Możesz również skorzystać z tej odpowiedzi, aby wyjść z vim stackoverflow.com/questions/6098742/using-git-commit-a-with-vim/ ...
David Basarab
Chociaż to prawda, nie jest to wskazane .
Jorge Leitao
7

Lepsze pytanie brzmi: jak przerwać zatwierdzanie, kiedy wychodzę z vima?

Istnieją 2 sposoby:

  1. :cq lub :cquit
  2. Usuń wszystkie wiersze komunikatu o zatwierdzeniu, w tym komentarze, a następnie :wq

Tak czy inaczej, git otrzyma kod błędu, więc nie będzie kontynuował zatwierdzenia. Jest to szczególnie przydatne w przypadku git commit --amend.

cdunn2001
źródło
Btw, pamiętam to z żargonu Ham radio. Na początku Contact , po śmierci ojca, młoda Ellie (Jena Malone) mówi Wszechświatowi „CQ CQ CQ”. To znaczy „Wzywam wszystkie stacje”.
cdunn2001
1

Aby zakończyć uderzanie: q pozwoli ci zakończyć.

Jeśli chcesz wyjść bez zapisywania, możesz nacisnąć: q!

Wyszukiwarka Google w „ściągawce vim” może dostarczyć Ci odniesienia, które powinieneś wydrukować wraz z kolekcją szybkich skrótów.

http://www.fprintf.net/vimCheatSheet.html

chrisjlee
źródło