Diversity w polskim IT
Neil Kakkar
Neil KakkarSoftware Engineer @ Bloomberg LP

Jak przestać bać się Vima

Poznaj listę najpopularniejszych poleceń Vima i dowiedz się, jak ich używać.
30.04.20206 min
Jak przestać bać się Vima

Jeśli kiedykolwiek używałeś Vima, wiesz, jak trudno jest osiągnąć tę samą prędkość działania, co w „normalnym” edytorze GUI. Ale kiedy już to zrobisz, efekt jest wykładniczy - jesteś bardziej wydajny w pisaniu kodu. Oczywiście nie jest to główny powód tego artykułu.

Większość czasu idzie - lub powinno iść - na zaprojektowanie rozwiązania problemu, a nie jego kodowanie; więc optymalizacja „pisania kodu jak najszybciej” wydaje się ostatnią rzeczą, na której należy się skupić. To nie jest kluczowy punkt.

Ten post powstał z innego powodu: nieistnienia GUI na maszynach SSH. Co zamierzasz z tym zrobić? Na każdej maszynie, na której masz dostęp do terminala i chcesz edytować plik - Masz 2 opcje:

  1. Poddaj się, spróbuj zamknąć Vima
  2. Stań się Mistrzem Vima


Zwykłe zrobienie kopii vimtutor nie pomoże nikomu. Dlatego ja użyłem innego podejścia: agregowałem najlepsze fragmenty Vima, których używam w życiu codziennym jako programista, wraz z mnemonikami, aby łatwo to wszystko zapamiętać. Zawiera prawie wszystko, czego potrzebujesz do regularnego edytowania i pisania.

Przejdźmy do podstaw. Nie chodzi tu o komendy, ale o ideologię, która za nimi stoi!

Tryby

Vim ma 2 główne tryby:

  • Normalny (tryb poleceń)
  • Insert (tryb edycji)


Vim po uruchomieniu otwiera się w trybie normalnym. Aby w dowolnym momencie wrócić do trybu normalnego, naciśnij klawisz ESC . W trybie normalnym możesz wydawać polecenia (lista poleceń jest nieskończona!).

Istnieje wiele sposobów przejścia do trybu Insert. Najbardziej intuicyjne jest użycie polecenia i. Literka i jak Insert. W trybie normalnym naciśnij i , aby przejść do trybu Insert. Teraz wszystko, co wpiszesz, pojawi się w edytorze. Jedna z największych przeszkód, rozwiązana.

Model mentalny - aby zrozumieć ideę: Ponieważ nie ma GUI, nie istnieje nawet pojęcie o klikaniu myszką. Nie ma menu do wyboru opcji, nie ma prawego przycisku myszy. Dlatego potrzebujesz sposobu, aby to wszystko uzyskać na klawiaturze - Twoim jedynym narzędziem wejścia.

Posiadanie dwóch trybów nam to umożliwia! Możesz myśleć o trybie Normalnym (Command) jako pasku Menu i myszy na sterydach, podczas gdy tryb Insert jest podobny do normalnego trybu w edytorach GUI (gdzie to, co wpisujesz, pojawia się na ekranie).

Słowa

Dla Vima słowa oznaczają prawie to samo, co dla nas - zestaw znaków oddzielonych białymi przestrzeniami lub znakami specjalnymi. Klawiszem polecenia jest tu w.

Anatomia poleceń

Polecenia w Vimie są zgodne z ustalonym wzorcem. Wiedza o tym pomoże Ci umieścić każde polecenie w pewnym zbiorze poleceń, budując tym samym lepszy model mentalny.

Polecenia wyglądają tak:

[czynność] <liczba> [ruch]

Czynność jest tym, co chcesz zrobić . Liczba oznacza ile razy chcesz wykonać tę czynność, a ruch jest zasięgiem tej czynności.

Ruch oznacza zakres. Jakiś przykład pomógłby nam to lepiej zrozumieć. Powiedzmy, że chcemy usunąć następne 3 słowa, zaczynając od kursora. Tutaj czynnością jest usuwanie, liczba wynosi 3, a ruch to słowo. Czynnością w poleceniu usunięcia jest d.

Tak oto powstaje polecenie: d3w - usuń kolejne 3 słowa. Pomijanie liczby sprawi, że Vim domyślnie użyje liczby 1.

Ruchy mogą być używane bez czynności, która domyślnie jest nawigacją. W związku z tym wpisanie w w trybie poleceń spowoduje przesunięcie kursora do przodu o jedno słowo.

Jesteśmy teraz dobrze wyposażeni, aby zacząć uczyć się o samych poleceniach (i szeregu ruchów, które mają być z nimi używane)

Przydatne polecenia

Jak zamknąć Vima

Najpierw najważniejsze - nie chcemy utknąć w krainie Vima bez planu wyjścia. Zawsze miej strategię wyjścia.

:q - aby wyjść
:q! - aby wymusić wyjście
:wq - aby zapisać i wyjść

Polecenia, które są czynnościami

d - usuń
i - wstaw
p - wstaw / wklej
y - (yank) skopiuj (wyszarp do schowka)
x - wytnij
u - cofnij
di - usuń w (słowie)*, yi : skopiuj w (słowie)*
v - tryb wizualny / zaznacz
/ - wyszukiwanie
% - dopasowanie nawiasów, deweloperzy - cieszcie się!
: s - zamień! Czyli innymi słowy, znajdź-i-zastąp na sterydach

Ponieważ działania na całej linii są całkiem częste, twórcy Vima stworzyli dla nich nowy skrót - pomijając potrzebę dodawania ruchu. Powtórz czynność, aby zastosować ją do całej linii. Na przykład:

Aby usunąć bieżącą linię: dd
Aby skopiować bieżącą linię: yy

Fajne, prawda?

Polecenia Ruchu

Polecenia ruchu łączą się z czynnościami, jak już widzieliśmy, a dostępne ruchy zmieniają się wraz z czynnością. Jednak niektóre ruchy są dość jednolite.

w : - początek następnego słowa (widzieliśmy to już wcześniej!)
e : - zakończenie bieżącego słowa
b : - początek poprzedniego słowa

Klawisze strzałek / <h, j, k, l>: odpowiednie kierunki. h, j, k, l zastępują klawisze strzałek i są źródłem prędkości w Vimie: nie musisz przesuwać rąk na klawiaturze.

$ - koniec linii
0 - początek linii
G - koniec pliku
nG - skok do linii numer n
) - przeskocz zdanie do przodu
} - przeskocz akapit do przodu

To pomoże Ci zwizualizować całość:

           ge      b          w                             e
           <-     <-         --->                          --->
    This is-a line, with special/separated/words (and some more). ~
       <----- <-----         -------------------->         ----->
         gE      B                   W                       E


Uzbrojeni w wiedzę o czynnościach i ruchach, możemy tworzyć większość podstawowych poleceń w Vimie. Oto lista 8 typowych codziennych funkcji. Sam dojdź do tego, jakimi poleceniami je wywołamy!

  1. Usuń następne 3 linie (łącznie z bieżącą linią)
  2. Skopiuj bieżące słowo - kursor znajduje się na początku słowa
  3. Skopiuj bieżące słowo - ma znaki specjalne - kursor znajduje się w środku słowa
  4. Nawiguj w dół o 10 linii
  5. Usuń wszystko w nawiasach klamrowych
  6. Przejdź 2 akapity w górę
  7. Wklej poprzednio zaznaczony tekst 5 razy.
  8. Edytuj w miejscu, w którym znajduje się kursor: „Teraz mogę już Vimować!”


Jesteś gotów? Oto rozwiązania:

  1. d3j
  2. yw
  3. yiWs: skopiuj wewnątrz służy do skopiowania wewnątrz, a w jest wewnątrz tego, co ma być skopiowane (aktualne słowo). Jest to niezwykle przydatne, możesz używać różnych kombinacji z inside!
  4. 10j
  5. di}: tak jak #3.
  6. 2 {: to było nieco bardziej intuicyjne. { ma przejść w górę akapitu } to zejść w dół o akapit
  7. 5p: pamiętasz opcjonalne liczby z anatomii polecenia? Mogą być stosowane niemal wszędzie
  8. iTeraz mogę już Vimować! : i aby przejść do trybu wstawiania, wtedy możesz pracować jak w „normalnym” edytorze


Udało Ci się! Gratulacje, tyle Vima wystarczy, aby samodzielnie poznać resztę. Tutorial dobiegł końca. Powodzenia.

Jeśli ktoś zapyta Cię o Vima, możesz zrobić coś więcej, niż pokazanie poniższego mema. Wytłumacz im to lub pokieruj ich tutaj ;)

* Uwaga: To jest mój model Vima. Nie przedstawia dokładnie jak wszystko działa wewnętrznie. Jeśli spojrzysz na dokumentację (:help user-manual), zobaczysz, że d jest poleceniem, a ruch to iw, lub „inside-word”. Występuje odchylenie. Dlaczego? - ponieważ czuję, że taki sposób jest bardziej pomocny w wyjaśnianiu jak działa Vim.

Bonus

Oto kilka dodatkowych przydatnych poleceń:

Podział ekranu

:vsplit <nazwa pliku> - tworzy podział pionowy. Umożliwia kopiowanie i wklejanie z jednego ekranu na drugi
<ctrl-w> <ctrl-w> - aby przełączać się między podzielonymi ekranami

Alternatywnie możesz użyć klawiszy strzałek / hjkl o tak:
<ctrl-w> h, aby przejść do poprzedniego ekranu.

Możesz zamknąć okna jak zwykle (:q) lub :only - aby zamknąć wszystkie inne okna

Wiele kart

:tabnew <nazwa pliku> - otwiera nowy plik na nowej karcie w Vim
:tabn - aby przejść do następnej karty (lub :gt )
:tabp - aby przejść do poprzedniej karty (lub :gT )

Tu również możesz kopiować i wklejać z jednej karty do drugiej. Możesz przypisać tę kombinację do wybranego klawisza.

Próbowałem <Ctrl-Tab>, ale to już jest zarezerwowane. Szkoda. Zamiast tego mamy:

map <C-t><left> :tabp<cr>
map <C-t><right> :tabn<cr>


Co oznacza, że ​​<Ctrl-t>, po którym następuje left lub right, pozwala przełączać się między kartami .

W jaki sposób wpadłem na to mapowanie? Rzuć okiem na ten samouczek.


Oryginał tekstu w języku angielskim możesz przeczytać tutaj.

<p>Loading...</p>