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.