2009 01 Vim – konkurent prawie doskonały! [Poczatkujacy]


Dla początkujących
Vim  konkurent prawie doskonały!
Vim  konkurent
prawie doskonały!
Aukasz Ciesielski
W poprzednim numerze poruszyliśmy temat jednego z dwóch najdoskonalszych edytorów tekstu 
Emacsa. W tym artykule zajmiemy się największym konkurentem Emacsa, którym niezaprzeczalnie jest
Vim. Od wielu lat trwa spór pomiędzy użytkownikami wspomnianych edytorów o doskonałość i przewagę
jednego nad drugim.
rudno jednak w sposób jednoznaczny okre- z nazwy poprzednika stanowiącego swoisty fundament,
ślić, który z nich jest bardziej funkcjonalny, czy czyli Vi oraz angielskiego słowa improved oznaczające-
wszechstronny. Oczywistością jest, że zarówno go rozbudowany.
TEmacs jak i Vim, poza niewątpliwymi zaletami Pierwowzór Vima został napisany przez Billa Joya,
posiadają także pewne niedoskonałości. Skupmy się jednak natomiast jego nazwa swój rodowód zaczerpnęła od sło-
na bohaterze tytułowym. Drugie posiedzenie sądu w sprawie wa visual. To właśnie na podwalinach tego programu
o wieloplatformowość, użyteczność i otwartość rozbudowa- holenderski programista  Bram Moolenaar  postano-
nego kodu zródłowego  wymierzone przeciwko oskarżone- wił napisać jeden z najlepszych edytorów tekstu. W ten
mu Vim  czas zacząć! sposób Vim stał się rozbudowanym i wieloplatformo-
wym oprogramowaniem. Pierwsza wersja ujrzała świa-
Powiew przeszłości tło dzienne w 1991 roku. Ciekawostką jest specyficzna
Przede wszystkim historię tego programu należy rozpo- licencja, na podstawie której autor zdecydował się podzie-
cząć od pewnego faktu. Otóż Vim nie jest pomysłem no- lić swoim dziełem z innymi użytkownikami, czyli chari-
watorskim, czy raczej przełomem. Dlaczego? Ponie- tyware. Podstawową cechą licencji jest kompatybilność
waż tak naprawdę edytor taki już istniał w momencie z licencją GPL. Odmienność jednak najwidoczniejsza
powstawania Vima. Zapewne zastanawiacie się jak to jest w samych założeniach twórcy Vima. W praktyce
możliwe lub jaka intencja przyświecała autorowi kiedy oznacza to możliwość nieodpłatnego korzystania z do-
tworzył to co już zostało stworzone? Aby poznać kom- skonałego edytora tekstu. Autor zachęca jednak do prze-
pletną anatomię drzewa nie wolno zapominać o korze- kazywania darowizn na cele charytatywne, np. pomoc
niach. Podobnie przedstawia się sprawa interesującego ofiarom AIDS w Ugandzie.
nas edytora. Czym więc jest Vim? Już sama nazwa wie- Aktualna wersja Vima (7.2) jest rozwijana przez wie-
le tłumaczy, ponieważ w rzeczywistości składa się ona lu doskonałych programistów. Dbają oni, aby wprowa-
16 styczeń 2009
linux@software.com.pl
Dla początkujących
Vim  konkurent prawie doskonały!
dzać jak najwięcej poprawek ułatwiających wych, można powiedzieć, że dany tryb wa- dwa rodzaje. Jednym z nich jest wspomnia-
korzystanie z programu, pilnując jednocze- runkuje to, co użytkownik może w nim wy- ny już Insert mode, natomiast drugi to tzw.
śnie, aby nie zostały zatracone pozytywne konać, np. jeden będzie służył do wpisy- Replace mode. Na czym polega różnica? Za-
jego strony. Zanim przejdziemy do szczegó- wania tekstu, natomiast w innym wpisuje- sadniczo funkcja jaką spełniają oraz skróty
łowego omawiania Vima, chciałbym wspo- my polecenia, które mają zostać wykonane klawiaturowe są identyczne. Różnice moż-
mnieć o zaletach tego edytora. Pierwszą przez program. Twórca programu wyróżnia na jednak dostrzec podczas wprowadzania
i najważniejszą jest oczywiście bardzo wy- aż sześć podstawowych trybów pracy Vima tekstu, w momencie ,kiedy kursor znajdu-
soka konfigurowalność. Wszystko zostało oraz pięć dodatkowych. W praktyce jednak je się wewnątrz danej linii. W trybie Insert
jednak zorganizowane w taki sposób, aby korzysta się najczęściej z trzech: Normal, tekst będzie dodawany do już istniejące-
nawet początkujący użytkownik mógł z ła- Insert i Command Line lub Ex. Pierwszy ze go, powodując jego przesunięcie, natomiast
twością przebrnąć przez proces dostrajania wspomnianych jest podstawowym trybem, w trybie Replace stary tekst będzie podmie-
edytora do własnych potrzeb. Ponadto, Vim który uruchamia się wraz z programem. niany przez nowy, czyli istniejące znaki zo-
został wyposażony w szereg dodatków, któ- Można w nim wykonać wszystkie podsta- staną podmienione na wprowadzane. Aby
re w znacznym stopniu ułatwiają nie tylko wowe polecenia edytora. Drugi tryb  In- przejść do Replace wystarczy użyć klawisza
edycje dokumentów, ale pracę w ogóle. Za- sert mode  pozwala na wpisywanie tekstu R w trybie poleceń. Powrót do Insert mo-
gadnieniem tym zajmiemy się jednak w dal- z klawiatury do bufora. To właśnie w tym de jest możliwy za pośrednictwem klawisza
szej części artykułu. Bardzo ważnym za- trybie użytkownik może tworzyć tekst i do- [Insert]. Jak przejść do trybu poleceń? Moż-
gadnieniem jest intuicyjność. Choć jest to wolnie nim manipulować. Nazwa tego trybu na skorzystać z dwóch skrótów klawiaturo-
pojęcie czysto abstrakcyjne, odgrywa czoło- nie jest przypadkowa, ponieważ przełącza- wych. Pierwszy to klawisz [Esc], natomiast
wą rolę podczas użytkowania danego opro- my się do niego wciskając właśnie klawisz drugu to [Ctrl+c]. Pewnym problemem mo-
gramowania. W grę wchodzą tu wszelkiego [Insert]. Aby opuścić tryb Insert korzystamy że być kompatybilność Vima z Vi. Jeżeli
rodzaju skróty klawiaturowe, umiejscowie- z klawisza [Esc]. Trzeci wspomniany już w pliku konfiguracyjnym jest włączona taka
nie najczęściej używanych elementów, na- tryb, Command Line, służy do wydawania opcja, edytor nie będzie oferował możliwo-
zewnictwo dodatkowych funkcji, np. szyb- programowi poleceń, podobnie jak w kon- ści poruszania się kursorem po tekście. Wy-
ciej użytkownik zapamięta nazwę save niż soli systemowej. Uogólniając, tryby moż- nika to z tego, że pierwowzór Vima nie da-
save-this-text-now. Choć podany przykład na podzielić na wstawiania i poleceń. Tryb wał takiej możliwości. Problem ten można
nie jest skomplikowany, zdarzają się jed- wstawiania został jednak rozdzielony na w prosty sposób rozwiązać. Wystarczy edy-
nak nazwy, z którymi prawdopodobnie nie
mają problemów jedynie ich twórcy. Nie Listing 1. Parametry przypisujące skrót klawiaturowy oraz kompilator do określonego typu plików  tu *.pas.
wolno również zapominać o dokumantacji. autocmd BufEnter *.pas imap :!fpc % ;
Mało kto podczas wyboru edytora tekstu za- autocmd BufEnter *.pas map :!fpc % .
stanawia się nad tym zagadnieniem. Jest to
niewybaczalny błąd, ponieważ słaba doku- Listing 2. Ustawienia pozwalające na sprawdzanie pisowni z uwzględnieniem języka polskiego.
mentacja lub jej całkowity brak w przyszłości set spelllang=pl;
zaowocują tym, że użytkownik będzie zmu- map :setlocal spell!;
szony poświęcić długie godziny na przeszuki-
wanie Internetu w celu uzyskania odpowiedzi imap :setlocal spell!i.
na nurtujące go pytania związane np. z kon-
figuracją. W przypadku Vima, podobnie jak
w przypadku Emacsa dokumentacja jest bar-
dzo rozbudowana. Co jest bardzo ważne, do-
stępna jest polska wersja dokumentacji, cho-
ciażby po wpisaniu w konsoli man vim.
Zatrybiły skróty
Każdy edytor tekstu oferuje własne zesta-
wienia skrótów klawiaturowych. Ich zna-
jomość stanowi podstawę obsługi i spraw-
nego poruszania się po tekście. Również
funkcje posiadają najczęściej przypisane so-
bie układy klawiszy. Zanim jednak przej-
dziemy do poznawania poszczególnych
zestawów, musimy poznać schemat działa-
nia Vima. Przede wszystkim nie wolno za-
pomnieć, że jest to edytor modularny, co
oznacza, że potrafi pracować w kilku try-
bach. Pewnie zapytasz, czym są te tryby?
Trudno to wyjaśnić w sposób przejrzysty.
Określając to w sposób najprostszy z możli- Rysunek 1. Ekran powitalny programu Vim w pełnej okazałości
www.lpmagazine.org 17
Dla początkujących
Vim  konkurent prawie doskonały!
tować plik ~/.vimrc i wpisać set nocompa- sługiwać się myszą komputerową. Jaki jed- się być o wiele wygodniejsze. Do poruszania
tible lub set nocp. Po ponownym urucho- nak sens miałoby uczenie się tego, co jest dla się po tekście w pionie służą klawisze J (dół)
mieniu edytora zostaną wczytane nowe wszystkich jasne i zrozumiałe? Nie miałoby i K (góra), natomiast aby przemieszczać się
parametry. Konfiguracja taka pozwoli na po- żadnego sensu. Skupimy się więc na obsłudze kursorem w linii, czyli w poziomie używamy
ruszanie się po tekście za pomocą strzałek, Vima w konsoli. Po uruchomieniu edytora H (lewo) i L (prawo). Jeżeli przyjrzymy się
a także klawiszy [Home] i [End]. Drugim bez środowiska graficznego okaże się, że nie ich ułożeniu na klawiaturze, spostrzeżemy, że
trybem jest oczywiście tryb, w którym użyt- można korzystać z myszy. Niezbędna będzie układ taki jest przemyślany i sensowny. Waż-
kownik wydaje polecenia. Po przełączeniu znajomość skrótów klawiaturowych. Wspo- ną rzeczą, o której należy pamiętać jest wyj-
się do niego można korzystać ze wszyst- mnieliśmy już o pewnej drobnej modyfikacji ście z trybu wprowadzania tekstu przed sto-
kich poleceń służących do zarządzania nie pliku konfiguracyjnego, która umożliwia ko- sowaniem tych klawiszy do poruszania się po
tylko tekstem, ale także całym plikiem. Aby rzystanie ze strzałek umieszczonych na kla- tekście (klawisz [Esc]). Czasami jednak po-
wprowadzić program w tryb poleceń nale- wiaturze oraz klawiszy [Home] i [End]. Obec- ruszanie się po długim pliku znak po znaku
ży posłużyć się klawiszem [Esc]. Czasami nie każdy system zapewnia już możliwość jest uciążliwe, zwłaszcza jeśli np. musimy się
zdarza się, że niezbędne będzie kilkukrotne korzystania z tych klawiszy. Dawniej jednak dostać do n-tego wyrazu, aby go zamienić na
przyciśnięcie tego klawisza. Ma to związek użytkownicy musieli posługiwać się kombi- inny. Znacznie wygodniej jest w takim wy-
z trybami zagnieżdżonymi i program musi nacjami składającymi się z określonych liter padku przemieszczać się słowami. Aby prze-
opuścić każdy z nich po kolei. lub cyfr i klawiszy [Ctrl] oraz [Alt] (dawniej skakiwać słowa do przodu korzystamy z kla-
Poznaliśmy już tryby, czas więc przejść [Meta]). Aby artykuł był kompletny, a cieka- wisza W (ang. word), natomiast w tył poru-
do obsługi samego programu. Ponieważ są to wość Czytelnika zaspokojona, przyjrzymy szamy się klawiszem B (ang. back word).
prymarne informacje, najsensowniej będzie się tym skrótom bliżej. Czasem taki powiew Jest to bardzo wygodny i przede wszystkim
rozpocząć naukę od poruszania się po tekście. historii ma swój urok i duża część użytkow- szybki sposób na pokonywanie długich frag-
Myślisz, że to proste? Nic bardziej mylnego. ników korzysta właśnie z tradycyjnych ze- mentów tekstu. Może się jednak okazać, że
Oczywiście, korzystając z Gvima można po- stawień, które już po kilku próbach wydają w przypadku plików wielostronicowych
i ta metoda jest zbyt wolna. Co wtedy ro-
Tabela 1. Skróty, których znajomość jest niezbędna do swobodnej pracy z programem.
bić? Przewijać tekst całymi ekranami. Dzię-
Skrót Działanie
ki tej technice będziemy mogli przeskakiwać
H (analogicznie  strzałka w lewo) Przesuwa kursor w lewą stronę
naprawdę duże partie tekstu. Dzięki skróto-
L (analogicznie  strzałka w prawo) Przesuwa kursor w prawą stronę
wi [Ctrl+F] (ang. forward) jesteśmy w sta-
K (analogicznie  strzałka do góry) Przesuwa kursor do wyższej linii
nie przełączać kolejne ekrany w przód, na-
tomiast używając skrótu [Ctrl+B] (ang. bac-
J (analogicznie  strzałka w dół) Przesuwa kursor do linii poniżej
kward) powracamy do wcześniejszych. A co
0 (odpowiednik klawisza [Home]) Ustawia na początku akapitu lub strony
z [Home] i [End]? Ich odpowiednikami są
$ (odpowiednik klawisza [End]) Ustawia na końcu akapitu lub strony
klawisze 0 oraz $ (czyli [Shift+4]). Pierwszy
[Esc] Przełącza program w tryb poleceń
z nich przenosi na początek tekstu lub aka-
W Przeskakuje o jedno słowo do przodu
pitu, natomiast drugi analogicznie na koniec.
B Przeskakuje o jedno słowo wstecz
Istnieje jednak możliwość przemieszczenia
[Ctrl+F] Pokazuje kolejny ekran się na początek np. akapitu, w miejsce znaj-
dujące się za pierwszą spacją lub tabulatorem.
[Ctrl+B] Pokazuje poprzedni ekran
Jest to polecenie rzadziej stosowane, jednak
X (odpowiednik klawisza [Delete]) Kasuje zaznaczone znaki lub znaki znajdujące się za
nadal funkcjonujące. Wystarczy użyć skrótu
kursorem
[Shift+6]. Vim został napisany w dużej mie-
[Shift+X] (odpowiednik klawisza [Backspace]) Kasuje znak poprzedzający kursor
rze jako edytor programistyczny. Co za tym
DD Kasuje cały wiersz
idzie, twórcy zadbali aby było to wygodne
[D+$] Kasuje wiersz od miejsca, w którym znajduje się kursor
środowisko pracy dla programistów. Nawet
[D+^] Kasuje znaki od miejsca, w którym znajduje się kursor do
takie czynności jak poruszanie się po tekście
początku linii
zostały odpowiednio wzbogacone przydatny-
mi dla nich funkcjami. Przykładem jest wy-
U Cofa wprowadzone zmiany
posażenie Vima w możliwość przeskakiwania
[Ctrl+R] Ponawia cofnięte zmiany
do linii kodu znajdujących się pod wskazany-
Y (odpowiednik [Ctrl+C]) Kopiuje zaznaczenie
mi numerami. Ponieważ edytor ten umożli-
P (odpowiednik [Ctrl+V]) Wkleja zawartość rejestru
wia także numerowanie poszczególnych linii,
:w Zapisuje zmiany
sprawia to, że programista znając położenia
! Wymusza wykonanie polecenia
interesujących go fragmentów pisanego kodu,
:q Wychodzi z programu może w prosty sposób przemieszczać się po-
między nimi. Dzięki temu omija konieczność
/ fraza Wyszukuje frazę do przodu
przewijania całości. Proces ten nie jest skom-
? fraza Wyszukuje frazę do tyłu
plikowany i ogranicza się jedynie do podania
N Przechodzi do kolejnej odnalezionej frazy
numeru linii, która nas interesuje oraz wci-
[Shift+N] Przechodzi do wcześniej odnalezionej frazy
śnięcia kombinacji [Shift+G].
18 styczeń 2009
Dla początkujących
Vim  konkurent prawie doskonały!
Kolejnym krokiem jest manipulowanie scu, w którym znajduje się kursor wpisuje- rycznymi. Podczas zaznaczania zostaniemy
zawartością pliku oraz samym plikiem. Mam my 10, a następnie korzystamy z odpowia- automatycznie przełączeni w tryb wizualny.
tu na myśli nie tylko takie operacje jak wy- dającego nam skrótu (X usunie 10 znaków Jest to trzeci z trybów Vima. Po zaznacze-
cinanie, wklejanie, czy kopiowanie fragmen- znajdujących się za kursorem, a [Shift+X] niu odpowiedniego fragmentu, co nie po-
tów tekstu, ale również otwieranie i zapisy- te które są przed kursorem). Jest to bardzo winno już sprawiać problemów wciskamy
wanie plików. Zacznijmy jednak od edycji dobra funkcja, jednak w przypadku pracy klawisz Y (pozostając w trybie wizualnym).
danego pliku, np. Test.txt. Najczęściej wy- na długich tekstach nieco uciążliwa. Trud- Nasz tekst znajduje się już w schowku. Aby
gląda to w taki sposób, że w konsoli urucha- no bowiem liczyć znaki, które chcielibyśmy wkleić go w odpowiednie miejsce, należy
miamy program Vim wraz ze ścieżką do od- usunąć. Jeśli zależy nam na kasowaniu ca- ustawić kursor, a następnie trybie poleceń
powiedniego pliku, który chcemy edytować. łych wierszy, to znacznie praktyczniejszym ([Esc]) wcisnąć klawisz P (ang. paste). Go-
Istnieje jednak możliwość wczytania pliku do poleceniem jest DD. Wydane w trybie po- towe! Można również włączyć obsługę [Ctr-
programu bez konieczności ponownego uru- leceń kasuje cały wiersz, w którym znaj- l+C] i [Ctrl+P], czyli alternatywną metodę
chamiania. Umożliwia to funkcja find. Aby duje się kursor. Istnieje także możliwość kopiowania i wklejania. Jednak tradycyjny
przyspieszyć wyszukiwanie możemy podać usuwania kilku wierszy jednocześnie. Wy- sposób Vima daje użytkownikowi znacznie
kompletną ścieżkę do istniejącego pliku (lub starczy polecenie DD poprzedzić liczbą większe możliwości, ponieważ podczas ko-
tworzonego). Jeżeli chcemy otworzyć (utwo- oznaczającą ilość wierszy. To jednak nie piowania może sam kontrolować do jakie-
rzyć) np. plik ~/Test.txt w trybie poleceń wpi- wszystko! Ilość dostępnych poleceń ofe- go rejestru i co jest kopiowane. Sprawia to,
sujemy :find ~/Test.txt. Może się jednak rowanych przez Vima jest tak ogromna, że że tak naprawdę można skopiować dwadzie-
zdarzyć, że operacja zakończy się błędem, trudno o wszystkich pamiętać. Bardzo przy- ścia sześć fragmentów bez konieczności na-
a edytor poinformuje o konieczności aktu- datnym poleceniem jest np. zestawienie tychmiastowego wklejania ich w obawie, że
alnej wersji innego, edytowanego wcześniej [D+$]. Efektem jego działania jest usunięcie kolejne kopiowania zamaże poprzednie. Je-
pliku. Tu mamy dwie możliwości. Pierwsza tekstu od znaku, na którym znajduje się kur- śli chcemy skopiować tekst do pierwszego
to zapisanie zmienionych danych i próba po- sor, aż do końca linii. Stosując [D+Shift+6], rejestru, czyli oznaczonego literą a, wyda-
nownego otworzenia pożądanego pliku, na- możemy skasować tekst od danego znaku jemy polecenie a i wciskamy klawisz Y. Po-
tomiast druga to tzw. wymuszenie na pro- do początku linii. A co jeżeli się pomyli- dobnie będzie wyglądać sytuacja z każdym
gramie danej operacji. Robimy to dodając my i chcemy cofnąć lub ponowić zmiany? rejestrem. Różnica będzie jedynie w poda-
do polecenia znak wykrzyknika. Jeżeli roz- Każdy edytor tekstu na wysokim poziomie wanej nazwie. Celowo nie wspominaliśmy
każemy Vimowi wykonanie polecenia :find! (a Vim do takich właśnie należy) oferuje takie jeszcze o wycinaniu fragmentów tekstu. Ist-
~/Test.txt to bez względu na stan zapisu funkcje. Aby cofnąć wprowadzone zmiany nieje kilka sposobów na osiągniecie tego ce-
otwartego aktualnie dokumentu, zostanie on używamy klawisza U (ang. undo), natomiast lu. Jednym z nich jest zaznaczenie fragmen-
zamknięty, natomiast edytor otworzy wska- jeżeli chcemy je ponowić [Ctrl+R] (ang. re- tu, następnie skopiowanie go i usunięcie.
zany przez nas dokument. Może się zdarzyć, do). Ogromnym plusem jest to, że zarówno W ten sposób uzyskamy efekt identyczny
że nie będziemy chcieli zapisywać dopisane- cofanie, jak i przywracanie może być wy- jak w przypadku typowego wycinania. Jeże-
go fragmentu pliku, a chcielibyśmy wczytać konywane wielokrotnie. Oznacza to, że mo- li zależy nam, aby wycinany fragment zna-
ponownie jego zawartość, lub mówiąc pro- żemy cofać nie tylko ostatnie zmiany, ale lazł się w określonym rejestrze, możemy po-
ściej odświeżyć zawartość bez zapisywania również te wcześniejsze. Identycznie wyglą- służyć się poleceniem aX, gdzie a jest nazwą
nowych fragmentów. Wpisujemy w trybie da sytuacja przywracania. A co z kopiowa- konkretnego rejestru, natomiast X usuwa
poleceń :edit lub :edit!. niem i wycinaniem? W przypadku Vima nie tekst po uprzednim przypisaniu go do okre-
Skoro udało nam się edytować plik, zo- mamy do czynienia z dobrze znanym każde- ślonego schowka. Oczywiście tekst musi zo-
baczmy co Vim potrafi zrobić z jego zawar- mu schowkiem. Tutaj dane są umieszczane stać wcześniej zaznaczony.
tością. Poza pisaniem, wklejaniem i kopio- w tzw. rejestrach, które w rzeczywistości są Kiedy skończymy pracę z plikiem najczę-
waniem tekstu, najczęściej wykonywaną równoznaczne ze schowkami. Użytkownik ściej chcemy zapisać jej efekty. Vim oferuje
operacją jest kasowanie. Oczywiście może- ma do dyspozycji dwadzieścia sześć reje- dwie możliwości zapisywania. Pierwszą jest
my korzystać z takich klawiszy jak [Delete] strów oznaczonych kolejno literami alfabetu wyjście z trybu wprowadzania do trybu pole-
i [Backspace], jednak nie są to standardo- oraz jeden domyślny. Tak naprawdę jest ich ceń ([Esc]) i wydanie polecenia :w. Może się
we skróty w przypadku Vima. Odpowiedni- znacznie więcej, jednak są to tzw. rejestry jednak zdarzyć, że nasz edytor odmówi po-
kiem [Delete] jest X, natomiast [Backspace] specjalnego przeznaczenia, których raczej słuszeństwa i ujrzymy komunikat o błędzie.
zastępuje [Shift+X]. Na czym więc polega nie używamy. Kopiowanie nie jest już tak Najprawdopodobniej okaże się, że pracowa-
różnica? Otóż pierwsze ze wspomnianych proste jak opisane wyżej operacje. Istnie- liśmy w nowym dokumencie i np. nie podali-
działają w trybie wprowadzania tekstu. Aby je kilka metod jednak najwygodniejszą jest śmy jego nazwy i ścieżki (:w ~/Test.txt).
skasować znaki za pomocą standardowych modyfikacja pliku konfiguracyjnego w ta- Jeżeli istnieje inna przyczyna, można wymu-
zestawień Vima musimy najpierw przejść do ki sposób, aby możliwe było znane wszyst- sić na Vimie zapisanie dokumentu stosując
trybu poleceń ([Esc]), ustawić kursor w od- kim zaznaczanie z użyciem klawisza [Shift]. znak wykrzyknika. Należy jednak przed każ-
powiednim miejscu, a następnie skorzystać Na początek otwieramy plik ~/.vimrc. Tam dą tego typu operacją dokładnie zastanowić
z odpowiadającego naszym potrzebom skró- dopisujemy linię set keymodel=startse- się jaka była przyczyna wystąpienia ostrzeże-
tu. Twórcy programu zadbali o jego funkcjo- l,stopsel. Dzięki niej będziemy mogli za- nia. Z całą pewnością nie jest to metoda zale-
nalność. Jeśli chcemy usunąć większą ilość znaczać trzymając wciśnięty klawisz [Shift] cana i bezpieczna.
znaków, możemy to zrobić na kilka sposo- i posługując się strzałeczkami lub przedsta- W tym momencie nawet użytkownicy,
bów. Dla skasowania np. 10 znaków w miej- wionymi już w tekście skrótami alfanume- którzy spotkali się z Vimem pierwszy raz
www.lpmagazine.org 19
Dla początkujących
Vim  konkurent prawie doskonały!
są w stanie z niego korzystać. Wiemy czym nia polecenia. Recepta jest prosta. Aby prze- rozpoczynające się tym znakiem. Będzie to
są tryby, potrafimy otwierać, zamykać i mo- nieść się do kolejnej pozycji, poruszając się zarówno pojedyncza litera a, jak i ananas.
dyfikować zawartość plików. W dalszej czę- w kierunku końca pliku wystarczy użyć skró- Istnieje również możliwość łączenia kilku
ści artykułu zajmiemy się metodami prze- tu klawiaturowego N, natomiast w celu poru- parametrów w jednym poleceniu. Dla zesta-
szukiwania tekstu, a także nauczymy się jak szania się ku początkowi [Shift+N]. Jeśli szu- wienia r*z, wynikiem będą wszystkie lite-
sprytnie można podmieniać jego określone kany fragment tekstu znajduje się przed ak- ry z oraz rz danego ciągu. Znacznie prościej
fragmenty. Jest to zagadnienie na tyle istot- tualną pozycją kursora, zamiast / wydajemy wygląda sytuacja z pytajnikiem. Dla zesta-
ne, że zasłużyło na umieszczenie go w od- polecenie ?, po czym wpisujemy pożądany wienia mż?awka zostaną znalezione zarówno
dzielnym akapicie. tekst. Dzięki temu Vim będzie przeszukiwał wyraz mżawka, jak i ciąg, w którym znajdu-
plik wstecz. Metody te pozwalają na wygod- je się zbiór awka, np. ławka. W ten sposób
Szukaj a znajdziesz ną pracę z programem. Jeżeli jednak zależy możemy wyszukać określone zbitki zbiory
Trudno wyobrazić sobie pracę z jakimkol- nam na sprecyzowanym wyszukiwaniu, nie- znaków. Czasem jednak jeden parametr to
wiek tekstem bez możliwości przeszukiwa- zbędne jest podanie dodatkowych parame- zbyt mało i niezbędne jest dołączenie ko-
nia treści, wyszukiwania określonych zwro- trów. Są to tzw. wyrażenia regularne. Dzię- lejnych. Do tego właśnie służy trzecie ze
tów i słów. Mechanizm ten został w Vimie ki nim edytor jest w stanie odnalezć nie tylko wspomnianych wyrażeń regularnych, czyli
bardzo skrupulatnie przemyślany i zaplano- podane wyrażenia, ale również wszystkie po- znak plusa. Jak łatwo się domyśleć powodu-
wany. Twórcy zadbali o dopracowanie de- krewne, które spełniają podane warunki. je on połączenie minimum dwóch ciągów, w
tali związanych między innymi z wyszuki- Czym jest wyrażenie regularne? Uogól- taki sposób, aby uściślić krąg odnalezionych
waniem i zastępowaniem wyrażeń. Dzięki niając, najczęściej jest to ciąg znaków okre- elementów. Dla zbioru aaaabbcc aacc aab-
temu edytor ten stał się potężnym konkuren- ślający, że inne ciągi znaków spełniają jego bcc warunek wyszukiwania aa+bbcc zosta-
tem dla dedykowanych środowisk programi- założenia. Najprymitywniejszą formą takie- nie spełniony jedynie dla pierwszego i ostat-
stycznych, takich jak np. Eclipse czy Anjuta. go ciągu jest oczywiście pojedynczy wyraz, niego ciągu. A gdybyśmy chcieli znalezć je-
Vim został wyposażony w umiejętność ope- który sam w sobie stanowi określony ze- den z dwóch ciągów spełniających określo-
rowania nie tylko na zwykłych fragmentach staw. Dla słowa Linux, jedynym pasującym ny warunek? Możemy posłużyć się znakiem
tekstu, ale także na maskach, podobnych do ciągiem będzie Linux. W ten sam sposób | ([Shift+\]). Oznacza on, że Vim ma odna-
tych, które są dostępne w konsoli. Vim będzie analizował każdy inny wyraz, lezć wyraz stojący przed nim lub za nim.
Jeżeli chcemy wyszukać jedynie jakiś podany jako ciąg do wyszukania. Można Bardzo interesujący efekt daje wyszuki-
wyraz lub określone zestawienie wyrazowe, jednak uściślić parametry przeszukiwania wanie z użyciem nawiasów kwadratowych.
wystarczy w trybie poleceń wpisać znak /, tekstu. Najpopularniejszymi parametrami Określają one pewną klasę, na bazie której
a następnie poszukiwany tekst. Teraz wystar- są gwiazdka, znak zapytania oraz znak plus. znajdowane są określone znaki. W klasach
czy zaakceptować klawiszem [Enter] i jeśli Choć wygląda to na bardzo skomplikowa- takich litera lub cyfra określają same siebie,
Vim odnajdzie szukany zestaw zostanie on ne, w rzeczywistości takie nie jest. Mijałoby natomiast minus oznacza zakres całej opera-
odpowiednio oznaczony i wskazany kurso- się to z celem developerów, ponieważ celem cji. Przykładem może być [a-d] oznaczają-
rem. W tym przypadku przeszukiwanie do- który im przyświecał było właśnie uprosz- cy, że szukany znak musi mieścić się w ra-
kumentu odbywa się w kierunku jego koń- czenie pracy z tekstem. Zaczniemy od zna- mach zakresu od a do d, czyli może to być
ca. Warto jednak wspomnieć w jaki sposób ku gwiazdki zestawionego z danym cią- zarówno a jak i b, c i d. Aby Emacs odnalazł
możemy przeskakiwać do kolejnej pasującej giem. Jeśli umieścimy go np. za literą a (a*), znak minusa, należy umieścić go na począt-
wartości, bez potrzeby ponownego wydawa- okaże się, że Vim odnajdzie wszystkie ciągi ku definiowanej klasy. Dzięki zastosowaniu
tej metody możemy np. odnalezć wszyst-
kie samogłoski w tekście. Wystarczy jedy-
nie prosty zapis [aeiouyAEIOUY]. W podob-
ny sposób użytkownik jest w stanie wyszu-
kać niemal każde interesujące go zestawie-
nie znaków. Gdybyśmy chcieli odnalezć ja-
kiś znak z konkretnego przedziału, do tego
jeszcze dodać znak minusa oraz samogłoski
A i U pisane wielką literą, możemy dokonać
tego za pomocą jednej, nieskomplikowanej
definicji. Zaczynamy oczywiście od znaku
minusa, następnie określamy pozostałe za-
kresy. W gotowej postaci powinno to wyglą-
dać tak: [-f-nAU]. Efektem końcowym tej
klasy będzie znak minusa wraz z dowolną
literą z przedziału od f do n i duża litera A
lub U. Gdybyśmy jednak chcieli zanegować
określone znaki, posługujemy się znakiem
^, wstawiając go przed zbiór przeznaczony
do wykluczenia. W ten oto sposób jesteśmy
Rysunek 2. Vim po zastosowaniu wybranego schematu kolorów (tu: impact) w stanie wyeliminować z wyszukiwania
20 styczeń 2009
Dla początkujących
Vim  konkurent prawie doskonały!
np. wszystkie samogłoski ([^aeiouyAEIO- du i działania programu. Aby lepiej zrozu- można utworzyć mnóstwo innych użytecz-
UY]). Dla wyrażeń skomplikowanych bar- mieć w jaki sposób można samemu skonfi- nych skrótów, w zależności od tego jakie są
dzo przydatne okazują się nawiasy okrągłe. gurować Vima, omówimy przykładowy plik najczęściej wykorzystywane.
Ich zadaniem jest zespolenie w jedną całość konfiguracyjny. Na zakończenie skonfigurujemy opcje,
określonych fragmentów danego polecenia. Na początek warto wyłączyć kompa- pozwalające na sprawdzanie pisowni. Zanim
Doskonale komponują się z omówionymi tybilność ze starszym edytorem Vi. Dzię- jednak do tego przejdziemy należy zainsta-
wcześniej wyrażeniami regularnymi np. +. ki temu uzyskamy kilka bardzo przydat- lować pakiet vim-spellfiles-pl, który powi-
Jeżeli napiszemy (abcd)+, Emacs odnajdzie nych funkcji, takich jak chociażby porusza- nien znajdować się w większości dystrybu-
wszystkie ciągi abcd, abcdabcd itd. nie się po tekście za pomocą kursora. Aby cji. W pliku ~/.vimrc wskazujemy język, któ-
Nie wspomnieliśmy jeszcze o trzech tego dokonać, wystarczy w pliku konfigu- ry ma zostać uwzględniony podczas spraw-
godnych uwagi funkcjach. Bardzo często racyjnym dopisać set nocompatible. Te- dzania oraz skrót uruchamiający sprawdzają-
niezwykle przydatne są nawiasy klamrowe. raz najważniejsza część dla każdego pro- cy skrypt (Listing. 2).
Podobnie jak nawiasy kwadratowe, również gramisty. Ustawimy kolorowanie skład- Vim jest już gotowy do pracy. Aby wczy-
określają zbiór. Różnica polega na tych, że ni kodu (bez tego trudno mówić o jakim- tać nowy plik konfiguracyjny, należy urucho-
na zewnątrz, czyli poza nawiasem występu- kolwiek komforcie podczas pisania progra- mić program z opcją -u, podając po niej ścież-
je zawsze dodatkowy parametr, np. wyraże- mów) oraz skróty pozwalające na zapisywa- kę do nowych ustawień. Oczywiście moż-
nie a{5-10} zaowocuje tym, że litera a zo- nie i kompilowanie kodu za pomocą dwóch liwości manipulacji konfiguracją edytora są
stanie odnaleziona tylko wtedy, jeżeli bę- klawiszy. Zanim jednak przypiszemy okre- ogromne. Setki dodatków znajdujących się
dzie powtórzona od 5 do 10 razy. A co, jeśli ślony zestaw kolorów, należy włączyć opcję w Internecie (np. http://www.vim.org/scripts/
interesuje nas konkretny znak, ale jedynie syntax on, dzięki której operacja ta będzie index.php) sprawiają, że Vim jest pretenden-
w momencie, jeśli znajduje się on na począt- możliwa. Zestawienie zawierające informa- tem do zajęcia pierwszego miejsca na arenie
ku linii? I na to znajdzie się rada. Wystarczy, cje o kolorach zawsze zapisane jest w od- najlepszych edytorów na świecie.
że przed poszukiwanym znakiem wstawimy dzielnym pliku z rozszerzeniem *.vim. Na-
znany nam już ^, czyli tzw. daszek. Dla wy- szym zadaniem jest jedynie umieszczenie Wyrok
rażenia ^lucas, zostaną odnalezione słowa takiego gotowca w katalogach programu, Vim jest doskonały rozwiązanie dla osób,
lucas, ale tylko te, które znajdują się na po- np. /usr/share/vim/vim71/colors. Po zain- które wymagają od swojego edytora, aby
czątku linii. Analogicznie przeciwnym para- stalowaniu Vima, w katalogu tym znajduje pracował na najwyższych obrotach nie tracąc
metrem jest znaczek $, czyli dolar. się kilka ciekawych propozycji koloryzują- przy tym na funkcjonalności. Każda osoba
Poznaliśmy najpopularniejsze metody wy- cych składnię. Warto poeksperymentować zajmująca się programowaniem już po krót-
szukiwania w Vimie. Oczywiście bardzo czę- i wybrać ten, który nam najlepiej odpowia- kim użytkowaniu zauważy zalety i olbrzymi
sto łączy się je w celu uzyskania lepszej efek- da i przede wszystkim najmniej męczy na- potencjał tego programu. Nie jest to co praw-
tywności i precyzyjności. Dla początkujących sze oczy. Do przypisania danego tematu słu- da środowisko programistyczne, jednak po
użytkowników, z całą pewnością wystarczą ży polecenie: colorscheme impact, gdzie niewielkich modyfikacjach pliku konfigura-
przedstawione powyżej. impact jest przykładem gotowego motywu. cyjnego, doskonale może je zastąpić. Do-
Warto również wspomnieć o możliwości pa- datkowym atutem Vima jest jego konfiguro-
Wszystko po swojemu rowania nawiasów, czyli podświetlania np. walność. To ona sprawia, że popularność te-
Po zainstalowaniu Vima jest on już w pew- otwierającego podczas pisania zamykające- go edytora nieustannie rośnie. Jedynym pro-
nym stopniu skonfigurowany. To jednak go. Efekt ten (bardzo pomocny) uzyskamy gramem tego typu, który może zagrozić Vi-
żadna przyjemność korzystać z gotow- dopisując do ~/.vimrc linię set showmatch. mowi, jest Emacs. Trudno rozstrzygnąć, któ-
ców, które nie zawsze rozumiemy. Naj- I gotowe! Od tej pory Vim jest prawie przy- ry z nich jest lepszy, czy wygodniejszy. Są
lepszą konfiguracją programu jest ta, któ- gotowany do programowania. Dlaczego to dwa całkowicie odmienne edytory, ofe-
rą sami stworzymy, ponieważ dopasuje ona prawie? Ponieważ w tym momencie, aby rujące jednak te same możliwość. Nie nale-
edytor do naszych potrzeb, np. ustawi kolo- skompilować program będziemy musie- ży rezygnować z chęci poznawania nowego,
rowanie dla języka programowania, którego li wpisywać niewygodne polecenia. Można na rzecz pamięciożernych i wolnych środo-
używamy. Najlepszym pomysłem jest stwo- jednak temu zaradzić. Jeżeli chcemy kompi- wisk programistycznych. Nauka obsługi Vi-
rzenie katalogu Vim w katalogu domowym. lować kod napisany w Pascalu, dopisujemy ma lub Emacsa z całą pewnością zaowocu-
Dzięki temu zachowamy większy porzą- dwie linie, które określają typ pliku, kom- je w przyszłości. Zapoznaj się z tymi edyto-
dek, ponieważ wszystkie dodatkowe pliki pilator oraz skrót, którego będziemy uży- rami  warto!
będą umieszczone w jednym miejscu. Dla- wać (Listing. 1). Teraz wystarczy nacisnąć
czego jest to takie ważne? Ponieważ dla Vi- klawisz [F6] aby Vim uruchomił kompila-
ma stworzono mnóstwo rozmaitych dodat- tor dla Pascala. W identyczny sposób mo-
O autorze
ków, w które po pewnym czasie zapewne żemy przypisać skróty dla innych języków
każdy będzie chciał wyposażyć swój edy- programowania. A w jaki sposób przypisać
Autor jest dziennikarzem, którego pasją sta-
tor. Doskonałym przykładem jest cvim, ale skrót np. [F2] zapisujący zmiany w pliku?
ło się programowanie (C/C++, Java, Pascal,
o tym za chwilę. Wróćmy jednak do na- Właściwie jest to okrojona wersja polece-
Qt, Gtk+) oraz systemy spod znaku pingwi-
szego pliku konfiguracyjnego. Kiedy ma- nia, które zostało użyte w powyższym przy-
na (Slackware, Debian).
my już odpowiedni katalog, tworzymy no- kładzie. W pliku konfiguracyjnym dopisuje-
Kontakt z autorem:
wy plik  vimrc. To właśnie w nim znajdują my imap :w oraz map
lucas.ciesielski@gmail.com
się wszystkie ustawienia dotyczące wyglą- :w. Analogicznie do tego przykładu
www.lpmagazine.org 21


Wyszukiwarka

Podobne podstrony:
2009 01 Firewall w Linuksie [Poczatkujacy]
Warunki techniczne zmiana 2009 01 01 Dz U 2008 201 1238
Sprzęt specjalistyczny w służbie PP 2009 01 03
egzamin 2009 01 (X 91) arkusz
01 Traktat Lizboński instrukcja dla początkujących
2009 01 Analiza powłamaniowa
2009 01 The Naked Wiki id 20616 Nieznany
SIMR ALG1 EGZ 2009 01 30a rozw
Crocker Zbyt szybkie wycofanie oddziałów z Iraku to błąd (24 01 2009)
Pisemny 01 2009 Y
Rabini do żołnierzy w Gazie Badzcie bezlitosci (26 01 2009)

więcej podobnych podstron