Podstawy edytora Vim, skróty klawiszowe, strona 2

Poradnik dla początkujących i zaawansowanych, dotyczący korzystania z edytora Vim. Podstawowe skróty klawiszowe, skróty dla bardziej zaawansowanych oraz kilka innch przydatnych informacji.

Spis treści

  1. Tryby pracy Vima (strona 1)
  2. Skróty dla początkującego (strona 1)
  3. Bardziej zaawansowana edycja (strona 1)
  4. Praca na wielu plikach
  5. Porównywanie plików wraz z ich edycją – vimdiff
  6. Kilka dodatkowych informacji
  7. Gdzie szukać pomocy?

Praca na wielu plikach

Jak każdy dobry edytor, Vim także pozwala pracować na wielu plikach. Można zastosować jedną z dwóch metod: otwieranie kilku plików w jednym okienku – widać wtedy po kawałku każdego z edytowanych plików, lub otwieranie plików na osobnych zakładkach. Druga opcja jest o tyle wygodniejsza, że edytowane pliki nie przesłaniają się nawzajem, ale niekoniecznie widać co w której zakładce mamy otwarte. Można połączyć obie metody i w każdej z zakładek otwierać po kilka plików.

Kilka plików w jednym oknie

Sposób całkiem wygodny przy niewielkiej liczbie plików, na których pracujemy. Przy większej ilości ciężko się połapać który plik jest w którym miejscu, a przełączanie pomiędzy plikami też może powodować pewne trudności. Skróty i komendy potrzebne do pracy:

Skróty/komendy Opis Tryb
sp podział poziomy bieżącego okna na dwa, wraz z otwarciem bieżącego pliku w nowym oknie command-line
sp <NAZWA_PLIKU> podział poziomy bieżącego okna i otwarcie w nowym oknie pliku o podanej nazwie command-line
vsp <NAZWA_PLIKU> podział pionowy bieżącego okna i otwarcie w nowym oknie pliku o podanej nazwie command-line
Ctrl+w w przejście do kolejnego okna normal
Ctrl+w h Przejście do okna z lewej, w stosunku do bieżącego normal
Ctrl+w j Przejście do okna z u dołu, w stosunku do bieżącego normal
Ctrl+w k Przejście do okna z u góry, w stosunku do bieżącego normal
Ctrl+w l Przejście do okna z z prawej, w stosunku do bieżącego normal
Ctrl+w r Rotacja okien normal
Ctrl+w | Rozciągnięcie bieżącego okna do maksymalnej szerokości normal
Ctrl+w _ Rozciągnięcie bieżącego okna do maksymalnej wysokości normal
Ctrl+w + Zwiększenie rozmiaru bieżącego okna w pionie o 1 linię normal
Ctrl+w - Zmniejszenie rozmiaru bieżącego okna w pionie o 1 linię normal
Ctrl+w > Zwiększenie rozmiaru bieżącego okna w poziomie o 1 kolumnę normal
Ctrl+w < Zmniejszenie rozmiaru bieżącego okna w normal
Ctrl+w = Wyrównanie rozmiarów wszystkich okien

normal

nmap <C-W>a <C-W>_<C-W>\| Dodanie mapowania, po którym skrót Ctrl+w a będzie rozszerzał bieżące okno na max command-line

Aby zamknąć edycję jednego z plików, które mamy otwarte w oknach, należy skorzystać z komendy :q (lub innej, która kończy edycję pliku).

Zakładki w Vimie

Zakładki w Vimie działają podobnie jak zakładki w przeglądarkach internetowych. Każda z nich może zawierać jeden lub więcej (więcej w przypadku korzystania z okien – patrz podpunkt poprzedni) edytowanych plików. Polecenia przydatne do obsługi wielu zakładek znajdziesz w poniższej tabelce.

Skróty/komendy Opis Tryb
tabnew otwarcie nowej zakładki command-line
tabnew <NAZWA_PLIKU> otwarcie nowej zakładki z plikiem <NAZWA_PLIKU> command-line
tabprev przejście do poprzedniej zakładki command-line
tabnext przejście do następnej zakładki command-line
tabfirst przejście do pierwszej zakładki command-line
tablast przejście do ostatniej zakładki command-line
tabs wyświetlenie listy zakładek i listy otwartych w każdej z nich plików command-line
tabclose zamknięcie bieżącej zakładki command-line
tabmove <NR> przesunięcie bieżącej zakładki na pozycję <NR> (numerowanie od 0) command-line
Ctrl+w gf otwarcie w nowej zakładce pliku o nazwie takiej, jak pod kursorem w bieżącym pliku command-line

Porównywanie plików wraz z ich edycją – vimdiff

Ciekawą (czasem bardzo potrzebną) funkcją Vima jest możliwość porównywania plików tekstowych. Chcąc porównać dwa pliki, należy uruchomić (nie w Vimie tylko oczywiście w systemie) vimdiff plik1 plik2. Otwiera to Vima w specjalnym trybie szukania różnic (tzw. diff mode). Dostajemy 2 okienka (podzielone domyślnie pionowo), a różnice w plikach są odpowiednio podświetlone. Co więcej, części wspólne (jeśli jest ich wystarczająco dużo) są pozwijane (. Skróty przydatne w trybie porównywania (poza skrótami dotyczącymi pracy z podziałem na okna, co zostało omówione wcześniej) to:

Skróty/komendy Opis Tryb
do pobranie różnicy z drugiego okna do bieżącego (diff obtain) normal
dp „wepchanie” różnicy z bieżącego okna do drugiego (w bieżącym zostaje tak jak jest) (diff put) normal
[c przejście do poprzedniej różnicy; jeśli jesteśmy na pierwszej, nie przechodzi do ostatniej normal
]c przejście do następnej różnicy; jeśli jesteśmy na ostatniej, nie przechodzi do pierwszej normal
zR rozwinięcie wszystkich zwinięć (ang. folds – nie wiem jakie jest poprawne tłumaczenie) normal
zf stworzenie nowego zwinięcia dla zaznaczonego bloku tekstu visual
za jeśli jesteśmy na zwiniętym bloku – rozwinięcie, w przeciwnym wypadku zwinięcie normal
zd usunięcie zwinięcia w miejscu kursora (usuwa zwinięcie, nie tekst w nim zawarty) normal

Kilka dodatkowych informacji

Rzadziej wykorzystywane skróty

Poniżej znajdziesz kilka dodatkowych skrótów i komend, które możesz wykorzystać. Mapowanie klawiszy może być bardzo przydatne np. do korzystania z zakładek (np. map <F1> :tabprev, map <F2> :tabnext, map <F3> :tabs), jak również do wielu innych często wykorzystywanych poleceń (np. map <F8> :set number! – wciśnięcie klawisza F8 będzie włączało lub wyłączało pokazywanie numerów linijek w pliku).

Skróty/komendy Opis Tryb
map <KLAWISZ> <POLECENIE> mapowanie pod danym klawiszem dowolnego polecenia edytora Vim
Istnieje kilka odmian do mapowania różnych komend w różnych trybach:
imap, cmap, lmap, nmap, vmap, omap
command-line
gu{ruch}

zmiana liter na małe od kursora w kierunku klawisza ruchu; przykład poniżej

normal
gU{ruch}

zmiana liter na duże od kursora w kierunku klawisza ruchu; przykład poniżej

normal
g~{ruch}

zmiana wielkości liter (małe na duże, duże na małe) w kierunku klawisza ruchu

normal
guw

zmiana liter na małe do początku kolejnego słowa (czyli będąc na pierwszej literze bieżącego słowa – zmieniamy całe słowo na pisane małymi literami

normal
gUw

j.w., tylko zmiana małych liter na duże

normal
g~w

j.w., tylko zmiana małych na duże, a dużych na małe

normal
u

zmiana wszystkich dużych liter na małe w zaznaczonym bloku tekstu

visual
U

zmiana wszystkich małych liter na duże w zaznaczonym bloku tekstu

visual
~

zmiana wszystkich dużych liter na małe i małych na duże w zaznaczonym bloku tekstu

visual
ga wyświetlenie w pasku statusu informacji o znaku pod kursorem normal
Ctrl+v u XXXX wprowadzenie znaku o podanym szesnastkowo kodzie (XXXX to cztery „cyfry” z zakresu od 0 do f oznaczające szesnastkowo kod Unicode danego znaku) insert
Ctrl+v u 2 0 1 e wprowadzenie znaku o kodzie szesnastkowym 201e czyli insert
gd przejście do lokalnej deklaracji (deklaracji funkcji lub zmiennej) normal
gD przejście do globalnej deklaracji (deklaracji funkcji lub zmiennej) normal

Wczytywanie ze standardowego wejścia (STDIN)

Czasem przydaje się edytować coś, co dostajemy na wyjściu jakiegoś innego programu. Zawsze można oczywiście zapisać to do pliku i otworzyć plik do edycji. Ale jest też opcja wczytania zawartości do Vima ze standardowego wejścia. Aby zobaczyć, możesz uruchomić (w Linuksie) ls -alh / | vim -. Spowoduje to uruchomienie Vima, który w buforze edycji będzie miał zawartość zwróconą (domyślnie na standardowe wejście STDOUT) przez polecenie ls -alh /, czyli zawartość głównego katalogu w systemie plików. Może się to przydać również przy sprawdzaniu różnic w SVN, czyli np. svn diff |vim -.

Gdzie szukać pomocy?

Początkującym polecam przejście podstaw Vima przy pomocy programu vimtutor (należy uruchomić program vimtutor w systemie). Krok po kroku, z przykładami, zostaną omówione podstawy edycji plików.

Dla tych którzy już potrafią korzystać z Vima, a potrzebują informacji o jakiejś konkretnej komendzie lub skrócie, przyda się komenda edytora help (w skrócie he). Przykład: aby się dowiedzieć jak się zmienia wielkość liter na małe, należy wykonać w trybie command-line polecenie he lowercase.

Na koniec jeszcze wspomnę, że nazwa edytora Vim pochodzi od słów vi improved, czyli w wolnym tłumaczeniu: udoskonalony vi.