Edytor vi

Transkrypt

Edytor vi
Edytor vi
Edytor vi lub jego ulepszona wersja vim (vi Improved) są standardowo dostępne w systemach unixowych. Edytor
uruchamiamy najczęściej poleceniem
vi
lub
vi nazwa_pliku
Uruchomiony edytor może znajdować się w danym momencie w jednym z trzech stanów:
● stanie edycji tekstu (1)
● stanie poleceń klawiszowych (2)
● stanie edycji własnego wiersza poleceń (3).
Stan edycji własnego wiersza poleceń dotyczy własnego, wewnętrznego wiersza poleceń edytora (NIE powłoki itp).
W stanie edycji tekstu (1) wprowadzamy tekst z klawiatury.
○
[Enter] – przejście do nowego wiersza tekstu
○
[Esc] – przejście do stanu poleceń klawiszowych (2). Przejście jest jednokierunkowe (kolejne naciśnięcie
[Esc] nie spowoduje powtórnego przejścia do stanu (1)
● Bezpośrednio po uruchomieniu edytora znajduje się on w stanie poleceń klawiszowych (2). Naciskając różne
klawisze (bez wciskania [Enter]) wydajemy polecenia dotyczące ruchu kursora po ekranie, trybu edycji tekstu
itp. W zależności od polecenia edytor może przejść do stanu (1) lub do stanu (3). Przejście do stanu edycji
wiersza poleceń (3) następuje w szczególności po naciśnięciu dwukropka [:].
● Do stanu edycji wiersza poleceń (3) można przejść na różne sposoby. Wiersz poleceń znajduje się na dole
ekranu. Każde polecenie zaczyna się od dwukropka i składa z co najmniej jeszcze jednego znaku. Dwukropek
można równocześnie traktować jako przełącznik ze stanu (2) do (3). Wprowadzanie polecenia zakańczamy
przez wciśnięcie [Enter]; edytor wykonuje wówczas polecenie i przechodzi do stanu (2) lub kończy pracę.
Jednokrotne naciśnięcie [Esc] powoduje przejście do stanu (1).
○
kończenie pracy:
■ :q! - wyjście bez zapisu
■ :wq – wyjście z zapisem
Uproszczony graf stanów edytora:
●
Stan 1
(edycja)
[Esc]
WEJŚCIE
Stan 2
(polecenia klawiszowe))
vi [Enter]
[a] [o] [i]
[Esc]
[ : ] [/] [?]
[Esc]
[Enter]
Stan 3
(edycja wiersza poleceń)
WYJŚCIE
:q! [Enter
:wq [Enter]]
Rozróżnianie stanu w którym aktualnie znajduje się edytor:
● jeśli w wierszu poleceń jest dwukropek, to prawdopodobnie jesteśmy w stanie 3
● stan 1 i 2 możemy rozróżnić po naciśnięciu [Esc] – jeśli byliśmy w stanie 1, to przejdziemy do 2, a jeśli
byliśmy w 2, to pozostaniemy i zostanie wygenerowany sygnał dźwiękowy
Niektóre polecenia klawiszowe w stanie 2:
Manewrowanie kursorem:
W edytorze vim można wykorzystywać klawisze kursora, [PgUp], [PgDn], [Home], [End] i klawisze strzałek. Poza tym
mamy następujące skróty klawiszowe pochodzące z „czystego” vi:
[spacja]
Kursor o jeden znak w prawo
Kursor o jeden znak w lewo
[Backspace]
Kursor o jeden znak w prawo
[l]
Kursor o jeden znak w lewo
[h]
Kursor o jedną linię w dół
[j]
[k]
[-]
[+]
[Enter]
[w]
[b]
[0] (zero)
[$]
[Ctrl] – [f]
[Ctrl] – [b]
[Ctrl] – [d]
[Ctrl] – [u]
Liczba [G]
[H]
[F1]
Edycja tekstu:
[i]
[I]
[a]
[A]
[x]
[X]
[d] [d]
[d] [0]
[d] [$]
[d] [w]
[D]
[r]
[R]
[y] [y]
[y] [0]
[y] [$]
[y] [w]
[c] [c]
[c] [0]
[c] [$]
[c] [w]
[J]
[o]
[O]
[p]
[P]
[u]
['']
Kursor o jedną linię w górę
Kursor na początek wiersza i jedną linię w górę
Kursor na początek wiersza i jedną linię w dół
Kursor na początek wiersza i jedną linię w dół
Kursor do początku kolejnego słowa
Kursor w lewo do najbliższego początku słowa
Kursor na początek linii
Kursor na koniec linii
Kursor ekran w dół
Kursor ekran w górę
Kursor pół ekranu w dół
Kursor pół ekranu w górę
Kursor na początek wiersza o numerze liczba, w szczególności:
1[G] – kursor na początek pliku
[G] – kursor na koniec pliku
Kursor na początek bieżącego ekranu
Wywołanie opisu pomocy; powrót do edytora przez :q
Wstawianie przed kursorem (insert)
Wstawianie od początku wiersza
Wstawianie za kursorem (append)
Wstawianie na końcu wiersza
Usunięcie pojedynczego znaku na pozycji kursora
Usunięcie pojedynczego znaku przed kursorem
Usunięcie bieżącego wiersza
Usunięcie całej zawartości od początku wiersza do kursora
Usunięcie całej zawartości od pozycji kursora do końca wiersza
Usunięcie słowa wskazanego przez kursor
To samo co [d] [$]
Nadpisanie pojedynczego znaku na pozycji kursora (replace)
Nadpisywanie tekstu od pozycji kursora
Skopiowanie bieżącego wiersza do bufora
Skopiowanie do bufora tekstu od początku wiersza do pozycji kursora
Skopiowanie do bufora tekstu od pozycji kursora do końca wiersza
Skopiowanie do bufora słowa wskazywanego przez kursor
Zmiana całego wiersza; równoważne sekwencji [d] [d] [I]
Zmiana tekstu od początku wiersza do kursora; równoważne [d] [0] [i]
Zmiana tekstu od pozycji kursora do końca wiersza; równoważne [d] [$] [i]
Zastąpienie słowa wskazywanego przez kursor; równoważne [d] [w] [i]
Połączenie wiersza bieżącego i następnego (usunięcie znaku końca linii z
pierwszego wiersza)
Wstawienie nowego wiersza poniżej bieżącego i rozpoczęcie wstawiania tekstu
Wstawienie nowego wiersza powyżej bieżącego i rozpoczęcie wstawiania tekstu
Wstawienie zawartości bufora za kursorem lub do następnego wiersza (paste)
Wstawienie zawartości bufora przed kursorem lub do poprzedniego wiersza
Cofnięcie ostatniej zmiany (undo)
Odwołanie do konkretnego bufora
W edytorze vim działają ponadto niektóre „standardowe” klawisze, np. [Del].
Inne:
[n]
[N]
Powtórzenie ostatniego wyszukiwania w tę samą stronę (określoną pierwotnym
poleceniem wyszukiwania)
Powtórzenie ostatniego wyszukiwania w przeciwną stronę (względem pierwotnego
polecenia wyszukiwania)
Liczba podana przed poleceniem klawiszowym określa, ile razy ma być ono powtórzone (np. sekwencja [1] [2] [l]
spowoduje przesunięcie kursora o 12 znaków w prawo, a [3] [y] [y] – skopiowanie trzech kolejnych wierszy do bufora.
Polecenie [d] [...] umieszcza tekst w buforze; zawartość bufora możemy później wstawić przez [p] w innym miejscu
pliku (np. [3] [d] [d] [G] [p] spowoduje skasowanie trzech wierszy pliku, a następnie wstawienie ich na końcu pliku
(czyli przeniesienie)).
Wybrane polecenia stanu 3 (wpisywane do wiersza poleceń):
:r plik
/wzorzec
?wzorzec
:q
:w plik
:q!
:w
:wq
:x
:help
:reg
:set number
:s/wzorzec/zastępnik
:s/wzorzec/zastępnik/g
:1,$s/wzorzec/zastępnik/g
:nr_p,nr_k/wzorzec/zastępnik/g
Wstawienie zawartości pliku plik
Wyszukiwanie łańcucha wzorzec w dół
Wyszukiwanie łańcucha wzorzec w górę
Zakończenie pracy z edytorem, pod warunkiem uprzedniego zapisania zmian
Zapisanie edytowanego pliku w nowym pliku pod nazwą plik
Zakończenie pracy bez zapisywania modyfikacji
Zapisanie edytowanego pliku pod aktualną nazwą
Zapisanie edytowanego pliku pod aktualną nazwą i zakończenie pracy
To samo co :wq
Wywołanie pomocy, wyjście przez :q
Wypisanie zawartości buforów (tylko vim)
Wyświetlanie numerów wierszy
Znalezienie w bieżącym wierszu pierwszego łańcucha odpowiadającego
wzorcowi i zastąpienie go zastępnikiem
Znalezienie w bieżącym wierszu wszystkich łańcuchów odpowiadających
wzorcowi i zastąpienie ich zastępnikiem
Znalezienie w całym pliku wszystkich łańcuchów odpowiadających wzorcowi
i zastąpienie ich zastępnikiem
Znalezienie w wierszach między nr_p i nr_k wszystkich łańcuchów
odpowiadających wzorcowi i zastąpienie ich zastępnikiem
Bufory
Edytor vi ma tak naprawdę wiele buforów. Można je podzielić na dwie grupy: bufory numerowane, oznaczone liczbami
od 0 do 9, i bufory nazywane, oznaczone literami a..z, A..Z. Istnieją również bufory nazywane oznaczane innymi
znakami ASCII, np. %, #, : itp. Użytkownik może wskazać konkretny bufor (poleceniem [”] [nazwa_bufora]) ,co
powoduje, że następne wydane polecenie (np. [d] lub [y]) umieści we wskazanym buforze skopiowany lub usunięty
fragment tekstu, lub wstawi w żądane miejsce zawartość konkretnego bufora (np. [”] [a] [p] wstawi zawartość bufora o
oznaczonego literą a).
Przeznaczenie poszczególnych rodzajów buforów:
● Bufory oznaczane znakami ASCII innymi niż litery i cyfry są wykorzystywane przez program do
własnych celów, więc są dostępne tylko do odczytu (polecenie [p]);
● bufor 0 (zero) jest domyślnym buforem polecenia [y] (kopiuj do bufora)
● bufory 1 – 9 są przeznaczone do pracy z poleceniami usuwającymi tekst (np. [d]) – w momencie
kasowania usunięty tekst jest wstawiany do bufora 1, teksty skasowane wcześniej przesuwają się wówczas
z bufora 1 do bufora 2, z bufora 2 do bufora 3 itd; natomiast tekst pamiętany dotąd w buforze 9 jest
zapominany (zastępuje go dotychczasowa zawartość bufora 8).
● bufory nazywane od a do z i od A do Z są przeznaczone do dowolnego wykorzystania przez użytkownika.
Odczyt bufora nie powoduje jego opróżnienia.
Zawartość wszystkich (niepustych) buforów wyświetlamy poleceniem :reg.