vi

Vi

Opis obrazu NetBSD 6.1 vi C Hello World.png. Informacja
Twórca Bill Joy
Pierwsza wersja 1976
Ostatnia wersja 050325 (25 marca 2005)
Kaucja ex-vi.cvs.sourceforge.net/ex-vi/ex-vi
Napisane w VS
System operacyjny Typ uniksowy
Rodzaj Modalny edytor tekstu ( d )
Narzędzie UNIX ( d )
Licencja Licencja BSD
Stronie internetowej ex-vi.sourceforge.net

vi to pełnoekranowy edytor tekstu napisany przez Billa Joya w 1976 roku na wczesnej wersji dystrybucji BSD Unix .

Występuje automatycznie w większości obecnych systemów uniksowych , często jako klon oryginalnego oprogramowania vi .

Pochodzenie nazwy

Nazwa vi pochodzi z najkrótszym (tj jednoznaczne) skrót wizualnej polecenia edytora tekstu ex , bo to polecenie przełącza ex edytor z wiersz po wierszu trybie do pełnoekranowego trybu  : jest więc początkowo tylko interfejs graficzny ( w języku angielskim, Visual Interface ) edytora ex (samo w sobie rozszerzenie edytora online ed ). ex jest zawsze dostępny w vi po naciśnięciu : w trybie poleceń. W praktyce, przy wywołaniu vi lub ex , uruchamiany jest pojedynczy program: o jego zachowaniu decyduje nazwa, pod jaką został wywołany.

Nazwa vi odpowiadająca zarówno inicjałom, jak i nazwie pliku instalacyjnego, jest zwykle wymawiana przez wypowiedzenie dwóch liter w języku angielskim, to znaczy „vi-aille” , [vi: aɪ] , a nie jako pełnoprawne słowo [vi] . Analogia tego imienia do rzymskiej cyfry VI (sześć) jest przypadkowa.

Zasada działania

vi jest edytorem modalnym, to znaczy znaczenie przycisków i klawiszy zmienia się w zależności od tego, w jakim trybie się znajduje.

W trybie wstawiania wpisywany tekst jest wstawiany do dokumentu. Naciśnięcie klawisza Esc z trybu wstawiania umożliwia przejście do trybu poleceń , w którym klawisze odpowiadają ruchom kursora lub funkcjom edycyjnym. Na przykład, j przesuwa kursor o jedną linię w dół, x usuwa znak pod kursorem (pozycja „pod kursorem” może oznaczać prawą stronę kursora, jeśli ten ostatni jest umieszczony między znakami, nad znakiem podkreślenia lub pod prostokątem blok, w zależności od tego, jak terminal reprezentuje kursor).

Klawisze wpisywane w trybie poleceń nie są wstawiane w tekście, co jest częstą przyczyną zamieszania wśród użytkowników, którzy nie znają vi.

W trybie poleceń wiele operacji można wykonywać szeregowo za pomocą pojedynczych naciśnięć klawiszy, bez konieczności przytrzymywania wciśniętych klawiszy Alt lub Ctrl . Bardziej złożone operacje składają się z bardziej podstawowych operacji. Na przykład, d3w kasuje trzy słowa ( d dla usuwania i wag dla słowa ), c2fa zmiany ( zmian ) tekst, dopóki nie znajdzie ( find ) drugi ( 2 ) . Doświadczonych pracowników, pozwala pracować bardzo wydajnie, pozwala również użytkownika, aby cały czas trzymał ręce na klawiaturze.

Wczesne wersje vi nie wskazywały, w jakim trybie się znajdują. Często zdarzało się, że użytkownicy automatycznie wciskali klawisz Esc , aby upewnić się, że edytor jest w trybie poleceń (vi wydaje sygnał dźwiękowy, jeśli jest już w tym trybie). Bardziej nowoczesne wersje vi wskazują tryb na pasku stanu lub graficznie (na przykład kształt lub kolor kursora). Graficzne implementacje vi (np. GVim ) obsługują również użycie myszy i menu w celu uzyskania dostępu do funkcji edycji.

Ewolucja

vi stał się de facto standardowym edytorem dla Uniksa i był ulubionym edytorem wielu hakerów aż do pojawienia się Emacsa w 1984 roku . Należy zauważyć, że Emacs jest czymś więcej niż tylko edytorem tekstu, a mimo to często konkuruje z vi. Do tej pory (2011) vi lub jeden z jego klonów można znaleźć w prawie wszystkich instalacjach Uniksa. Pojedyncze UNIX Specyfikacja (bardziej konkretnie „standard IEEE 1003.2, część 2: Shell i publiczne”) zawiera VI. Dlatego każdy system zgodny z tą specyfikacją zawiera vi.

vi jest nadal szeroko używany przez użytkowników różnych wariantów Uniksa. Uruchamia się szybciej niż ciężkie wersje "edytora" Emacsa i zużywa mniej pamięci. W rezultacie nawet fani Emacsa używają go jako edytora wiadomości e-mail lub drobnych edycji.

Podczas tworzenia dyskietki ratunkowej (dyskietki ratunkowej , dla systemów, których dysk twardy nie działa już poprawnie), vi jest często wybierane jako edytor ze względu na jego zwartość (miejsce na dyskietkach jest bardzo ograniczone) i fakt, że większość ludzi wykonujący operacje ratownicze są w stanie z niej skorzystać.

vi i Emacs są odwiecznymi stronami wojującymi w wojnie redaktorów .

Klony i pochodne

Istnieje wiele edytorów tekstu opartych na vi. Klony są wolnymi lub niewolnymi implementacjami vi, to znaczy teoretycznie są zgodne ze standardowym zestawem poleceń POSIX vi. Jednak większość tych klonów obsługuje również dodatkowe funkcje. Instrumenty pochodne to programy, edytory tekstu lub nie, które zachowały zasadę działania vi (częściowo lub w całości) do własnego działania.

Pełniejszą listę można znaleźć w poniższych linkach zewnętrznych .

Pierwsze kroki z vi

Użytkownicy, którzy nie znają vi często napotykają trudności, po pierwsze z powodu skrótów używanych dla każdego z poleceń, a po drugie, ponieważ efekt tych skrótów zmienia się w zależności od trybu vi.

Skutecznym sposobem rozpoczęcia korzystania z vi jest zapoznanie się z samouczkiem od deski do deski, wyjaśniającym prostsze polecenia. Większość systemów, które zapewniają implementację vi, zawiera również samouczek dotyczący vi.

Dzięki zrozumieniu jego zasady działania z kilkoma wyjaśnieniami i prostymi przykładami, większość użytkowników może osiągnąć swoje cele dzięki vi. Jednak ogólnie uważa się, że płynność z vi wymaga więcej czasu niż w przypadku innych edytorów, z którymi jest często porównywana. Obrońcy vi twierdzą, że ta początkowa trudność jest z nawiązką równoważona przez skuteczność edytora, gdy już poczujesz się komfortowo.

Sterowanie i interfejs uważane za niejasne

Początkujący są często zdezorientowani poleceniami w vi. Często są one zredukowane do jednej litery i bardzo trudne do zapamiętania na pierwszy rzut oka, zwłaszcza że redaktor przedstawia różne perspektywy (czytanie, wstawianie, tryb otwarty itp.), Które nie są wyraźnie rozróżnione, a przejście między tymi trybami często pozostaje niezauważone .

Większość poleceń w vi ma na celu:

Zachowanie modalne

Rozpoczynając od vi, należy koniecznie zrozumieć, że vi ma kilka trybów działania. Dwa główne tryby to tryb poleceń (w którym uruchamia się vi) i tryb wstawiania . Zlecenia i ( i nsertion) lub mają ( a dding) tryb sterowania pozwalają na przełączenie do trybu wstawiania, natomiast klawisz Esc na wyjście z trybu wstawiania i powrót do trybu poleceń.

vi posiada również inny tryb pracy, który oferuje możliwość definiowania makropoleceń poprzez integrację prawdziwego języka programowania w celu zautomatyzowania zadań edycji tekstu.

Możliwe jest również wywołanie vi z argumentami, aby automatycznie wykonywał polecenia podczas otwierania pliku. Na przykład wiersz poleceń:

vi -c "1,%s/Deux/Trois/g|:wq" FICHIER

uruchamia vi, który otwiera plik „PLIK”, a następnie zastępuje wszystkie „Dwójki” w pliku „Trójkami”, a na koniec zapisuje plik i kończy pracę.

Funkcje vi

Makra i skróty

vi umożliwia definiowanie makropoleceń i skrótów.

Makra umożliwiają zastąpienie jednego naciśnięcia klawisza innym, co umożliwia definiowanie nowych poleceń. Na przykład,

:map v 10dd

tworzy polecenie trybu poleceń v , które usuwa bloki po 10 linii.

Skróty pozwalają uniknąć wpisywania raczej długiej sekwencji liter. Na przykład :

:ab GNU gnu is not unix

tworzy skrót GNU , który w trybie wstawiania jest zastępowany przez gnu nie jest unixem, gdy tylko zostanie wpisana wystarczająca liczba znaków, aby rozwiązać wszelkie niejednoznaczności (skróty są zwykle rozszerzane, gdy wstawia się spację, aby wskazać koniec słowa).

Opcje

Zachowanie vi i jego poleceń można dostosować za pomocą tego, co vi nazywa „opcjami”. Polecenie : set służy do ich przeglądania i modyfikowania. Niektóre opcje są logiczne, co oznacza, że ​​mogą przyjmować tylko dwie wartości: prawda lub fałsz , a dokładniej aktywowane i dezaktywowane . Na przykład :

:set number

który można skrócić

:set nu

lub

:se nu

wyświetla numer każdej linii.

:set nonumber :set nonu

są równoważne i pozwalają na wyłączenie tej opcji.

Wśród opcji boolowskich możemy znaleźć (lista niepełna):

Zamówione Efekt
: ustaw ignorecase ignoruj ​​wielkość liter podczas wyszukiwania ciągów
: ustaw tylko do odczytu zabrania modyfikacji otwartego pliku
: ustaw autoindent Automatycznie wcina kod podczas edycji
: ustaw linijkę wskazuje numer wiersza i kolumny, na których znajduje się kursor
: ustaw tryb showmode pokaż, w jakim trybie jest vi

Inne opcje przyjmują wartość. Na przykład :

:set tags=./tags

vi mówi, gdzie znaleźć znaczniki plików .

Zestaw wszystkich dostępnych opcji można wyświetlić za pomocą

:set all

Plik konfiguracyjny

Zestaw opcji vi (jak również makra i skróty) można ustawić dla każdej sesji edycji, dodając je do pliku ~ / .exrc . Ten plik jest automatycznie odczytywany podczas uruchamiania vi, a zawarte w nim polecenia są wykonywane tak, jakby zostały wpisane przez użytkownika ( znak : initial jest niepotrzebny). Przykład:

set nu map @ dd ab sig Mr. Robert Le NomBienLong

Przykłady poleceń

Przykłady prostych poleceń

Poniższa tabela zawiera podstawowe polecenia edytora vi, niezbędne do najprostszych zadań edycyjnych. Aby wprowadzić polecenia, musisz najpierw wyjść z trybu edytora, naciskając klawisz Esc .

Zamówione Efekt
# polecenie wykonaj # razy polecenie (na przykład 5dd usuwa 5 linii)
! zamówione uruchom polecenie powłoki (na przykład :! gcc -o hello hello.c )
>> i << dodaj i usuń odpowiednio tabulator na początku wiersza
/ toto i ? toto wyszukuje wystąpienia ciągu znaków foo odpowiednio za kursorem i przed kursorem ( n przechodzi do następnego wystąpienia, a N przechodzi do poprzedniego wystąpienia)
: # umieść kursor w linii nr
: $ umieść kursor w ostatnim wierszu
:. = zwraca numer bieżącej linii
0 przesuń kursor na początek wiersza
$ przenieś kursor na koniec linii
h i l przesuń kursor o jeden znak odpowiednio w lewo i w prawo
j i k przesuń kursor odpowiednio do następnej i poprzedniej linii
gg przesuń kursor na początek pliku
sol przenieś kursor na koniec pliku
H i L. przesuwaj kursor odpowiednio w górę iw dół ekranu
w przesuń kursor o jeden znak w prawo i wejdź w tryb wstawiania
W przenosi kursor na koniec bieżącej linii i przełącza do trybu wstawiania
vs kasuje określoną liczbę znaków w zależności od komendy i przełącza do trybu wstawiania (np. cl pozwala zmienić aktualny znak, cw koniec aktualnego słowa)
VS usuwa znaki od pozycji kursora do końca linii i przełącza do trybu wstawiania
dd usuń bieżącą linię i skopiuj ją do bufora
dw usuń słowo za kursorem i skopiuj je do bufora
dW usuń ciąg znaków za kursorem, aż do następnego pustego znaku
: e z nazwą pliku, otwórz ten plik do edycji
re usuń koniec linii z kursora
ja przełącza do trybu wstawiania w pozycji kursora
ja przenosi kursor na początek wiersza i przełącza do trybu wstawiania
o otwórz nową linię poniżej bieżącej linii
O otwórz nową linię powyżej bieżącej linii
p wstaw zawartość bufora po kursorze (lub po bieżącej linii, jeśli bufor zawiera linie)
P. wstaw zawartość bufora przed kursorem (lub przed bieżącą linią jeśli bufor zawiera linie)
: q wyjdź vi
: q! wyjdź z vi, nawet jeśli zmiany nie zostały zapisane
r zamień znak pod kursorem
u anuluje efekty poprzedniego polecenia
w umieszcza kursor na pierwszym znaku następnego słowa
: w zapisz bieżący plik
: wq lub : x lub ZZ zapisz bieżący plik i zakończ
x usuń znak pod kursorem
X usuwa znak po lewej stronie kursora
rr skopiuj bieżącą linię do bufora ( p wstawia skopiowaną linię po bieżącej linii)
yw skopiuj słowo za kursorem w buforze ( p wstawia skopiowane słowo po kursorze)

Przykłady zaawansowanych poleceń

Poniższe polecenia pokazują, co robi vi, gdy użytkownik szuka bardziej wyrafinowanych poleceń edycyjnych.

Zamówione Efekt
"ryy zapamiętaj bieżącą linię w rejestrze "r
„rp wstaw zawartość rejestru "r po bieżącej linii lub po kursorze
: # 1, # 2t # 3 skopiuj wiersze # 1 do # 2 po linii # 3
: # 1, # 2m # 3 przesuń wiersze # 1 do # 2 po linii # 3
: # 1, # 2s / toto / tutu / g zamień w liniach od 1 do 2 wszystkie wystąpienia ciągu znaków toto na tutu
:% s / toto / tutu / g zamień w każdym wierszu wszystkie wystąpienia ciągu znaków toto na tutu
:% s% do / do% tu / tu% g zamień w każdym wierszu wszystkie wystąpienia ciągu znaków na / do przez tu / tu (to pokazuje, że możemy użyć innego znaku separatora niż / - tutaj % )
: s /.*/ \ U & / zmień bieżący wiersz na wielkie litery
:% s / ^ foo // usuwa w każdym wierszu pierwsze wystąpienie ciągu znaków foo, jeśli znajduje się on na początku wiersza
: # 1, # 2g / toto / d usuwa między wierszami # 1 do # 2 wiersze zawierające ciąg znaków foo
: g! / toto / d usuń wiersze, które nie zawierają ciągu znaków foo
: g / ^^^^^^^^ d usuń puste linie
: # 1, # 2g / toto / s / tutu / titi / gc zamień po potwierdzeniach na wiersze od 1 do 2 zawierające ciąg znaków toto wszystkie wystąpienia ciągu znaków tutu przez titi
: r toto.txt wstaw zawartość pliku toto.txt
: r! ls -l wstaw wynik polecenia ls -l do bieżącego pliku
: # 1, # 2w toto.txt zapisz wiersze od 1 do 2 w pliku toto.txt
: e! otwórz ponownie bieżący plik (używany na przykład, jeśli plik został w międzyczasie zmodyfikowany)

Uwagi i odniesienia

  1. „  The Traditional Vi  ” (dostęp 19 lutego 2018 )
  2. ex-vi na SourceForge.net
  3. svicc na floodgap.com
  4. bvi na SourceForge.net

Bibliografia

Zobacz też

Powiązane artykuły