Długo przymierzałem się do napisania tego artykułu, który miałby za zadanie nauczyć i zachęcić do poznania Vima. Moja prokrastynacja wynikała z niezliczonych możliwości, jakie daje to narzędzie. Po kilku latach używania tego edytora nadal uczę się nowych rzeczy. Na początku przygody z Vimem, dokumentacja lub darmowa książka może być przytłaczająca. Warto natomiast poznać koncepcje, na jakich został oparty edytor, i w czasie potrzeby zgłębiać wiedzę, spoglądając w instrukcję (:help
). Dla osób które szybko się nudzą powstały gry do nauki jak vim adventures i vim genius. Bardzo dobrym źródłem wiedzy jest dostępna wraz z programem dokumentacja - vimtutor i strona z poradnikami wideo vim casts.
W tym artykule jak i następnym przybliżę filozofię działania Vima. Uważam, że to lepsza nauka niż próba uczenia się skrótów w losowej kolejności. Będę się posługiwać konwencjami z Vima, tłumacząc jego zawiłości. Znak c-
oznaczać będzie klawisz Control, dwukropek :
komendę w trybie Command-line. W nawiasach okrągłych ()
będą nazwy angielskie używane przez Vima, natomiast nawiasy {}
będą zawierać przykładowe parametry.
Tryby pracy
-
Normal mode - pozwala nam w łatwy sposób edytować tekst, ponieważ, każdy klawisz w tym trybie może być skrótem klawiszowym. Z tego miejsca możemy dostać się do wszystkich innych trybów. Jak chcemy napisać tekst, musimy wejść w tryb Insert przez:
-
i
,a
- stawia kursor przed podświetlonym znakiem,a
za znakiem -
I
,A
- stawia kursor na początek paragrafu,A
na koniec -
o
,O
- stawia kursor pod edytowaną linią,O
nad nią
-
-
Insert mode - zachowuje się jak zwykły edytor tekstowy, każdy naciśnięty znak pojawia się jako tekst. Nie znaczny to, że nie można w nim używać zwykłych skrótów klawiaturowych np. z Controlem. Chcąc przejść do Normal mode należy użyć Esc, Ctrl+c lub Ctrl+[. Używając Ctrl+p i Ctrl+n możemy aktywować autouzupełnianie i poruszać się w oknie dialogowym.
-
Visual mode - jest podobny do Normal mode, który pozwala nam na zaznaczanie tekstu, ma trzy warianty. Poniżej prezentuje skrót klawiszowy informujący jak przejść do niego z Normal mode:
-
v
- precyzyjne zaznaczanie tekstu znak po znaku -
V
- zaznacza całe linie -
c-v
- zaznaczanie blokowe
-
-
Command-line mode - pozwala nam wywoływać komendy wpisując jej nazwę po dwukropku np.
:start
(przejście do trybu Insert). Natomiast znaki/
i?
służą do wyszukiwania tekstu. Ciekawostką jest możliwość wywoływania komend powłoki systemowej. Poprzedzając poleceniem bashowym wykrzyknikiem np.!ls
, wyświetlimy listę plików w bieżącym katalogu. Używając uzupełnieniac-d
, możemy zobaczyć pasujące polecenia. -
Replace mode - w trybie Insert przejdziemy do niego wciskając przycisk
insert
, zachowanie tego trybu jest takie same, jakbyśmy zrobili to samo w LibreOffice. Do trybu podmieniania znaków możemy też przejść z Normal mode klawiszemR
.

To nie są wszystkie tryby pracy, lecz najważniejsze. Szczególnie w trybach Normal i Insert będziemy spędzać najwięcej czasu. Visual mode powinniśmy unikać. Lepiej nauczyć się używać efektywniej metod skakania po tekście w normalnym trybie. Więc jak wyjść z Vima? 😉 "To zależy" - jakby to odpowiedział dobry adwokat. W różnych trybach można zrobić te same operacje i to od nas zależy jaki sposób będzie wygodniejszy w danej sytuacji. Po drugie, istnieje dużo aliasów robiących to samo. Przykładowo w normalnym trybie wyjść z Vima można na kilka sposobów:
-
:wq
,:x
lubZZ
- zapisanie i wyjście -
!q
lubZQ
- wyjście bez zapisywania -
:qa
- zamknięcie wszystkich otwartych plików
Zakładki
Przy długim dokumencie możemy ustawiać zakładki, i szybko przeskakiwać pomiędzy nimi. Zakładkom można nadawać jednoliterowe tagi - od a do z (i A-Z). Odwołujemy się do nich przez klawisze '
lub ` (gravis). Pierwszy znak to linia, gdzie znajduje się zakładka, druga pozwoli nam przeskoczyć też do konkretnej kolumny w tekście. Możemy używać ich zamiennie w zależności od potrzeb.
-
mx
- tworzy zakładkę w tekście o nazwiex
-
'x
- przejście do zakładkix
-
['
,]'
- poprzednia, następna zakładka -
d’a
- usuwa zakładkę -
:marks
- pokazanie wszystkich znaczników -
:delmarks a-c
- usunięcie zakładek od a do c -
.
- skok do ostatnio edytowanej linii -
''
- przechodzenie do poprzedniego miejsca, z którego skoczyliśmy
Jeśli nie będziecie chcieli zapamiętywać jakie litery nadaliście swoim zakładkom, to proponuję zainstalować plugin vim-bookmarks.
Pliki i karty
Vim dostarcza nam kilka narzędzi do zarządzania plikami. Pierwsze, jakie chciałem opisać to podział ekranu. Jak chcemy podzielić okno horyzontalnie na dwie części to w Command-line mode musimy wpisać :split
lub tylko :sp
. Analogicznie do podziału wertykalnego użyjemy komend :vsplit
lub :vs
. Dzielić ekran możemy kilkukrotnie, ważne, jednak na jakim oknie aktualnie się znajdujemy. Polecenie :resize 90
ustawi nam szerokość okna na 90 kolumn, natomiast :vertical resize 80
na 80 wierszy.
-
c-w w
lubc-w c-w
- przełącza okna z jednego okna na drugie -
c-w j
,c-w k
,c-w h
,c-l
- odpowiednio przełącza na okno dolne, górne, lewe i prawe. Zamiasthjkl
można używać strzałek -
c-w +
,c-w -
- zwiększa, zmniejsza rozmiar okna w układzie horyzontalnym -
c-w >
,c-w <
- zwiększa, zmniejsza rozmiar okna w układzie wertykalnym -
c-w _
- maksymalizuje okno -
c-w =
- ustawia okna na takie same rozmiary split windows
Karty
Dodatkowo Vim wspiera karty, dzięki czemu możemy mieć otwarte kilka dokumentów.
-
:tabnew
- stworzenie pustej karty -
:tabclose
- zamknięcie aktualnej karty -
:tabnext
,gt
- przejście do następnej karty -
:tabnext
,gT
- przejście do poprzedniej karty -
:tabfirst
,:tablast
- przejście do pierwszej, ostatniej karty
Manager plików
Instalacja Vima zawiera plugin netrw, który jest przeglądarką plików. Dzięki niej możemy zarządzać plikami i katalogami.
-
:E
lub:Explore
- otwiera listę plików w katalogu, gdzie znajduje się otwarty plik -
:Se
lub:Sexplore
, (Sex
też działa 😉) - otwiera przeglądarkę w podziale horyzontalnym -
:Vex
lub:Vexplore
- otwiera przeglądarkę w podziale wertykalnym -
i
- przełącza między różnymi trybami wyświetlania listy plików (lista, szczegóły, drzewo) -
s
- sortuje pliki -
R
- zmienia nazwę pliku lub katalogu -
D
- usuwa plik lub katalog -
d
- tworzy nowy katalog -
%
- tworzy nowy plik w bieżącym katalogu (zapyta o nazwę) -
e
- otwiera plik w bieżącym oknie -
o
,v
- otwiera plik w poziomoo
lub pionowov
podzielonym oknie
Jest to pierwsza część dotycząca podstaw w używaniu najlepszego na świecie edytora tekstowego. Nie będę na razie opisywać takich funkcji jak zwijanie i porównywanie napisów, bufory, makra i podświetlanie kodu. Warto jednak wiedzieć, że takie funkcje są dostępne. Zapraszam jednak do przeczytania drugiej części. Opisuję w niej najważniejszą (i trudniejszą) funkcję, jaką mają edytory tekstowe. Tak zgadliście mówię o manipulowaniem tekstu. :D
