vi – ekranowy, modalny edytor tekstu, używany w systemach Unix. Jego autorem jest Bill Joy. Nazwa pochodzi od angielskiego wyrazu . thumb|450px|Układ klawiatury ADM3A, dla której Bill Joy napisał program vi. Klawisz jest łatwo dostępny obok .

Edytor vi w praktyce został wyparty przez klony, takie jak Vim, lub elvis, które oferują bogatsze możliwości. Pozostaje jednym z narzędzi administratora ze względu na powszechność i jednolitość implementacji.

Użytkownik vi widzi na ekranie fragment treści pliku tekstowego, po którym może poruszać się (za pomocą kursorów), może dokonywać zmian tekstu i dopisywać nowy tekst. Edytor vi można uruchomić z argumentem będącym nazwą pliku. Jeżeli taki plik nie istnieje, to zostanie utworzony nowy.

Edytor vi w odróżnieniu od większości edytorów jest modalny – w każdej chwili znajduje się w jednym z dwu trybów pracy: trybie wstawiania lub trybie poleceń. Bezpośrednio po uruchomieniu vi znajduje się w trybie poleceń. Przejście do trybu wstawiania odbywać się może m.in. przez wydanie polecenia i (insert) lub a (append). Polecenia vi nie wymagają potwierdzenia klawiszem , wykonywane są natychmiast.

Przejście z trybu wstawiania do trybu poleceń odbywa się przez naciśnięcie klawisza .

W istocie vi jest edytorem ex działającym w trybie wizualnym, dlatego wszystkie polecenia edytora ex dostępne są także w vi. Polecenia ex wydawane w trybie poleceń poprzedzane są dwukropkiem : i wymagają potwierdzenia klawiszem .

Polecenia

Polecenia edytora vi składają się z kilku grup.

Polecenia edycyjne: a – wpisywanie tekstu za kursorem A – wpisywanie tekstu na końcu aktualnej linii i – wstawianie tekstu przed kursorem I – wstawianie tekstu na początku aktualnej linii o – utworzenie nowej linii poniżej aktualnej O – utworzenie nowej linii powyżej aktualnej R – zastępowanie tekstu s – zastąpienie znaku wskazanego przez kursor S – zastąpienie aktualnej linii c – zmiana zaznaczonego tekstu C – zmiana do końca linii

Polecenia zmieniające tekst: x – skasowanie znaku wskazywanego przez kursor X – skasowanie znaku przed kursorem d – skasowanie wskazanego tekstu dd – skasowanie aktualnej linii d<liczba>d – skasowanie kilku wierszy określonych liczbą, począwszy aktualnej linii D – skasowanie tekstu od aktualnej pozycji aż do końca linii y – skopiowanie wskazanego tekstu do bufora pomocniczego Y – skopiowanie linii tekstu do bufora pomocniczego p – wstawienie tekstu za kursorem P – wstawienie tekstu przed kursorem J – połączenie linii > – przesunięcie tekstu w prawo < – przesunięcie tekstu w lewo ! – przetworzenie tekstu przez polecenie systemowe i zastąpienie tego tekstu przez wyjście tego polecenia r – zastąpienie znaku wskazywanego przez kursor m – zaznaczenie linii tekstu u – anulowanie ostatniej zmiany (ponowne wciśnięcie powoduje ponowne zastosowanie ostatniej zmiany) . – powtórzenie polecenia

Polecenia sterujące kursorem: 0 – przeniesienie kursora na początek linii ^ – przeniesienie kursora na początek linii $ – przeniesienie kursora na koniec linii h – przeniesienie kursora w lewo j – przeniesienie kursora w dół k – przeniesienie kursora w górę l – przeniesienie kursora w prawo ^H – skasowanie znaku przed kursorem (klawisz ) f – przeniesienie do przodu do podanego znaku F – przeniesienie do tyłu do podanego znaku t – przeniesienie do przodu przed wskazany znak T – przeniesienie do tyłu przed wskazany znak ; – powtórzenie ostatniego polecenia f, F, t, T , – odwrócenie działania ostatniego polecenia f, F, t, T | – ustawienie kursora w podanej kolumnie % – odnalezienie pary dla wskazanego nawiasu B – ustawienie kursora na początku poprzedniego słowa (słowo = ciąg znaków bez znaków białych) W – ustawienie kursora na początku następnego słowa (słowo = ciąg znaków bez znaków białych) H – przeniesienie kursora na górę ekranu L – przeniesienie kursora na dół ekranu :<liczba> – przeniesienie kursora do wiersza wskazanego liczbą spacja – przeniesienie kursora w prawo

Polecenia sterujące ekranem: ^F – przesunięcie okna ekranowego o jeden ekran do przodu ^B – przesunięcie okna ekranowego o jeden ekran do tyłu G – przesunięcie okna ekranowego do podanej linii / – wyszukanie podanego wzorca w przód (po dojściu na koniec pliku kontynuowanie szukania od początku) ? – wyszukanie podanego wzorca w tył (po dojściu na początek pliku kontynuowanie szukania od końca) ^L – wyczyszczenie i przerysowanie ekranu ^R – przerysowanie ekranu

Wybrane polecenia ex: :q – wyjście z edytora pod warunkiem braku zmian od ostatniego zapisu :q! – wyjście z edytora bez zapisania pliku :w – zapisanie pliku :w nazwa – zapisanie pliku pod nową nazwą :w! – zapisanie pliku (z wymuszonym zapisaniem plików tylko do odczytu) :wq – wyjście z edytora z zapisaniem pliku :x – wyjście z edytora z zapisaniem pliku (bez zapisania przy braku zmian) :x! – wyjście z edytora z zapisaniem pliku (bez zapisania przy braku zmian, z wymuszonym zapisaniem plików tylko do odczytu) ZZ – wyjście z edytora z zapisaniem pliku :e nazwa – otworzenie pliku do edycji :help – wyświetlenie pomocy :xq – wyjście z edytora bez zapisania pliku (alternatywa dla :q!)

Przykładowe zestawy poleceń : %s /<ciąg1> /<ciąg2> - Wyszukuje ciąg znaków pasujący do wzorca ciąg1 i zamienia go ciągiem2 : %sg /<ciąg1> /<ciąg2> - Wyszukuje ciąg znaków pasujący do wzorca ciąg1 i zamienia go ciągiem2 w całym dokumencie :%s /^V^M / - Usuwa znaki ^M (^V jest znakiem nieinterpretowania znaku ^M)

vi i jego pochodne posiadają wystarczającą liczbę zwolenników do powstania tak zwanej wojny edytorowej między nimi a zwolennikami Emacsa.

Zalety vi Edytor vi pomimo pozornego anachronizmu nadal jest wykorzystywany przez administratorów i programistów. Jego największe zalety to:

z racji standaryzacji w ramach POSIX edytor jest dostępny na każdym systemie uniksowym bez instalacji, możliwość pracy w bardzo ubogim środowisku terminalowym – bez grafiki i przy ograniczonym zestawie znaków, możliwość pełnoekranowej edycji plików nawet przy bardzo wolnym łączu – przez sieć dla każdej edycji przesyłane jest tylko tyle znaków, ile zostało wpisane, a odświeżany jest tylko niewielki fragment tekstu, którego dotyczy edycja. w wielu powłokach po wydaniu polecenia set -o vi możliwe jest korzystanie z wiersza poleceń jak z edytora vi. Wciskając klawisz , przechodzi się do trybu poleceń, w którym możliwe jest sterowanie kursorem i wyszukiwanie w historii.

Zobacz też ed, ex

Kategoria:Edytory tekstu