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
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.