Poradnik dla początkujących
Ostatnia zmiana: 2017-12-09 10:20
vi, mimo że jego obsługa może wydawać się "dziwna", jest bardzo uniwersalnym i potężnym edytorem tekstowym. Można go znaleźć w większości systemów *unix, dostępny jest także na inne platformy np. Windows. Ponieważ wchodzi w skład
busyboxa (podstawowego elementu składowego oprogramowania wielu urządzeń, np. routerów), jego nauka może przynieść wymierne korzyści. A na pewno warto nauczyć się jego podstawowej obsługi.
Ten poradnik opisuje podstawowy zakres poleceń vi umożliwiający w miarę normalne posługiwanie się tym edytorem. Nie wymienia on wszystkich opcji tego edytora, po szczegóły odsyłam do podręczników dostępnych na sieci.
Wstęp
vi ma dwa tryby pracy:
-
tryb poleceń, do wykonywania akcji na dokumencie: szukanie, kasowanie, zapisywanie itd
-
tryb wstawiania, gdzie pisane znaki po prostu trafiają do tekstu
Jest to ważne, ponieważ domyślnie po uruchomieniu edytor jest właśnie w trybie poleceń. Aby cokolwiek wpisać do pliku należy więc najpierw przełączyć go w tryb wstawiania. Prawie każdy klawisz ma przypisaną jakąś funkcję, więc nie należy bezmyślnie naciskać klawiszy, bo wywołanie różnych akcji można bardzo zepsuć zawartość pliku. Vi rozróżnia wielkość liter, jeżeli polecenie jest pisane z małej litery to trzeba wciskać małą literę. Ważne są wszystkie znaki polecenia (łącznie z dwukropkami czy ukośnikami), więc je także należy pisać. Powrót do trybu poleceń zawsze następuje po naciśnięciu
klawisza ESC.
Uruchomienie edytora
Jeżeli plik nie istnieje to po zapisie w edytorze zostanie on utworzony. Oczywiście można podać pełną ścieżkę do pliku.
Wyjście z edytora
Edytor musi być w trybie poleceń, więc przed wykonaniem tej operacji należy najlepiej nacisnąć klawisz ESC.
:wq<Enter> zapisane zmian i wyjście z edytora
:q<Enter> wyjście z edytora (jeżeli nie było zmian)
:q!<Enter> wyjście z edytora i pominięcie wszystkich zmian
Zapis ":q<Enter>" oznacza, że będąc w trybie poleceń (najlepiej wcześniej nacisnąć ESC dla pewności) należy po kolei nacisnąć klawisze ze znakami: dwukropek, q, wykrzyknik i na końcu nacisnąć klawisz Enter.
Nawigacja kursorami
Generalnie vi NIE ZOSTAŁ stworzony aby go obsługiwać klawiszami ze strzałkami. Powinny one jednak działać (w trybie poleceń!), tak samo jak
PageUp i
PageDown, jednakże przy pracy ze zdalnym terminalem lub na innych systemach mogą nie działać. Wtedy zawsze można posługiwać się klawiszami
j kursor do dołu
k kursor do góry
h kursor na lewo
l kursor na prawo
Wstawianie tekstu
Będąc w trybie poleceń ustawiamy kursor w miejscu w którym chcemy coś dodać i naciskamy klawisz
i wstawianie tekstu w miejscu kursora
Od tej pory można normalnie wprowadzić tekst do pliku. Kasowanie znaków przy pomocy klawisza
Del (kasowanie z prawej strony). Klawisz
Backspace (który kasuje do lewej) może nie być obsługiwany na wszystkich systemach.
Usuwanie znaków
W trybie poleceń:
x kasowanie jednego znaku pod kursorem
dw kasowanie jednego wyrazu na którym jest kursor
dd kasowanie całej bieżącej linii
Ndd kasowanie N linii od bieżącej, czyli np. 5dd - skasowanie 5 linii od kursora w dół
Kopiowanie i wstawianie
W trybie poleceń:
yy kopiowanie bieżącej linii do schowka
Nyy kopiowanie N linii (od kursora w dół) do schowka, czyli np. 5yy - skopiowanie 5 linii od kursora w dół
p wstawianie linii ze schowka za aktualną linią
Szukanie tekstu
W trybie poleceń
/tekst szukanie "tekst" od bieżącego miejsca w dół
?tekst szukanie "tekst" od bieżącego miejsca w górę
n szukane następnego wystąpienia w dół
N szukanie następnego wystąpienia w górę
Zamiana tekstu
W trybie poleceń
:s/STARE/NOWE zamiana jeden raz STARE na NOWE w bieżącej linii
:s/STARE/NOWE/g zamiana wszystkich wystąpień STARE na NOWE w bieżącej linii
:%s/STARE/NOWE/g zamiana wszystkich wystąpień STARE na NOWE w całym dokumencie
Inne
W trybie poleceń
:r nazwapliku<Enter> wczytanie pliku nazwapliku i wstawienie go za bieżącą linią
:w<Enter> zapisanie zmian bez wychodzenia z edytora
:w nazwapliku<Enter> zapisanie do pliku nazwapliku
Shift-j usunięcie znaku końca bieżącej linii - połączenie połączenie bieżącej i następnej linii ze sobą