EDYTOR TEKSTOWY VIM WYBRANE POLECENIA Pracownia Informatyczna 5
DLACZEGO VIM? nieprzyjazny? standardowy edytor w systemach UNIX niezwykle użyteczny dość szybki (ważne przy plikach o dużych rozmiarach) często jedyny dostępny edytor na serwerze klon vi
ATAK KLONÓW Klony vi Linux oferuje wiele klonów (wersji) edytora vi. Każdy z nich oferuje funkcje dodatkowe ponad te dostarczane przez oryginalny edytor vi. Wiele dystrybucji systemu Linux zapewnia obsługę różnych wersji vim. Fedora domyślnie 2 wersje edytora vim - minimalna oraz w pełni wyposażona wersja edytora. Edytor vim jest zgodny z większością poleceń vi.
DLACZEGO VIM?
BUFOR ROBOCZY Podczas edycji vim przechowuje edytowany tekst w obszarze o nazwie bufor roboczy (ang. work buffer). Na początku sesji edycji vim odczytuje plik z dysku i umieszcza jego zawartość w buforze roboczym. W trakcie sesji edycji wszystkie zmiany są wprowadzane w kopii pliku, sam plik na dysku nie jest modyfikowany aż do chwili zapisu zawartości bufora roboczego z powrotem na dysku. Wada czy zaleta? Istnieje możliwość zapisania zawartości bufora roboczego do pliku o innej nazwie.
ZACZYNAMY! Uruchamianie edytora VIM $ vim plik.txt Wykonanie tego polecenia uruchomi edytor, utworzy nowy plik o nazwie plik.txt i otworzy go do edycji Znaki tyldy pusty plik
TRYBY PRACY tryb komend/normalny (ang. command mode/normal mode) daje możliwość wydawania poleceń, np. usuwanie fragmentu tekstu, nakazanie przejścia do innego trybu. tryb wprowadzania (ang. insert mode) przejście do trybu m.in. za pomocą litery i każdy ciąg znaków jest traktowany jako tekst domyślnie vim informuje w jakim trybie pracuje wiersz statusu na dole ekranu tryb ostatniego wiersza (ang. last line mode) przejście do trybu za pomocą znaku dwukropka (:) kursor jest wyświetlany tylko w ostatnim wierszu ekranu. Kiedy zakończysz wpisywanie polecenia i naciśniesz klawisz Enter, vim przenosi kursor do miejsca w tekście, gdzie znajdował się przed wpisaniem polecenia.
TRYB KOMEND (NORMALNY)
TRYB KOMEND PRZESUWANIE KURSOREM Kursor przesuwa się po naciśnięciu klawiszy strzałek kursora Jeżeli wolisz trzymać dłonie bliżej centralnej części klawiatury, jeżeli klawiatura Twojego terminala nie posiada klawiszy strzałek kursora lub jeżeli Twój emulator terminala ich nie obsługuje, to zamiast nich do przesuwania kursora w lewo, w dół, w górę lub w prawo możesz użyć klawiszy odpowiednio h, j, k i l. Mark G. Sobell: Linux. Programowanie w powłoce. Praktyczny przewodnik
TRYB KOMEND PRZENIESIENIE KURSORA O ZNAK Spacja, l (mała litera L) lub strzałka skierowana w prawo - powoduje przesunięcie kursora do przodu o jeden znak w kierunku prawej strony ekranu. wydanie polecenia 7spacja lub 7l powoduje przeniesienie kursora o siedem znaków w prawą stronę. Polecenie h oraz strzałka w lewo działają podobnie jak l oraz strzałki w prawo, ale w przeciwnym kierunku.
TRYB KOMEND PRZENOSZENIE KURSORA O SŁOWA Polecenie w (ang. word, słowo) powoduje przeniesienie kursora do przodu, do pierwszej litery następnego słowa (grupy znaków przestankowych są uznawane za słowa) Polecenie przechodzi do następnego wiersza, jeżeli znajduje się w nim kolejne słowo. Polecenie 15w przenosi kursor do pierwszego znaku piętnastego słowa liczonego od bieżącego położenia kursora. Polecenie W przenosi kursor do kolejnego słowa oddzielonego znakiem odstępu, uwzględniając także znaki przestankowe Polecenie e przenosi kursor na koniec następnego słowa, natomiast E na koniec następnego słowa ograniczonego znakami odstępu.
TRYB KOMEND PRZENOSZENIE KURSORA O SŁOWA Polecenie b (ang. back, z powrotem) przenosi kursor do tyłu, do pierwszej litery poprzedniego słowa. Z kolei polecenie B przenosi kursor do tyłu o jedno słowo ograniczone znakami odstępu.
TRYB KOMEND PRZENOSZENIE KURSORA O WIERSZE Klawisz Enter przenosi kursor na początek kolejnego wiersza Polecenie j oraz strzałka w dół przenoszą kursor do dołu o jeden znak tuż pod bieżący znak Polecenie k oraz strzałka w górę działają podobnie do polecenia j oraz strzałki w dół, ale w przeciwnym kierunku. Znak minus (-) działa podobnie jak Enter, ale w przeciwnym kierunku. Jakie skutki będzie miało wywołanie polecenia 4j?
TRYB KOMEND PRZENOSZENIE KURSORA O ZDANIA I AKAPITY Polecenie ) determinuje przeniesienie kursora na początek następnego zdania Polecenie } determinuje przeniesienie kursora na początek następnego akapitu Polecenie ( przenosi kursor wstecz na początek bieżącego zdania Polecenie { przenosi kursor wstecz na początek bieżącego akapitu.
TRYB KOMEND PRZENOSZENIE KURSORA NA EKRANIE / W PLIKU H (ang. home) powoduje umieszczenie kursora na początku pierwszego wiersza wyświetlanego na ekranie. M (ang. middle) umieszcza kursor w środkowym wierszu wyświetlanym na ekranie. L (ang. lower) przenosi kursor na początek ostatniego wiersza wyświetlanego na ekranie. Polecenie gg oznacza przejście do pierwszej linii w pliku Polecenie G oznacza przejście do ostatniej linii w pliku Jakie skutki będzie miało wywołanie polecenia 14G? W jakiej sytuacji to polecenie może być przydatne?
TRYB KOMEND COFANIE ZMIAN Polecenie u przywraca usunięty lub zmieniony tekst. Pojedyncze polecenie cofnięcia pozwala na cofnięcie ostatniej operacji. Aby cofnąć się do wcześniejszych zmian, konieczne będzie wydanie drugiego polecenia u. Polecenie U powoduje przywrócenie ostatnio zmodyfikowanego wiersza do postaci, w której się znajdował przed rozpoczęciem wprowadzania zmian (polecenie przywraca wiersz nawet po wprowadzeniu w nim wielu zmian).
TRYB KOMEND USUWANIE ZNAKÓW Polecenie x usuwa bieżący znak. Polecenie x można poprzedzić liczbą wskazującą współczynnik powtórzeń aby w ten sposób usunąć wiele znaków w wierszu, począwszy od bieżącego. Polecenie X usuwa znak znajdujący się po lewej stronie kursora.
TRYB KOMEND USUWANIE TEKSTU Polecenie d usuwa tekst z bufora roboczego. Ilość tekstu usuwanego przez polecenie d zależy od liczby jego powtórzeń oraz jednostki miary. Po usunięciu tekstu vim nadal pozostaje w trybie komend.
TRYB KOMEND Przykłady poleceń usuwania tekstu. Źródło: Mark G. Sobell; Linux. Programowanie w powłoce. Praktyczny przewodnik
TRYB KOMEND Przykłady poleceń usuwania tekstu. Źródło: Mark G. Sobell; Linux. Programowanie w powłoce. Praktyczny przewodnik
TRYB KOMEND ZASTĘPOWANIE TEKSTU Polecenie s (ang. substitute) usuwa bieżący znak i powoduje przejście edytora vim do trybu wprowadzania. Bieżący znak zostaje zastąpiony tekstem wpisywanym aż do naciśnięcia klawisza Esc. Polecenie s zastępuje znaki jedynie w bieżącym wierszu. Polecenie S zmienia bieżący wiersz Źródło: Mark G. Sobell; Linux. Programowanie w powłoce. Praktyczny przewodnik
TRYB KOMEND ZMIANA WIELKOŚCI ZNAKÓW Tylda (~) zmienia wielkość bieżącego znaku z małego na wielki i na odwrót. Tyldę można poprzedzić liczbą określającą ilość powtórzeń operacji. Polecenie 5~ powoduje zmianę wielkości pięciu kolejnych znaków, począwszy od bieżącego. Zmieniane są jedynie znaki w bieżącym wierszu (operacja nie przechodzi do następnego wiersza).
TRYB KOMEND WYSZUKIWANIE CIĄGU TEKSTOWEGO Polecenie /szukany ciąg tekstowy oraz Enter powoduje wyszukiwanie do przodu. Po wydaniu polecenia edytor vim wyświetli wiersz stanu. Jeżeli wyszukiwanie zakończy się powodzeniem, vim umieści kursor w pierwszym znaku znalezionego ciągu tekstowego. Polecenie?, edytor vim będzie szukał poprzedniego wystąpienia wskazanego ciągu tekstowego. Uwaga: Jeśli chcesz umieścić ukośnik w szukanym ciągu, musisz go poprzedzić ukośnikiem wsteczny (\).
TRYB KOMEND WYSZUKIWANIE CIĄGU TEKSTOWEGO Polecenia n oraz N powodują powtórzenie ostatniego wyszukiwania, ale nie wymagają ponownego wprowadzenia szukanego ciągu tekstowego. Polecenie n dokładnie powtarza poprzednie wyszukiwanie, natomiast N również przeprowadza poprzednie wyszukiwanie, ale w przeciwnym kierunku.
TRYB KOMEND ZNAKI SPECJALNE W SZUKANYM CIĄGU TEKSTOWYM ^ dopasowanie początku wiersza Przykład: polecenie /^TEkst spowoduje wyszukanie kolejnego wiersza rozpoczynającego się ciągiem tekstowym TEkst. $ dopasowanie końca wiersza Przykład: polecenie /!$ wyszukuje kolejny wiersz kończący się wykrzyknikiem. dopasowanie dowolnego znaku Przykład: polecenie /l..e powoduje dopasowanie line, followed, all memory oraz każdego innego ciągu tekstowego zawierającego literę l, po niej dwa dowolne znaki i literę e. Aby dopasować kropkę, konieczne jest poprzedzenie jej ukośnikiem (\.).
TRYB KOMEND ZNAKI SPECJALNE W SZUKANYM CIĄGU TEKSTOWYM * zero lub więcej wystąpień Przykład: /dis*m spowoduje dopasowanie ciągu tekstowego di, po którym znajduje się zero lub więcej znaków s, a następnie znak m (np. dim, dism i dissm). [] definicja klasy znaków Dopasowanie dowolnego pojedynczego znaku wymienionego w nawiasie. Przykład: polecenie /dis[ck] spowoduje dopasowanie kolejnego wystąpienia ciągu tekstowego disk lub disc.
TRYB KOMEND Źródło: Mark G. Sobell; Linux. Programowanie w powłoce. Praktyczny przewodnik
TRYB WPROWADZANIA
TRYB WPROWADZANIA Przejście do trybu wprowadzania: klawisz I (ang. insert before cursor; wstawianie tekstu przed kursorem) klawisz A (ang. append after cursor; dołączanie tekstu za kursorem). Wyjście z trybu wprowadzania klawisz Esc. Kiedy vim znajduje się w trybie wprowadzania, można wpisać tekst z klawiatury. Jeżeli wpisywany tekst nie pojawia się na ekranie, oznacza to, że vim nie został przełączony do trybu wprowadzania.
TRYB WPROWADZANIA WSTAWIANIE TEKSTU Polecenie wstawiania i (ang. insert, wstawianie) powoduje przejście edytora vim do pracy w trybie wprowadzania i umieszczenie nowego tekstu przed bieżącym znakiem. Polecenie I umieszcza tekst na początku bieżącego wiersza Polecenie dołączania a (ang. append, dołącz) umieszcza tekst za bieżącym znakiem. Polecenie A umieszcza tekst po ostatnim znaku w bieżącym wierszu.
TRYB WPROWADZANIA TWORZENIE NOWEGO WIERSZA DLA TEKSTU Polecenie otwierania o oraz O (ang. open, otwórz) powodują utworzenie pustego wiersza w istniejącym tekście, umieszczenie kursora na początku nowego (pustego) wiersza oraz przejście edytora vim do trybu wprowadzania. Polecenie O tworzy nowy wiersz nad bieżącym, natomiast polecenie o pod bieżącym wierszem.
TRYB WPROWADZANIA POPRAWIANIE TEKSTU PODCZAS WPROWADZANIA kombinacja klawiszy jak podczas pracy z wierszem poleceń powłoki: usuwanie znaków Ctrl+H usuwanie wiersza Ctrl+U usuwanie słowa Ctrl+W
TRYB OSTATNIEGO WIERSZA
TRYB OSTATNIEGO WIERSZA ZAPISYWANIE I ZAMYKANIE q wyjście z edycji pliku q! wyjście bez zapisania zmian w zapisanie pliku wq zapisywanie pliku i wyjście w plik zapisanie w nowym pliku plik PORUSZANIE SIĘ PO PLIKU NR przejście do linii o podanym numerze
TRYB OSTATNIEGO WIERSZA ZASTĄPIENIE JEDNEGO CIĄGU TEKSTOWEGO INNYM Połączenie poleceń wyszukiwania i zmiany. Składnia polecenia zastępowania jest następująca: :[g][adres]s/szukany-ciąg-tekstowy/nowy-ciąg-tekstowy[/opcja] Podobnie jak w przypadku poleceń rozpoczynających się dwukropkiem edytor vim wykonuje polecenie zastępowania w wierszu stanu
TRYB OSTATNIEGO WIERSZA :[g][adres]s/szukany-ciąg-tekstowy/nowy-ciąg-tekstowy[/opcja] Brak adresu = przeszukanie bieżącego wiersza
TRYB OSTATNIEGO WIERSZA :[g][adres]s/szukany-ciąg-tekstowy/nowy-ciąg-tekstowy[/opcja]
UWAGA Edytor vim rozpoznaje pisownię małych i wielkich liter w zależności od tego, czy dana litera jest wpisywana jako mała, czy jako wielka, vim będzie interpretował ją jako dwa różne polecenia.