vi (program)

Z Wikipedii, wolnej encyklopedii
vi
ilustracja
Autor Bill Joy
Pierwsze wydanie 1976
Język programowania C
System operacyjny Unix
Rodzaj edytor tekstu
Licencja BSD
Strona internetowa


vi – ekranowy, modalny edytor tekstu, używany w systemach Unix. Jego autorem jest Bill Joy. Nazwa pochodzi od angielskiego wyrazu visual.

Układ klawiatury ADM3A, dla której Bill Joy napisał program vi. Klawisz Esc jest łatwo dostępny obok Q.

Edytor vi w praktyce został wyparty przez klony, takie jak Vim, nvi 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 Enter, wykonywane są natychmiast.

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

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

Polecenia[edytuj | edytuj kod]

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 ← Backspace)
  • 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[edytuj | edytuj kod]

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 Esc, przechodzi się do trybu poleceń, w którym możliwe jest sterowanie kursorem i wyszukiwanie w historii.

Zobacz też[edytuj | edytuj kod]