Poradnik dla początkujących
Ostatnia zmiana: 2013-11-26 18:43

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 choć 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 pliku

Jest to ważne, ponieważ domyślnie po uruchomieniu edytor jest właśnie w trybie poleceń. Aby cokolwiek wpisać w pliku należy więc najpierw przełączyć go w tryb wstawiania. Ogólne prawie każdy klawisz ma przypisaną jakąś funkcję, więc nie należy bezmyślnie naciskać klawiszy, bo każdy oznacza określoną akcję i można bardzo zepsuć zawartość pliku. vi rozróżnia wielkość liter, więc jeżeli polecenie jest pisane z małej litery to trzeba wciskać małą literę. Ważne są wszystkie znaki polecenia (typu dwukropek czy slash), 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 może się zdarzyć że nie będą. 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). Natomiast niekoniecznie musi działać Backspace (kasuje do lewej).

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> oczytanie 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 linii - połączenie 2 linii ze sobą