Rozdział 16. Edytory tekstu- vi i emacs, Kurs Linuxa, Linux


Część trzecia
Edycja i skład tekstu

W tej części:


Rozdział 16.
Edytory tekstu: vi i emacs


Peter MacKinnon

W tym rozdziale:

Co to jest edytor tekstu?

Edytor tekstu to chyba najważniejsze z narzędzi dostarczanych wraz z systemem Linux (i w zasadzie z każdym systemem operacyjnym). Używając go, można tworzyć i modyfikować pliki tekstowe, które w systemie obecne są między innymi jako:

To tylko niektóre z rozlicznych zastosowań plików tekstowych, z którymi zetkniesz się, pracując z Linuxem. Upraszczając nieco sprawę, edytor tekstu to program, który pozwala wstawiać, usuwać, przenosić tekst i przeszukiwać pliki tekstowe zawierające od kilku znaków do tysięcy wierszy.

Najpopularniejszymi edytorami tekstu używanymi w systemach linuxowych są programy vi oraz emacs. Są to edytory pełnoekranowe, tzn. wykorzystują one wszystkie wiersze i kolumny ekranu terminalu do wyświetlania zawartości pliku czy też informacji pomocniczych. Oba te edytory udostępniają ogromny zestaw poleceń edycyjnych. Podstawowy podzbiór tych poleceń można opanować w bardzo krótkim czasie, ale używanie poleceń umożliwiających wydobycie całej mocy drzemiącej w tych edytorach wymaga nieco praktyki. Mimo tego szybko stwierdzisz, że czas poświęcony na ich opanowanie nie był stracony.

Wybór edytora tekstu to w zasadzie kwestia gustu. Oba wspomniane programy są bardzo wydajne i potrafią obsłużyć plik o praktycznie dowolnych rozmiarach. Edytor emacs jest lepiej dostosowany do skomplikowanych operacji edytorskich i posiada pomoc dostępną w czasie pracy, ale w prostych przypadkach oba programy są równie dobre. Wybór jednego z nich należy do Ciebie.

Funkcje edycyjne

Choć w systemie Linux dostępnych jest kilka edytorów tekstu, a każdy z nich posiada inny interfejs, wszystkie potrafią wykonać w zasadzie te same zadania. Każdy edytor tekstu powinien udostępniać co najmniej funkcje omówione poniżej.

Wstawianie i usuwanie tekstu

Najbardziej podstawową funkcją edytora tekstu jest umożliwienie dopisywania i usuwania znaków wedle uznania użytkownika. Oznacza to również, że powinieneś mieć kontrolę nad ruchami kursora i jego położeniem w tekście.

Odczytywanie i zapisywanie plików

Ponieważ tekst, który edytujesz, zwykle przeznaczony jest do późniejszego wykorzystania, edytor tekstu potrafi zapisać go do pliku zewnętrznego. Kiedy zachodzi potrzeba wprowadzenia zmian w jakimś pliku, możesz wczytać jego zawartość do edytora. Wszystkie edytory potrafią obsłużyć standard ASCII, co oznacza, że plik utworzony za pomocą jednego edytora (na przykład vi) może być odczytany w innym (na przykład emacs).

Wyszukiwanie tekstu

Samodzielne przeglądanie tekstu wiersz po wierszu w poszukiwaniu konkretnego słowa jest co prawda świetnym ćwiczeniem koncentracji, ale nie każdy za tym przepada. Dlatego edytory tekstu posiadają zaawansowane możliwości wyszukiwania tekstu, zarówno na podstawie ściśle określonego zestawu znaków, jak i bardziej ogólnych wzorców. Wzorce te mogą na przykład zawierać symbole wieloznaczne, takie jak * i ?, które zastępują dowolny tekst.

Edytory udostępniają również funkcję wyszukaj-i-zamień, która pozwala za pomocą pojedynczego polecenia podstawić dowolny tekst w miejsce każdego wystąpienia ciągu znaków pasującego do wzorca.

Kopiowanie i przenoszenie tekstu

Ponieważ nigdy nie ma pewności, czy tekst, który został zapisany w pliku, jest wersją ostateczną, edytory umożliwiają kopiowanie, wycinanie i wstawianie bloków tekstu. Bloki te mogą mieć wielkość od kilku znaków do kilku stron. Różnica pomiędzy wycinaniem i kopiowaniem polega na tym, że po wycięciu tekst przeniesiony do schowka jest usuwany ze swojej pierwotnej pozycji, natomiast po skopiowaniu pozostaje nienaruszony.

Bufory edycyjne

Bufory edycyjne to obszary pamięci, w których przechowywany jest edytowany tekst. Kiedy tworzysz nowy plik tekstowy, jego zawartość przechowywana jest w buforze edycyjnym przynajmniej do czasu zapisania go do pliku zewnętrznego. Bufory są również używane, gdy zachodzi potrzeba tymczasowego przeniesienia bloku tekstu do pamięci (na przykład przy kopiowaniu czy przenoszeniu). Wiele edytorów potrafi równocześnie obsłużyć kilka buforów edycyjnych.

Edytory opisane poniżej udostępniają wiele poleceń, które nie zostały tu szczegółowo omówione. Z tego powodu gdy musisz przeprowadzić jakieś żmudne operacje edytorskie, powinieneś najpierw zajrzeć na strony man - może bowiem okazać się, że istnieją sposoby pozwalające łatwiej i szybciej wykonać zadanie. W miarę zdobywania doświadczenia poznasz wiele skrótów klawiaturowych i poleceń, które uproszczą codzienną pracę.

Edytor vi

Edytor vi jest zainstalowany praktycznie w każdym istniejącym systemie UNIX-owym. Z tego powodu jest on w systemach UNIX-owych (a więc i Linuxie) uważany za edytor domyślny. Edytor vi jest nieco trudniejszy do opanowania niż emacs, ponieważ posiada dwa tryby pracy, a polecenia edycyjne mają bardzo zwięzłą formę. Warto go jednak poznać, szczególnie jeśli edytor emacs nie jest zainstalowany w Twoim systemie.

Uruchamianie edytora vi

Edytor vi można uruchomić, wpisując polecenie

vi

Ekran tekstowy zostanie wyczyszczony, a pierwsza kolumna wypełni się tyldami (~). Edytujesz teraz pusty plik, nie posiadający jeszcze nawet nazwy. Wpisywany tekst jest przechowywany w buforze edycyjnym, aż do czasu zapisania go na dysk. Za pomocą tyldy na początku wiersza edytor vi informuje użytkownika, że wiersz nie zawiera żadnego tekstu.

Nazwa pliku lub lista nazw plików, które chcesz edytować, może zostać przekazana do edytora vi jako argumenty wywołania:

vi plik1 plik2 plik3 ...

Zwykle jednorazowo edytuje się tylko jeden plik. Jeśli podasz całą listę plików, które zamierzasz edytować, vi umożliwi ich edycję w takiej kolejności, w jakiej zostały one podane.

Można również uruchomić edytor vi w następujący sposób:

vi +n nazwapliku

n oznacza tu numer wiersza, w którym (po otwarciu pliku) zostanie umieszczony kursor. Możliwość taka jest szczególnie przydatna dla programistów usuwających błędy w dużych plikach źródłowych i potrzebujących szybko przejść do wiersza zawierającego błąd.

Wpiszmy polecenie

vi piosenka
i zobaczmy, co się stanie.

Tryby pracy edytora vi

W lewym dolnym rogu ekranu wyświetlony zostanie tekst:

"piosenka" 0 lines 0 characters

Informacje podawane w tym wierszu (jest to tzw. wiersz statusu) mówią, co właśnie zrobił lub robi edytor vi. W powyższym przykładzie otwarty został pusty bufor edycyjny, którego zawartość zostanie zapisana (o ile wydane zostanie odpowiednie polecenie) do pliku o nazwie piosenka.

W tej chwili aktywny jest tryb wydawania poleceń. Kwestia aktywnego trybu ma zasadnicze znaczenie podczas pracy z edytorem vi. W trybie wydawania poleceń wszystko, co wpisujesz, interpretowane jest jako polecenie. W trybie edycji wciśnięcie klawisza powoduje wstawienie do edytowanego tekstu odpowiedniego znaku (i oczywiście wyświetlenie go na ekranie).

W wierszu statusu wyświetlane są cztery spośród wielu dostępnych poleceń:

/ wyszukiwanie w przód,

? wyszukiwanie wstecz,

: polecenie interpretowane przez ex (ex to osobny edytor oparty na wierszu poleceń, używany wewnątrz vi),

! wywołanie polecenia powłoki.

Polecenia te muszą zostać zatwierdzone klawiszem Enter. Pozostałe polecenia, na przykład wstawiające tekst, nie wymagają zatwierdzania.

0x01 graphic

Aby łatwiej było zorientować się, czy pracujesz w trybie wydawania poleceń, czy edycji, użyj polecenia set showmode, opisanego dokładniej w podrozdziale „Preferencje” w dalszej części tego rozdziału.

Wstawianie tekstu

Wstawmy teraz jakiś tekst, pamiętając o tym, że pracujemy w trybie wydawania poleceń. Dwa podstawowe polecenia edytora vi służące do tego celu to (ang. insert) - wstawiające tekst na lewo od kursora, oraz (ang. append) - wstawiające tekst na prawo od kursora. Wersje tych poleceń wywoływane za pomocą wielkich liter działają podobnie, z tym że I wstawia tekst na początek, natomiast A na koniec wiersza, bez względu na pozycję kursora.

Po wydaniu jednego z tych poleceń można rozpocząć wprowadzanie tekstu. Zostanie on wyświetlony na ekranie.

Wciśnij klawisz a następnie wpisz:

Wlazl kotek<Enter>
na plotek<Enter>
i mruga<Enter>
Ladna to<Enter>
piosenka<Enter>
niedluga.<Enter>

Tryb wstawiania tekstu opuścić można wciskając klawisz Escape. Zauważ, że polecenie nie jest wyświetlane na ekranie, nie trzeba również zatwierdzać go klawiszem Enter.

Zamykanie edytora vi

Po wprowadzeniu tekstu można zakończyć pracę edytora i obejrzeć utworzony plik. Polecenia zapisujące plik oraz kończące pracę edytora różnią się nieco od polecenia czy innych poleceń edycyjnych, ponieważ należy poprzedzić je dwukropkiem (:).

Zapisanie edytowanego pliku na dysk i zakończenie pracy edytora sprowadza się do wydania jednego polecenia. Wciśnij klawisz : - w lewym dolnym rogu ekranu pojawi się dwukropek. vi rozpoznał, że zamierzasz wydać polecenie interpretowane przez edytor ex, wyświetla więc wpisywane litery na ekranie. Wpisz wq i wciśnij Enter. vi poinformuje że zapisał plik, poda liczbę zapisanych wierszy i zakończy działanie. Innym sposobem na zapisanie pliku i wyjście z programu jest użycie polecenia ZZ. Jedyna różnica polega na tym, że polecenie ZZ powoduje zapisanie pliku tylko wtedy, jeśli został on zmodyfikowany od czasu ostatniego zapisu.

Jeśli do otwartego pliku nie zostały wprowadzone żadne zmiany, można opuścić vi, wydając samo polecenie :q. Polecenie to nie zadziała, jeśli plik został zmodyfikowany. Jeśli jesteś pewny, że chcesz zakończyć pracę edytora bez zapisywania wprowadzonych zmian, użyj polecenia :q!, które wymusza zakończenie programu vi.

Upewnijmy się, czy edytowany plik został prawidłowo zapisany, oglądając jego zawartość za pomocą polecenia cat:

%cat piosenka
Wlazl kotek
na plotek
i mruga
Ladna to
piosenka
niedluga.

%

Plik zawiera tekst, który wpisałeś - żadnych niespodzianek.

Przesuwanie kursora

Do poruszania kursorem podczas pracy z edytorem vi służą cztery polecenia:

h przesuwa kursor jedną pozycję w lewo,

j przesuwa kursor jeden wiersz w dół,

k przesuwa kursor jeden wiersz do góry,

l przesuwa kursor jedną pozycję w prawo.

Polecenia te działają tylko w trybie wydawania poleceń. Większość implementacji vi obsługuje również klawisze kursora.

Możliwe jest też poruszanie się po edytowanym tekście większymi skokami. Poniżej podano kilka poleceń pozwalających przesunąć kursor o więcej niż jeden wiersz:

Control+u przesuwa tekst o pół ekranu do góry,

Control+d przesuwa tekst o pół ekranu w dół,

Control+f przesuwa tekst o cały ekran w dół,

Control+b przesuwa tekst o cały ekran do góry.

Dokładna ilość wierszy, o jaką przesuwany jest kursor, zależy od ustawień terminalu.

Innym sposobem poruszania się w tekście jest przejście do wiersza o znanym numerze. Jeśli chcesz edytować piąty wiersz, wpisz w trybie wydawania poleceń :5 albo 5G. Samo polecenie G przesuwa kursor na koniec pliku. Kursor nie poruszy się, jeśli zadany numer wiersza będzie poza dostępnym zakresem, na przykład po wydaniu polecenia :10 podczas edycji pliku, który składa się z ośmiu wierszy.

vi pozwala również przesuwać kursor słowo po słowie (słowo definiowane jest jako ciąg znaków otoczonych znakami białymi). Aby przenieść kursor na początek następnego słowa, wciśnij w, na początek poprzedniego - b.

Usuwanie tekstu

Edytor vi posiada polecenia służące do usuwania liter, wyrazów i całych wierszy. Usuwanie oznacza w tym przypadku, że znaki są „wycinane” z tekstu i przenoszone do bufora tekstowego bez nazwy, z którego można je jeszcze odzyskać.

Aby usunąć słowo znajdujące się na prawo do kursora, użyj polecenia dw. Możesz również usunąć kilka słów za jednym zamachem, na przykład polecenie 4dw usuwa cztery kolejne słowa w bieżącym wierszu.

Wiersze mogą być usuwane pojedynczo lub przez podanie zakresu. Aby usunąć bieżący wiersz, wydaj polecenie dd. Polecenie 4dd usunie cztery kolejne wiersze. Polecenie dG usunie tekst do końca pliku.

Możesz też usuwać znaki w obu kierunkach w ramach bieżącego wiersza: polecenie d^ usuwa wszystko do początku wiersza, d$ (lub D) - do końca wiersza.

Do usuwania pojedynczych znaków służą polecenia x (usuwa znak na pozycji kursora) oraz X (usuwa znak na lewo od kursora). Oba te polecenia pozwalają również usuwać kilka znaków, np. polecenie 4x usuwa znak na pozycji kursora i trzy następne.

Niezamierzone zmiany można odwołać poleceniem u (niestety, w większości wersji vi można odwołać tylko ostatnie polecenie).

Kopiowanie i przenoszenie tekstu

Skopiowanie fragmentu tekstu można rozbić na trzy etapy:

  1. skopiowanie tekstu do bufora,

  2. przeniesienie kursora w miejsce wstawiania tekstu,

  3. wstawienie tekstu z bufora we wskazane miejsce.

Tekst można skopiować zarówno do bufora nazwanego, jak i nienazwanego. Bufor nienazwany to tymczasowe miejsce w pamięci, w którym przechowywany jest tekst. Każdy następny zapis niszczy jego poprzednią zawartość. vi posiada też 26 buforów nazwanych (ich nazwy są kolejnymi literami alfabetu).

Polecenia yy oraz Y pozwalają skopiować wiersz tekstu do bufora. Mogą one być modyfikowane przez podanie liczby wierszy, które mają zostać skopiowane, np. polecenie 3yy wydane podczas edycji pliku piosenka (gdy kursor jest w pierwszym wierszu) kopiuje do tymczasowego bufora następujący tekst:

Wlazl kotek
na plotek
i mruga

Tekst ten można również skopiować do bufora nazwanego; polecenie

"a3yy

skopiuje go do bufora o nazwie a. Cudzysłów na początku polecenia powoduje, że dotychczasowa zawartość bufora zostanie zamazana. Gdyby zamiast litery a wpisana została litera A, tekst zostałby dołączony na koniec bufora.

Jeśli przeniesiesz kursor na koniec pliku (np. używając polecenia :$), możesz wkleić zawartość bufora poleceniem p (na prawo od kursora) lub P (na lewo od kursora). Wersja tego polecenia dotycząca bufora o nazwie a ma postać "ap.

Do bufora można kopiować również pojedyncze słowa, służy do tego polecenie yw (które również współpracuje z buforami nazwanymi i pozwala na kopiowanie zadanej liczby słów).

Wyszukiwanie i zastępowanie tekstu

Wyszukiwanie tekstu może być w edytorze vi prowadzone zarówno w kierunku końca jak i początku pliku. Zawsze rozpoczyna się ono od bieżącej pozycji kursora, a po napotkaniu końca (lub początku) pliku jest kontynuowane od jego początku (lub od końca, zależnie od kierunku przeszukiwania).

Dla zilustrowania tego zagadnienia posłużmy się stworzonym wcześniej plikiem. Aby poszukać w tekście słowa mruga, wpisz polecenie

/mruga

i wciśnij Enter. Zauważ, że treść polecenia jest wyświetlana w ostatnim wierszu ekranu. Po jej zatwierdzeniu kursor zostanie przeniesiony do miejsca, w którym po raz pierwszy występuje szukany tekst. Aby znaleźć miejsce kolejnego wystąpienia tego tekstu, wystarczy wydać polecenie /. Za każdym razem, gdy je wpiszesz, vi będzie próbował kontynuować ostatnio prowadzone szukanie w przód. Jeśli chcesz, aby wyszukiwanie było prowadzone w przeciwnym kierunku, powinieneś użyć polecenia ?, działającego na tej samej zasadzie, co polecenie /. Spróbuj na przykład wydać polecenie

?o

Spowoduje ono wyszukanie pierwszego wystąpienia litery o poprzedzającego aktualną pozycję kursora. Jak można się spodziewać, wyszukiwanie może zostać powtórzone przez wydanie polecenia ?. Polecenie n powoduje kontynuowanie procesu wyszukiwania w tym kierunku, w którym odbywało się ono ostatnio, natomiast N - w kierunku przeciwnym.

Jak wspomniano wcześniej, mechanizm wyszukiwania tekstów w edytorze vi jest dość potężny, głównie dzięki możliwości użycia symboli wieloznacznych. Symbole wieloznaczne w poleceniach wyszukiwania należy otaczać nawiasami kwadratowymi; aby na przykład znaleźć słowa zawierające ciąg ot, można wydać polecenie

/[*]ot[*]

Pierwszym „trafionym” słowem w naszym tekście będzie kotek. Jeśli wciśniesz n, vi znajdzie następny pasujący do tego wzorca wyraz - czyli plotek. Można również podać zakres znaków, które mają być uwzględniane, np.

/[a-z]o

Znalezione zostaną słowa kotek oraz to. Ponieważ zakres znaków definiowany jest jako zakres odpowiadających im kodów ASCII, możliwe jest również podanie zakresu cyfr, np. [0-9]. Można również określić bezpośrednio zbiór znaków, które mają być uwzględniane, np.

/[Tt]o

W takim przypadku znalezione zostałyby wyrazy to oraz To.

Wyszukiwanie bez wykorzystania symboli wieloznacznych pozwala znaleźć tylko tekst identyczny z zadanym (dotyczy to również wielkości liter), więc nie ma chyba wątpliwości, że użycie symboli wieloznacznych jest czasem nieodzowne.

Jednym z częstszych zastosowań mechanizmu wyszukiwania jest zastępowanie znalezionego tekstu innym. Przykładowo, aby zamienić w tekście wszystkie wystąpienia słowa plotek słowem krzeslo, należy wydać polecenie

:%s/plotek/krzeslo/g

Litera s oznacza, że jest to polecenie wyszukiwania, symbol % - że przeszukiwany ma być cały plik, plotek - to tekst, który ma być wyszukany, natomiast krzeslo to tekst, który ma go zastąpić. Litera g na końcu polecenia powoduje, że będzie ono wykonywane do chwili, gdy w tekście nie będzie już występowało słowo plotek. Bez niej vi zamieniłby tylko pierwsze odnalezione słowo. W poleceniu tym również można używać symboli wieloznacznych.

Preferencje

Zachowanie edytora vi może być dostosowane do wymagań użytkownika za pomocą opcji. Każda z nich jest inicjowana wartością domyślną, i można ją zmodyfikować używając wewnętrznego polecenia edytora vi o nazwie set. Musi być ono poprzedzone dwukropkiem i zatwierdzone klawiszem Enter, np. aby załączyć wyświetlanie numerów wierszy, należy wydać polecenie

:set number

Poniżej zebrano niektóre z dostępnych modyfikatorów polecenia set:

all wyświetla listę wszystkich dostępnych opcji wraz z ich aktualnymi ustawieniami,

errorbells załącza dźwiękowe informowanie o wystąpieniu błędu,

ignorecase powoduje, że w poleceniach wyszukiwania nie będzie uwzględniana wielkość liter,

number wyświetla z lewej strony numery wierszy (nie są one zapisywane w pliku),

showmode powoduje, że w prawym dolnym rogu wyświetlana jest informacja o aktualnym trybie pracy.

Opcje można wyłączać, podając przed ich nazwą przedrostek no, np. aby wyłączyć numerowanie wierszy, należy wydać polecenie

:set nonumber

Polecenie :set bez żadnego modyfikatora powoduje wyświetlenie tych opcji, których wartości zostały zmienione przez użytkownika.

Wprowadzone modyfikacje są jednak tracone po opuszczeniu edytora vi. Aby tego uniknąć, można zapisać je w pliku inicjalizacyjnym edytora vi o nazwie .exrc, znajdującym się w katalogu domowym. Plik ten jest przetwarzany (o ile istnieje) przed każdym uruchomieniem edytora vi. Oto przykładowa zawartość takiego pliku:

set number
set errorbells
set showmode

Zauważ, że w pliku tym dwukropki poprzedzające polecenie set nie są wymagane.

Podsumowanie najważniejszych poleceń

W tabeli 16.1 zebrano najważniejsze polecenia edytora vi wraz z krótkimi objaśnieniami. Bardziej wyczerpujące informacje dotyczące tych i innych poleceń znajdziesz na stronach man.

Tabela 16.1. Podstawowe polecenia edytora vi

Polecenie

Znaczenie

i

Przejście do trybu wstawiania tekstu

h

Przesunięcie kursora o jedną pozycję w lewo

j

Przesunięcie kursora o jeden wiersz w dół

k

Przesunięcie kursora o jeden wiersz w górę

Tabela 16.1. cd. Podstawowe polecenia edytora vi

Polecenie

Znaczenie

l

Przesunięcie kursora o jedną pozycję w prawo

Control+f

Przesunięcie tekstu o jeden ekran w dół

Control+b

Przesunięcie tekstu o jeden ekran w górę

ndd

Usunięcie n wierszy

nyy

Skopiowanie n następnych wierszy do nienazwanego bufora

p

Wklejenie zawartości bufora na prawo od kursora

u

Odwołanie ostatnio wprowadzonej zmiany

:wq

Zapisanie pliku i zakończenie działania edytora vi

:q!

Zakończenie działania edytora vi bez zapisywania zmian

:set all

Wyświetlenie wartości wszystkich opcji

/tekst

Wyszukanie pierwszego wystąpienia słowa tekst

Edytor emacs

Wiele osób wybiera edytor emacs ze względu na dostępną w czasie pracy pomoc oraz możliwość tworzenia własnych poleceń edycyjnych. Dzięki temu, że można skonfigurować go tak, by automatycznie formatował kod źródłowy w językach takich jak C, C++, Lisp i innych, edytor emacs jest szczególnie atrakcyjny dla programistów. Jest on również nieco łatwiejszy w obsłudze niż vi i udostępnia bogatszy zestaw poleceń.

Uruchamianie edytora emacs

Edytor emacs może zostać uruchomiony za pomocą polecenia

emacs

Nazwa pliku, który chcesz edytować, może zostać podana jako argument wywołania:

emacs <nazwa_pliku>

Jeśli jako argument programu emacs zostanie podana nazwa pliku, na ekranie wyświetlona zostanie jego zawartość. Dwa ostatnie wiersze ekranu terminalu zawierają informacje edytora: przedostatni zawiera nazwę edytowanego pliku i aktualne położenie kursora (TOP, BOT, 20% itp.), natomiast ostatni służy do wyświetlania komunikatów systemowych i pozwala na wprowadzanie niektórych poleceń.

Klawisze Control oraz Meta

Po uruchomieniu edytora emacs można zacząć wprowadzać tekst. Chciałbyś pewnie jednak umieć również poruszać kursorem. Zaraz omówimy ten drobiazg, ale najpierw wyjaśnijmy znaczenie dwóch klawiszy: Control (z tym raczej nie ma problemów) oraz Meta. Większość poleceń edytora emacs dostępna jest za pomocą kombinacji klawisza Control i innego znaku, ale niektóre wymagają wciśnięcia klawisza Meta. Jeśli chcesz wydać polecenie wymagające użycia klawisza Control, musisz przytrzymać go podczas wpisywania następnego znaku, natomiast nie trzeba przytrzymywać klawisza Meta. W przypadku komputerów PC klawiszem Meta jest zwykle Alt.

Przesuwanie kursora

Poniżej przedstawiamy polecenia przesuwające kursor w edytorze emacs:

Control+f przesuwa kursor jedną pozycję do przodu,

Control+b przesuwa kursor jedną pozycję do tyłu,

Control+p przesuwa kursor do poprzedniego wiersza,

Control+n przesuwa kursor do następnego wiersza,

Control+a przesuwa kursor na początek wiersza,

Control+e przesuwa kursor na koniec wiersza.

Większość implementacji edytora emacs dla wygody zamiast pierwszych czterech poleceń pozwala używać klawiszy kursora. Stwórzmy teraz nowy plik o nazwie plik2:

emacs plik2

Po wpisaniu jakiegoś tekstu, możesz wrócić na jego początek, wciskając klawisze Control+b. Zwróć uwagę, jak kursor przeskakuje do poprzedniego wiersza po osiągnięciu początku wiersza bieżącego. W przeciwnym kierunku można poruszać się wciskając klawisze Control+f.

Innym sposobem poruszania się w tekście jest przesunięcie go o cały ekran do przodu za pomocą polecenia Control+v. Poleceniem Meta+v można przewinąć tekst o jeden ekran wstecz.

Podobnie jak vi, emacs traktuje ciąg znaków otoczony z obu stron znakami białymi jako słowo. Przesunąć kursor na początek następnego słowa można za pomocą polecenia Meta+f, na początek poprzedniego - Meta+b.

Zamykanie edytora emacs

Aby zapisać zawartość bufora edycyjnego do pliku, należy wydać polecenie Control+x Control+s (zauważ, jak jest ono wyświetlane w ostatnim wierszu ekranu). Opuścić edytor możesz wydając polecenie Control+x Control+c. Jeśli nie zapisałeś wcześniej edytowanego pliku, emacs przed zakończeniem działania zapyta o potwierdzenie.

Usuwanie tekstu

Fragment tekstu można usunąć na kilka sposobów. Klawisz Backspace (lub Delete) służy do usuwania znaku na lewo od kursora. Polecenie Control+d usuwa znak znajdujący się na pozycji kursora, Control+k usuwa znaki od kursora do końca bieżącego wiersza. Można również usuwać pojedyncze słowa: polecenie Meta+d usuwa słowo, w którym aktualnie znajduje się kursor, Meta+Delete usuwa poprzednie słowo.

Jeśli zdarzy Ci się wydać jakieś polecenie edycyjne przez pomyłkę, możesz wrócić do poprzedniego stanu rzeczy kombinacją klawiszy Control+x u.

0x01 graphic

Jeżeli rozmyślisz się podczas wprowadzania polecenia, możesz się z niego wycofać kombinacją klawiszy Control+g.

Praca z wieloma plikami

Edytor emacs pozwala pracować z kilkoma plikami równocześnie, każdemu z nich przyznając osobny bufor edycyjny. Aby załadować plik do nowego bufora, wydaj polecenie Control+x Control+f. W ostatnim wierszu pojawi się tekst

Find file: ~/

Teraz należy podać nazwę pliku, który ma być edytowany. emacs potrafi po naciśnięciu klawisza Tab dokończyć za Ciebie rozpoczętą nazwę - na przykład jeśli wpiszesz .log i wciśniesz Tab, nazwa pliku zostanie uzupełniona do .login (o ile plik taki istnieje w katalogu domowym). Jeśli wynikiem dokańczania jest więcej niż jedna nazwa, możesz wybrać tę, o którą chodziło, naciskając ponownie klawisz Tab.

Po załadowaniu nowego pliku możesz przełączać się pomiędzy buforami edycyjnymi poleceniem Control+x b, po którym należy podać nazwę bufora (jest to nazwa pliku, który jest do niego załadowany; tu również obsługiwane jest dokańczanie nazwy po naciśnięciu klawisza Tab).

Po dokonaniu zmian możesz zdecydować, że nie chcesz ich zachować. Zawartość bufora można usunąć poleceniem Control+x k. emacs zapyta o nazwę bufora, którego zawartość chcesz usunąć; wciskając Enter, wybierasz bufor bieżący. Następnie zostaniesz zapytany o potwierdzenie - powinieneś odpowiedzieć yes (jeśli jesteś pewny swojej decyzji) i wcisnąć Enter.

0x01 graphic

Jeśli pracujesz z dwoma buforami, wystarczy, że po wydaniu polecenia Control+x b wciśniesz po prostu klawisz Enter - emacs przełączy się na edycję drugiego bufora.

Kopiowanie i przenoszenie tekstu

Jeśli chcesz skopiować lub przenieść fragment tekstu, musisz najpierw zaznaczyć jego początek i koniec. Aby to zrobić, przejdź na początek wybranego fragmentu i wciśnij klawisze Control+Space. Końcem bloku jest punkt, w którym znajduje się kursor - przesuń go więc w żądane miejsce. Po wydaniu polecenia Meta+w tekst zostanie skopiowany do schowka, z którego można wkleić go w inne miejsce poleceniem Control+y. Można również przenieść tekst do schowka (Control+w), co spowoduje usunięcie go z pierwotnej lokalizacji.

Wypróbuj te polecenia na utworzonym wcześniej pliku. Użyj polecenia Meta+<, które przeniesie kursor na początek bufora. Po wciśnięciu klawiszy Control+Space zostanie zaznaczony początek bloku tekstu. Teraz wydaj polecenie Control+n, które spowoduje przejście do następnego wiersza. Przenieś zaznaczony tekst do schowka poleceniem Control+w, przesuń kursor na koniec bufora poleceniem Meta+>, a następnie wstaw tekst przeniesiony poprzednio do schowka wydając polecenie Control+y.

Wyszukiwanie i zastępowanie tekstu

Wyszukiwanie tekstu w przód i w tył możliwe jest dzięki poleceniom Control+s i Control+r. Polecenia te również w pewnym sensie korzystają z mechanizmu dokańczania: edytor stara się odgadnąć, o co Ci chodzi już w trakcie ich wydawania. W tym przypadku, emacs po dopisaniu każdego znaku przenosi kursor do tekstu, który pasuje do podanego wzorca.

Zakres znajdowanych tekstów zawęża się w miarę wpisywania kolejnych liter. Po odnalezieniu fragmentu, o który chodziło, możesz zakończyć wyszukiwanie wciskając Enter lub którykolwiek z klawiszy sterujących kursorem.

Podobnie jak w edytorze vi, po napotkaniu końca pliku przeszukiwanie jest kontynuowane od jego początku (lub odwrotnie, zależnie od kierunku szukania). Jednak emacs informuje Cię o zaistniałej sytuacji, komunikując, że wyszukiwanie zakończyło się niepowodzeniem. Jeśli chcesz je kontynuować, powinieneś wcisnąć odpowiednio Control+s lub Control+r.

Dla zilustrowania zagadnienia wyszukiwania w edytorze emacs przejdźmy na koniec pliku piosenka i poszukajmy (wstecz) litery o - w tym celu należy wcisnąć Control+r, a następnie o. emacs przesunie kursor do litery o w wyrazie piosenka. Wpisz teraz t. Kursor przesunie się do litery t w wyrazie plotek. Możesz poprawiać wpisywany tekst klawiszami Delete lub Backspace. Zobacz, co się stanie, gdy usuniesz klawiszem Delete literę t i w jej miejsce wpiszesz s.

Polecenie Meta+x pozwala zastąpić tekst pasujący do wzorca dowolnym innym. Po jego wydaniu, emacs czeka na wprowadzenie tekstu, który należy odnaleźć. Następnie trzeba podać, na jaki tekst należy go zamienić. Jeśli emacs odnajdzie zadany tekst, zostaniesz zapytany o potwierdzenie zamiany.

Tryby edycji

Edytor emacs jest na tyle elastyczny, że potrafi dostosować się do różnych typów edytowanych dokumentów. Co więcej, każdy z buforów może być edytowany w innym trybie, dzięki czemu można łatwo dopasować sposób formatowania do typu dokumentu. Przykładowo, po wydaniu polecenia Control+x m uruchamiany jest tryb edycji poczty. W buforze pojawiają się pola To: oraz Subject:, jak również miejsce na samą wiadomość. emacs potrafi nawet wysłać ją za Ciebie (po wydaniu polecenia Control+c Control+c).

Edytor emacs posiada też tryby pracy przeznaczone do edycji plików zawierających kod źródłowy napisany w różnych językach programowania, np. w języku C. Jeśli załadujesz plik z rozszerzeniem .c (program w języku C) lub .h (plik nagłówkowy), bufor zostanie automatycznie ustawiony do pracy w trybie C. Ułatwia on w dużym stopniu przejrzyste formatowanie tekstu programu, obsługując poprawnie wcięcia w zależności od składni (np. zagnieżdżone pętle for).

Pomoc dostępna podczas pracy

Jedną z najprzyjemniejszych cech edytora emacs jest pomoc dostępna podczas pracy. Jeśli potrzebujesz skróconego przewodnika, wciśnij Control+h t. Jeżeli chcesz się dowiedzieć czegoś więcej na temat działania konkretnej kombinacji klawiszy, wciśnij Control+h, a następnie kombinację klawiszy, która Cię interesuje. Pomoc obejmuje bardzo wiele tematów; by zobaczyć je wszystkie, wywołaj tryb czytania dokumentacji (info) poleceniem Control+h i.

Podsumowanie najważniejszych poleceń

emacs, podobnie jak vi, posiada bardzo bogaty zestaw poleceń edycyjnych. W tym rozdziale omówiliśmy tylko niewielką ich część. W tabeli 16.2 zebrane zostały te z nich, które są niezbędne do pracy w podstawowym zakresie. Pełniejsze informacje znaleźć można na stronach man.

Tabela 16.2. Podstawowe polecenia edytora emacs

Polecenie

Znaczenie

Control+b

Przesuwa kursor o jedną pozycję w lewo

Control+d

Usuwa znak na pozycji kursora

Control+f

Przesuwa kursor o jedną pozycję w prawo

Control+g

Anuluje wydawane polecenie

Tabela 16.2. cd. Podstawowe polecenia edytora emacs

Polecenie

Znaczenie

Control+h

Uruchamia system pomocy

Control+n

Przesuwa kursor do następnego wiersza

Control+p

Przesuwa kursor do poprzedniego wiersza

Control+s

Wyszukuje tekst w przód

Control+v

Przewija tekst o jeden ekran do przodu

Meta+v

Przewija tekst o jeden ekran do tyłu

Control+x u

Cofa ostatnią zmianę

Control+x Control+c

Kończy pracę edytora emacs

Control+x Control+s

Zapisuje bufor do pliku

Podsumowanie

W systemie Linux dostępnych jest wiele edytorów tekstu. Najpopularniejszymi z nich są vi (jest to tak naprawdę inna nazwa edytora elvis) oraz emacs. Oba zapewniają podstawowe funkcje, takie jak wstawianie i usuwanie tekstu, odczytywanie i zapisywanie plików, przeszukiwanie, kopiowanie i przenoszenie tekstu. vi posiada dwa tryby pracy: tryb wydawania poleceń oraz tryb edycji. emacs jest bardzo elastycznym i potężnym edytorem tekstu, nadającym się świetnie do wielu zadań (takich jak pisanie programów, dokumentów, poczty czy modyfikowanie plików systemowych).

Program groff, służący do formatowania tekstu, opisany jest w rozdziale 17. „groff”.

TeX i LaTeX, bardzo elastyczne systemy edycji i składu tekstu, opisane są w rozdziale 19. „TeX i LaTeX”.

O tym, jak skonfigurować system X, przeczytać możesz w rozdziale 22. „Instalacja i konfiguracja XFree86”.

304 E:\Moje dokumenty\HELION\Linux Unleashed\Indeks\16.DOC

E:\Moje dokumenty\HELION\Linux Unleashed\Indeks\16.DOC 287

304 Część III Edycja i skład tekstu

Rozdzia³ 16. Edytory tekstu: vi i emacs 299



Wyszukiwarka

Podobne podstrony:
Rozdział 9. Prawa dostępu do plików i katalogów, Kurs Linuxa, Linux
Rozdział 11. bash, Kurs Linuxa, Linux
Rozdział 13. tcsh, Kurs Linuxa, Linux
Rozdział 12. pdksh, Kurs Linuxa, Linux
Rozdział 15. FTP oraz Telnet, Kurs Linuxa, Linux
Rozdział 4. LILO, Kurs Linuxa, Linux
Rozdział 1. Wstęp do Linuxa, Kurs Linuxa, Linux
Edytor tekstu vi Midnight Commander
Edytor tekstu vi
00 - Wstęp, Kurs Linuxa, Linux
Rozkład autobusów PKS, informatyka, klasa 2, edytor tekstu, ćwiczenia z podręcznika
17 rozdzial 16 fq3zy7m2bu2oan6t Nieznany (2)
Mao Tse Tung , Czerwona Książeczka, rozdziały 16
18. Rozdzial 16, Rozdział XVI
praca z edytorem tekstu, SCENARIUSZ LEKCJI
edytor tekstu podstawy, Konspekt lekcji z przedmiotu informatyki
rozdział 16
(1995) WIEDZA KTÓRA PROWADZI DO ŻYCIA WIECZNEGO (DOC), rozdział 16, Rozdział 1

więcej podobnych podstron