Edytor VIM – niezbędne skróty i polecenia przydatne do pracy z gitem

Opublikowane przez Tomasz Prasołek w dniu

exiting vim

Pierwsze spotkanie z system kontroli wersji Git może być ciężkie z powodu domyślnie instalowanego edytora Vim. Moje pierwsze spotkanie z nim było pewnie takie same jak większości programistów, którzy wcześniej w Vimie nie pracowali. Nie umiałem z niego wyjść 🙂

Pierwsze spotkanie

Wpisałem git commit, moim oczom ukazał się jakiś edytor, próbowałem wpisać wiadomość, jednak coś nie działało. Chciałem opuścić ten tryb, jednak ESCAPE również nie działał. Co zrobić? Oczywiście spytać wujka Googla. Po chwili znajduje wpis na StackOverflow opisujący niby tak prostą czynność jak wyjście z Vima 🙂 Co ciekawe ten wpis na StackOverflow: https://stackoverflow.com/questions/11828270/how-to-exit-the-vim-editor ma już 1 717 091 odwiedzin. Jest chyba najpopularniejszym wpisem na tym portalu.

Jednak postanowiłem (nie wiem czemu?) nauczyć się obsługi Vima. Po chwili poszukiwań informacji o nim w internecie, okazało się, że jest to bardzo potężne narzędzie. Ma on bardzo dużo opcji, ma kilka trybów i w każdym z nich poszczególne klawisze mogą odpowiadać za inne rzeczy. Stwierdziłem jednak, że w Vimie nie spędzam aż tak dużo czasu i naukę ograniczę tylko do niezbędnego minimum potrzebnego do pracy z gitem. Nie zajęło to dużo czasu, ponieważ jest to tylko kilka komend.

Podstawy VIM

Vim posiada 4 tryby:

  • Normalny (Normal)
  • Wprowadzania komend (Command)
  • Wprowadzania tekstu (Insert / Replace)
  • Wizualny (Visual) – służy do zaznaczania tekstu – z niego jako jedynego nie będziemy korzystać.

Robimy commit, wpisujemy git commit, naciskamy ENTER, pojawia się Vim i co dalej? Aby móc wpisywać tekst musimy nacisnąć klawisz I aby włączyć tryb wprowadzania tekstu. Na dole konsoli pojawi się informacja, że jesteśmy w tym trybie.

vim insert mode

Wpisujemy wiadomość i chcemy to zapisać. Wtedy naciskamy ESCAPE, aby wyjść z trybu wpisywania tekstu. Jesteśmy w trybie normalnym, napis -- INSERT -- znika.
Naciskamy dwukropek :, przechodzimy do trybu wprowadzania komend. Ten dwukropek wpisał się na samym dole okna. Wpisujemy wq (czyli całość wpisana przez Nas to :wq) i naciskamy ENTER i już 🙂 To polecenie oznacza zapisz i wyjdź.
vim :wq

Można powiedzieć, że to strasznie dużo roboty jak na wpisanie jednej wiadomości dla commita. Jednak po chwili praktyki te skróty i komendy wchodzą w nawyk i wpisanie wiadomości commita nie powoduje większych problemów.

Do wyjścia bez zapisu zmian służy polecenie: :cq!. Nie wiem czemu, ale w moim w przypadku nie działa polecenie :qa!, a jest ono domyślnie podawane jako wyjście z edytora bez zapisu. Może to wina mojej konfiguracji, nie wiem. W tej chwili korzystam z konsoli Git Bash na Windows 8.1.

Skróty i polecenia przydatne podczas interactive rebase

git interactive rebase

Wykonujemy je w trybie normalnym. Wielkość liter ma tutaj znaczenie. Podczas interactive rebase w większości przypadków chodzi zmianę słowa pick na inne, czyli skasowanie go i wpisanie innego słowa lub tylko pierwszej litery polecenia.

Aby skasować znak znajdujący się po prawej stronie kursora naciskamy x. Aby skasować całe słowo trzeba nacisnąć dW, wielkość znaków ma znaczenie. Następnie przechodzimy w tryb wprowadzania tekstu i wpisujemy odpowiednie polecenie.

Bardzo rzadko zdarza się, że chcemy zamienić commity miejscami. Trzeba po prostu przenieść linię z odpowiednim commitem w innej miejsce. Aby wyciąć linię znajdującą się z prawej strony kursora wciskamy dd. Wklejamy ją wciskając wielkie P (czyli Shift + P). Linia zostanie wklejona nad linią w której aktualnie znajduje się kursor. Prześledźmy to na przykładzie. Chcemy commit Test 3 przenieść na test:

vim cut and paste line

Inny edytor

Oczywiście można zmienić ten edytor na inny. Nawet na chwilę tak zrobiłem. Jako domyślny edytor w gicie ustawiłem Sublime Text 3 – jest to taki bardziej rozbudowany notatnik, w którym można otworzyć równocześnie wiele zakładek. W moim przypadku to jednak nie zadziałało, ponieważ prawie zawsze mam otwartego Sublime gdzieś w tle. Mam w nim wpisane jakieś notatki, jakiś pseudokod przydatny w zadaniu, które aktualnie robię. Jak robię commit lub interactive rebase, to git otwiera nową zakładkę w Sublime i czeka na zamknięcie tej zakładki. Jednak nie zawsze to działa tak jak powinno. Czasami zapisywałem zmianę w Sublime, zamykałem zakładkę, a konsola z gitem nie odpowiadała i wyświetlała do tego odpowiedni komunikat. Musiałem jakoś anulować wykonywanie polecenia i zrobić je jeszcze raz. W trakcie pisania tego posta chciałem pokazać o jaki komunikat chodzi. Zmieniłem edytor na Sublime, jednak jak na złość wszystko działa tak jak powinno 🙂

Podsumowanie

  • i – przejście w tryb wprowadzania tekstu
  • x – usunięcie znaku znajdującego się przed kursorem – tryb normalny
  • dW – usunięcie słowa znajdującego się przed kursorem – tryb normalny
  • dd – wycięcie linii – tryb normalny
  • P – wklejenie linii – tryb normalny
  • ESCAPE – wyjście z trybu wprowadzania tekstu
  • :wq – zapisanie zmian i wyjście z Vima
  • :cq! – wyjście z Vima bez zapisu zmian

Mam nadzieję, że ta krótka lekcja Vima Wam pomoże. A ty z jakiego edytora korzystasz?

Źródła:
https://www.youtube.com/watch?v=5-0vDX9FkeM

Kategorie: Ogólne

4 Komentarze

Krzysztof Rzeźniczak · 9 listopada 2018 o 9 h 00 min

W celu nauki edytora Vim polecam zagrać w grę VIM Adventures https://vim-adventures.com/

    Tomasz Prasołek · 9 listopada 2018 o 9 h 10 min

    Grałem w to. Przeszedłem tylko 1 poziom. Dalej chyba jest płatne, już nie pamiętam. Fajny sposób nauki Vima. Jakbym chciał się bardzo dobrze nauczyć vima to bym rozważył, aby grać dalej.

Radek · 3 kwietnia 2022 o 4 h 23 min

A ja chciałbym wiedzieć jak się vim wywala, bo nie mogę tego uczynić przez apt-get remove vim

dotnetomaniak.pl · 4 listopada 2018 o 20 h 59 min

Edytor VIM – niezbędne skróty i polecenia przydatne do pracy z gitem – Tomasz Prasołek

Dziękujemy za dodanie artykułu – Trackback z dotnetomaniak.pl

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *