Nauka vi metodą "ściągawki"
1.
Zaczynamy
Wprowadzenie
Niniejszy samouczek przedstawia sposób obsługi znakomitego edytora jakim jest
vi. Użytkownik może nauczyć się z niego w jaki sposób poruszać się po tekście,
wprowadzać zmiany, korzystać z trybu edycji, kopiować oraz wklejać, a także
korzystać z udoskonaleń wprowadzonych w vimie, jak na przykład tryb wizualny czy
korzystanie z wielu okien. Wykorzystana metoda ściągawki znacznie ułatwi
naukę, a nie wymaga dużej ilości czasu.
Użytkownicy, którzy do tej pory nie czuli się pewnie korzystając z vi, mogą
dzięki niniejszemu przewodnikowi udoskonalić swoje umiejętności używania
najpopularniejszego i najpotężniejszego programu do wizualnej edycji tekstu dla
Linuksa i UNIX-a.
O przewodniku
Duża ilość poleceń stanowi główny czynnik utrudniający naukę vi. Aby używać go
efektywnie, wystarczy jednakże zapamiętać tylko część. Niemniej jednak, może to
zająć nieco czasu, a jednym z celów tego tekstu jest jak największe jego
skrócenie. Zatem już na wstępie mamy pierwszy problem - w jaki sposób w
krótkim czasie zapamiętać sporo poleceń?
Postanowiliśmy to rozwiązać za pomocą ściągawki, którą zamierzamy stopniowo
kompletować. Umieścimy na niej wszystkie istotne polecenia vi. Po ukończeniu
samouczka, wciąż będzie można się nią podpierać. W miarę upływu czasu i
przyswajania kolejnych poleceń zacznie się stawać coraz mniej przydatna. Z
pewnością umożliwi ona naukę szybszą niż kiedykolwiek do tej pory!
Proces nauki
W przewodniku zamierzam wykorzystać kilka technik, które pomogą w nauce. Po
pierwsze, tak jak oczekują tego użytkownicy, opiszę jak działa poszczególne
polecenie. Następnie zachęcę do wypróbowania go w praktyce oraz dopisania do
ściągawki (na przyszłość). Dokładne wykonywanie przedstawionych kroków jest
bardzo istotne jeśli chcemy, aby nauka nie trwała długo. Wypróbowywanie i
zapisywanie poleceń pomaga szybciej je zapamiętać.
Przedstawiamy vima
Istnieje wiele wersji vi. My zamierzamy zaprezentować odmianę o nazwie
vim. Cieszy się ona sporą popularnością i zawiera wiele udoskonaleń w
stosunku do zwykłego vi (za każdym razem kiedy zademonstrujemy polecenie
dostępne jedynie w vimie, wyraźnie to zaznaczymy). Program można pobrać ze
strony www.vim.org. W dodatku do
udoskonalonej wersji konsolowej, vim posiada również wersję graficzną,
korzystającą z biblioteki GTK+, o nazwie gvim. Oto prezentujący ją zrzut
ekranu:
Ilustracja 1.1: Zrzut ekranu z VIM |
 |
Początkującym użytkownikom vi korzystanie z graficznego interfejsu użytkownika
może nieco ułatwić jego naukę.
2.
Pierwsze kroki
Wybieramy plik
Zanim nauczymy się edytować pliki, najpierw powinniśmy się nauczyć po nich
poruszać. vi posiada wiele służących do tego poleceń, a my zamierzamy przyjrzeć
się wielu z nim. Zaczniemy od wybrania niezbyt ważnego pliku tekstowego i
załadowania go w vi wpisując w konsoli:
Listing 2.1: Ładowanie pliku w vi |
$ vi plik.txt
|
Użytkownicy, którzy zainstalowali vima, powinni wpisać vim plik.txt. Z
kolei ci, którzy preferują gvima, mogą go uruchomić poleceniem gvim
plik.txt (oczywiście należy zmienić plik.txt na nazwę pliku
tekstowego do edycji).
Wewnątrz vi
Po uruchomieniu vi naszym oczom powinna się ukazać część załadowanego pliku
tekstowego. Gratulacje - oto vi! W przeciwieństwie do wielu edytorów, vi zaraz
po uruchomieniu aktywuje tryb poleceń (ang. insert mode). Oznacza to, że
na przykład po wciśnięciu klawisza l, zamiast dopisania go do tekstu,
kursor poruszy się o jeden znak w prawo. W trybie poleceń klawisze używane są
w celu wysyłania poleceń do vi, nie do wpisywania tekstu. Polecenia służące do
poruszania się należą do najistotniejszych; rzućmy na nie okiem.
3.
Poruszanie się
Poruszanie się w vi, część 1
W trybie poleceń do poruszania kursorem w lewo, dół, górę oraz w prawo można
skorzystać odpowiednio z klawiszy h, j, k oraz l. W
nowoczesnych wersjach vi służą do tego także klawisze kursora. h,
j, k i l są jednak wygodniejsze, ponieważ po
przyzwyczajeniu się do nich, aby poruszać się po dokumencie nie trzeba przesuwać
całej ręki. Spróbuj skorzystać z obu metod i przejść na początek linii klawiszem
h. vi nie pozwala automatycznie przejść do poprzedniej linii za pomocą
h kiedy kursor dotrze do pierwszego znaku. Analogicznie, nie pozwala
przejść do następnej za pomocą l kiedy kursor dojdzie do końca bieżącej.
Poruszanie się w vi, część 2
vi udostępnia specjalne skróty do szybkiego przemieszczania się. Do
przesunięcia kursora na początek linii służy klawisz 0 (zero), natomiast
do przesunięcia go na jej koniec, klawisz $. Wypróbuj je. Liczne poręczne
polecenia do przesuwania kursora powodują, że vi świetnie nadaje się na tzw.
"pager" (taki jak programy less oraz more). Wykorzystanie go w tym celu pomoże
ci szybciej zapamiętać polecenia.
Do poruszania się w przód i w tył o długość strony służą odpowiednio kombinacje
<CTR>F oraz <CTR>B. Nowoczesne odmiany vi (jak na
przykład vim) pozwalają również korzystać w tym celu z klawiszy PGUP oraz
PGDOWN.
Poruszanie się pomiędzy słowami, część 1
vi udostępnia także wygodne skróty do przeskakiwania kursorem pomiędzy słowami.
Aby przenieść się do pierwszego znaku kolejnego słowa, wciśnij w.
Aby się przenieść do ostatniego znaku kolejnego słowa, wciśnij e.
Aby się przenieść do pierwszego znaku poprzedniego słowa, wciśnij
b. Spróbuj.
Poruszanie się pomiędzy słowami, część 2
Ponieważ vi dzieli słowa w miejscach spacji oraz znaków interpunkcji,
słowa takie jak foo-bar-oni traktuje jako pięć osobnych.
foo-bar-oni jest zatem dzielone na foo, -, bar,
- oraz oni.
Nie zawsze jest to działanie pożądane. Na szczęście vi posiada także pojęcie
"dużego słowa", dzielonego jedynie w miejscach spacji oraz znaków nowej
linii. Wtedy foo-bar-oni jest traktowane jako jedno duże słowo.
Poruszanie się pomiędzy słowami, część 3
Aby przeskoczyć do następnego lub poprzedniego dużego słowa, wystarczy
skorzystać z pisanych wielką literą odpowiedników poleceń dla normalnych słów. A
zatem, żeby przenieść się do pierwszego znaku kolejnego dużego słowa, wciśnij
W. Z kolei żeby przenieść się do ostatniego znaku kolejnego dużego słowa,
wciśnij E. Żeby przenieść się do pierwszego znaku poprzedniego dużego
słowa, wciśnij B. Spróbuj i porównaj te polecenia z odpowiednimi dla
normalnych słów, żeby lepiej zrozumieć różnicę.
Przemieszczanie się na większe odległości
Zanim umieścimy wszystko na ściągawce, musimy omówić jeszcze kilka poleceń.
( oraz ) służą do przemieszczania się odpowiednio na początek
poprzedniego i kolejnego zdania. Za pomocą { oraz } możesz
natomiast przenieść się na początek bieżącego oraz następnego paragrafu.
Wypróbuj je.
4.
Zamykanie vi
Istnieje jeszcze jedna grupa poleceń, które musisz poznać. Wpisanie :q
zamknie vi. Jeśli nie działa, prawdopodobnie zmodyfikowałeś w jakiś sposób
otwarty plik. Aby wyjść z vi i pominąć wszystkie modyfikacje, wpisz :q!.
W vi, dowolne polecenie zaczynające się dwukropkiem, to tak zwane polecenie
trybu ex. ex to wbudowany w vi niewizualny edytor. Można z niego
korzystać podobnie jak z seda to edycji pojedynczych linii. Ponadto, jak właśnie
zobaczyliśmy, można z niego korzystać do zamykania vi. Wciśnięcie w trybie
poleceń klawisza Q przenosi do trybu ex. Jeśli to zrobisz, powinieneś
zobaczyć : jako znak zachęty. Naciśnięcie entera spowoduje przewinięcie ekranu o
jedną linię. Żeby powrócić do vi, wystarczy wpisać vi i wcisnąć enter.
5.
Ściągawka
Zaczynamy pisać ściągawkę
Przedstawiliśmy już wiele poleceń. Nadszedł czas zapisać je na naszej ściągawce.
Wszystko powinno się zmieścić na jednej kartce papieru rozmiaru US letter lub
A4. Oto zdjęcie mojej własnej ściągawki po zapisaniu tego co omówiliśmy do tej
pory. Postaraj się zrobić swoją podobnie, żeby na nic nie zabrakło miejsca.
Ilustracja 5.1: Ściągawka |
 |
Inne ważne polecenia
Kontynuujmy. W trybie poleceń, za pomocą G można przenieść kursor do
dowolnej linii. Na przykład, aby przeskoczyć do pierwszej, należy wpisać
1G (G pisane wielką literą).
Aby przeskoczyć do kolejnego wystąpienia określonego tekstu należy wpisać
/<regexp> i nacisnąć enter. Zastąp <regexp>
poszukiwanym wyrażeniem regularnym. Jeśli nie znasz się na wyrażeniach
regularnych to nic straconego - wpisanie /foo tak jak to oczekiwane
wyszuka następne wystąpienie słowa foo. Jedyną rzeczą, o której należy
pamiętać to znaki specjalne: ^, ., $ oraz \. Trzeba
je poprzedzić znakiem \. Na przykład, aby odnaleźć "foo.gif", wystarczy
wpisać /foo\.gif.
Aby powtórzyć wyszukiwanie w przód, wciśnij n lub //. Aby je
powtórzyć wstecz, wciśnij N. Jak zwykle wypróbuj te polecenia
samodzielnie.
6.
Zapisywanie oraz edycja
Zapisz i zapisz jako...
Omówiliśmy już jedno polecenie trybu ex: :q, służące do zamykania.
Aby przed wyjściem zapisać zmiany, wpisz :w. Jeśli chcesz je zapisać do
innego pliku, na przykład plik.txt, wpisz :w plik.txt. Aby jednym
poleceniem zapisać zmiany i wyjść, wpisz :x lub :wq.
W vimie (oraz innych zaawansowanych klonach vi, jak elvis), można edytować
jednocześnie wiele plików. Żeby otworzyć plik w nowym, podzielonym oknie, wpisz
:sp plik.txt. Aby przełączyć się pomiędzy oknami, wciśnij
<CTR>w<CTR>w (dwukrotnie control-w). Każde z poleceń:
:q, :q!, :w i :x odnosi się jedynie do aktywnego
okna.
Prosta edycja
Czas nauczyć się prostych poleceń służących do edycji. Mówimy o nich
proste, ponieważ pozostawiają vi w trybie poleceń. Bardziej złożone
automatycznie aktywują tryb edycji -- tryb umożliwiający bezpośrednie wpisywanie
tekstu z klawiatury. Im również poświęcimy nieco czasu.
Spróbuj wcisnąć kilka razy x. Polecenie to usuwa znak aktualnie
wskazywany kursorem. Następnie przesuń kursor do środka paragrafu i wciśnij
J (wielką literą). Połączysz w ten sposób następną linię z końcem
bieżącej. Zaznaczając jakiś znak kursorem i wciskając r oraz dowolny
inny znak, zamienisz go na podany. W końcu spróbuj polecenia dd - usunie
ono całą bieżącą linię.
Powtarzanie i usuwanie
Za pomocą klawisza . można powtórzyć dowolne polecenie edycji. Wpisanie
dd... spowoduje usunięcie czterech linii, a J...... połączenie
sześciu.
Aby usunąć tekst, można połączyć polecenie d z dowolnym poleceniem ruchu.
Na przykład dw usunie wszystko od kursora do początku kolejnego słowa;
d) usunie wszystko do końca kolejnego zdania, a d} wszystko do
końca paragrafu. Wypróbuj podobnych połączeń samemu, aby się do nich
przyzwyczaić.
Cofnij!
Skoro już eksperymentujemy z usuwaniem, to najwyższa pora żeby nauczyć się cofać
zmiany. Oryginalna wersja vi pozwalała na cofnięcie jedynie ostatniego
polecenia, za pomocą u. Na szczęście nowocześniejsze edycje, jak vim
pozwalają cofać większą ilość zmian. Spróbuj na przemian poleceń d oraz
u.
Aktualizacja ściągawki
Czas zaktualizować naszą ściągawkę! Po dodaniu wszystkich poleceń, które do tej
pory omówiliśmy, powinna wyglądać jak na rysunku:
Ilustracja 6.1: Ściągawka z dopisanymi poleceniami edycji |
 |
7.
Tryb edycji
Jak dotąd omówiliśmy poruszanie się po vi, obsługę plików oraz podstawowe
polecenia edycji. Wciąż jednak nie pokazaliśmy w jaki sposób po prostu
wprowadzać tekst! Było to zamierzone, ponieważ tryb edycji vi jest nieco
skomplikowany. Kiedy się go nauczysz, złożoność okaże się jednakże jego zaletą.
W trybie edycji można bezpośrednio wprowadzać tekst, podobnie jak w
innych wizualnych edytorach. Aktywuje się go poleceniami i oraz a.
Jeśli użyjesz pierwszego, tekst zostanie wstawiony przed kursorem, a
jeśli wybierzesz następne, zostanie za nim dopisany. Aby powrócić do
trybu poleceń, wystarczy wcisnąć <ESC>.
Zalety trybu edycji
Nie zwlekaj i spróbuj obu poleceń: a oraz i. Wprowadź trochę
tekstu i wciśnij escape aby wrócić do trybu poleceń. Zobacz co się stanie jeśli
naciśniesz <ENTER>, klawisze kursora, <DEL>. Klawisze
te pozwalają na wprowadzanie sporych zmian bez ciągłego przełączania się
pomiędzy trybami edycji oraz poleceń.
Opcje edycji
Oto kilka innych użytecznych sposobów aktywowania trybu edycji. Wciśnięcie
A spowoduje umieszczenie kursora na końcu bieżącej linii,
niezależnie od jego aktualnej pozycji. I natomiast przeniesie go na
początek linii. Wciśnięcie o utworzy nową pustą linię pod
bieżącą, a O powyżej bieżącej. Aby zastąpić całą aktualną linię, wciśnij
cc. Żeby zastąpić wszystko od kursora do końca linii, wciśnij c$.
Aby zastąpić wszystko od kursora do początku linii, wpisz c0.
Oprócz przeprowadzenia specyficznej operacji, każde z powyższych poleceń
aktywuje tryb edycji. Po zakończeniu wpisywania tekstu należy wcisnąć
<ESC> żeby powrócić do trybu poleceń.
Modyfikacja tekstu
Z poleceniem c (od ang. change - zmiana) spotkaliśmy się już omawiając
cc, c0 oraz c$. cc to specjalna forma polecenia
c, podobna do dd. Natomiast 0 oraz c$ są
przykładani połączenia polecenia zmiany z poleceniami ruchu. Pod tym względem
c zachowuje się podobnie do d, z tym wyjątkiem, że pozostawia
edytor w trybie edycji abyś mógł od razu nadpisać zastępowany tekst. Spróbuj
połączyć c z różnymi poleceniami ruchu, na przykład wpisując cW,
ce czy c(.
8.
Polecenia złożone
vi jest naprawdę potężny dzięki złożonym poleceniom, jak D{ czy
cw. Pozwala między innymi na łączenie liczb z dowolnymi poleceniami
ruchu. Wpisanie 3w spowoduje przesunięcie kursora o trzy słowa w prawo.
Oto dwa inne przykłady złożonych poleceń: 12b, 4j.
W dodatku do połączeń (liczba)(polecenie ruchu), vi pozwala na dodawanie do nich
d oraz c. Zatem d3w usunie trzy słowa za kursorem, a
d2j bieżącą oraz dwie następne linie. Spróbuj sam żeby przekonać się jak
potężny oraz zwięzły jest vi. Kiedy się przyzwyczaisz, będziesz mógł edytować
pliki znacznie szybciej.
Aktualizacja ściągawki
Czas ponownie zaktualizować ściągawkę. Oto jak teraz powinna wyglądać:
Ilustracja 8.1: Ściągawka z poleceniami złożonymi |
 |
Funkcje pozwalające zwiększyć efektywność
Omówiliśmy już jak się poruszać, zapisywać, wychodzić, edytować, usuwać oraz
korzystać z trybu edycji. Możesz już używać vi do dowolnych zadań.
Vi posiada znacznie więcej użytecznych poleceń. W tej części pokażemy jak
wycinać, kopiować i wklejać, wyszukiwać i
zastępować oraz korzystać z autoindent.
Tryb wizualny
Najlepszą metodą wycinania oraz wklejania tekstu jest korzystanie z trybu
wizualnego, specjalnego trybu dodanego do nowocześniejszych wersji vi, jak
vim oraz elvis. Należy traktować go po prostu jako tryb "zaznaczania tekstu".
Kiedy tekst zostanie zaznaczony, możesz go kopiować lub usuwać, a następnie
wklejać. W gvim można zaznaczać za pomocą lewego przycisku myszy:
Ilustracja 8.2: VIM z zaznaczonym tekstem |
 |
Ponadto, tryb wizualny można aktywować wciskając v (jeśli używasz vi w
konsoli, jest to jedyna możliwość). Następnie przesuwając kursor, będziesz
jednocześnie zaznaczał fragmenty tekstu. Kiedy skończysz, będziesz mógł go
wycinać oraz kopiować.
Aby skopiować zaznaczony tekst, wciśnij y (od ang. yank).
Aby go wyciąć, wciśnij d. Zostaniesz z powrotem przeniesiony
do trybu poleceń. Następnie przesuń kursor do miejsca
gdzie chcesz wstawić tekst i wciśnij P (żeby go wkleić
przed kursorem) lub p (żeby go wkleić za kursorem).
Gotowe! Zanim przejdziesz do kolejnej sekcji, spróbuj sam.
Zastępowanie tekstu
Aby zastąpić wzorce tekstu, skorzystamy z trybu ex.
Jeśli chciałbyś zastąpić pierwsze wystąpienie podanego
wyrażenia regularnego w bieżącej linii,
wpisz :s/<regexp>/<zamiennik>/ i wciśnij
<ENTER>. <regexp> zastąp poszukiwanym
wyrażeniem regularnym, a <zamiennik> tekstem, którym
chcesz go zastąpić. Żeby podmienić wszystkie wystąpienia
w bieżącej linii, wpisz :s/<regexp>/<zamiennik>/g.
Jeśli chcesz zastąpić wszystkie wystąpienia w pliku, wpisz
:%s/<regexp>/<zamiennik>/g. Aby
zastąpić wszystkie wystąpienia, ale każdą zamianę osobno
potwierdzać, wpisz :%s/<regexp>/<zamiennik>/gc
(c od ang. confirm) i wciśnij <ENTER>.
Wcięcia
vi obsługuje automatyczne dodawanie wcięć w czasie edycji kodu źródłowego, tzw.
autoindent. Większość nowoczesnych wersji (jak vim) domyślnie aktywuje tryb
autoindent po otworzeniu pliku z kodem (na przykład .c). Kiedy jest on włączony,
możesz przenieść się o jeden poziom wcięcia w lewo za pomocą <CTR>d
(control-d) oraz w prawo za pomocą <CTR>t (control-t). Jeśli
autoindent nie został włączony automatycznie, możesz to zrobić ręcznie
poleceniem trybu ex: :set autoindent. Możesz ponadto ustawić
rozmiar wcięcia za pomocą :set tabstop. Dosyć popularne jest :set
tabstop=4.
Ostateczna wersja ściągawki
Samouczek vi dobiegł końca! Po dopisaniu wszystkich zaawansowanych poleceń do
ściągawki, powinna wyglądać podobnie do tej na rysunku:
Ilustracja 8.3: Ostateczna wersja ściągawki |
 |
Możesz już zacząć używać vi do edycji plików oraz pisania listów. Trzymaj swoją
ściągawkę pod ręką i w razie czego do niej zaglądaj. W ciągu tygodnia
powinieneś zapamiętać większość poleceń, a twoja efektywność wkrótce bardzo cię
zaskoczy!
Jeśli chcesz ustawić vi jako domyślny edytor, wpisz w /etc/rc.conf:
Listing 8.1: Ustawienie vi jako domyślnego edytora |
#EDITOR="/bin/nano"
EDITOR="/usr/bin/vim"
#EDITOR="/usr/bin/emacs"
|
Przydatne zasoby
Oto kilka stron, które mogą się okazać przydatne w dalszej nauce vi:
O niniejszym dokumencie
Oryginalna wersja tego artykułu została po raz pierwszy opublikowana w serwisie
IBM developerWorks i jest własnością Westtech Information Services. Niniejszy
dokument stanowi zaktualizowaną wersję oryginału i zawiera rozmaite poprawki
wprowadzone przez zespół dokumentacji Gentoo Linux.
|