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:
- Poddaj się, spróbuj zamknąć Vima
- 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
- wstawp
- wstaw / wklejy
- (yank) skopiuj (wyszarp do schowka)x
- wytniju
- cofnijdi
- 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łowab
: - 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 linii0
- początek liniiG
- koniec plikunG
- 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!
- Usuń następne 3 linie (łącznie z bieżącą linią)
- Skopiuj bieżące słowo - kursor znajduje się na początku słowa
- Skopiuj bieżące słowo - ma znaki specjalne - kursor znajduje się w środku słowa
- Nawiguj w dół o 10 linii
- Usuń wszystko w nawiasach klamrowych
- Przejdź 2 akapity w górę
- Wklej poprzednio zaznaczony tekst 5 razy.
- Edytuj w miejscu, w którym znajduje się kursor: „Teraz mogę już Vimować!”
Jesteś gotów? Oto rozwiązania:
d3j
yw
yiWs
: skopiuj wewnątrz służy do skopiowania wewnątrz, aw
jest wewnątrz tego, co ma być skopiowane (aktualne słowo). Jest to niezwykle przydatne, możesz używać różnych kombinacji zinside
!10j
di}
: tak jak #3.2 {
: to było nieco bardziej intuicyjne.{
ma przejść w górę akapitu}
to zejść w dół o akapit5p
: pamiętasz opcjonalne liczby z anatomii polecenia? Mogą być stosowane niemal wszędziei
Teraz 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.