vi (program)
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.
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.