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



    vi lub
    vi nazwapliku

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ą