Otwórz menu główne


vi – edytor modalny, popularny w systemach Unix. Jego autorem jest Bill Joy. Nazwa pochodzi od angielskiego wyrazu visual.

vi
Autor Bill Joy
Pierwsze wydanie 1976
Aktualna wersja stabilna 050325
(25 marca 2005) [±]
Język programowania C
System operacyjny Unix
Rodzaj edytor tekstu
Licencja BSD
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 cennych narzędzi administratora ze względu na powszechność i jednolitość implementacji.

Edytor vi jest edytorem ekranowym. Użytkownik widzi na ekranie fragment pliku, po którym może swobodnie 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.

PoleceniaEdytuj

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 viEdytuj

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

  • dostępność praktycznie w każdym systemie uniksowym bez konieczności doinstalowywania pakietów czy bibliotek,
  • 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