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

background image

Dla początkujących

Vim – konkurent prawie doskonały!

16

styczeń 2009

Dla początkujących

Vim – konkurent prawie doskonały!

17

www.lpmagazine.org

lin

ux

@

so

ftw

ar

e.

co

m

.p

l

Vim – konkurent

prawie doskonały!

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.

Łukasz Ciesielski

T

rudno jednak w sposób jednoznaczny okre-
ślić, który z nich jest bardziej funkcjonalny, czy
wszechstronny. Oczywistością jest, że zarówno
Emacs jak i Vim, poza niewątpliwymi zaletami

posiadają także pewne niedoskonałości. Skupmy się jednak
na bohaterze tytułowym. Drugie posiedzenie sądu w sprawie
o wieloplatformowość, użyteczność i otwartość rozbudowa-
nego kodu źródłowego – wymierzone przeciwko oskarżone-
mu Vim – czas zacząć!

Powiew przeszłości

Przede wszystkim historię tego programu należy rozpo-
cząć od pewnego faktu. Otóż Vim nie jest pomysłem no-
watorskim, czy raczej przełomem. Dlaczego? Ponie-
waż tak naprawdę edytor taki już istniał w momencie
powstawania Vima. Zapewne zastanawiacie się jak to
możliwe lub jaka intencja przyświecała autorowi kiedy
tworzył to co już zostało stworzone? Aby poznać kom-
pletną anatomię drzewa nie wolno zapominać o korze-
niach. Podobnie przedstawia się sprawa interesującego
nas edytora. Czym więc jest Vim? Już sama nazwa wie-
le tłumaczy, ponieważ w rzeczywistości składa się ona

z nazwy poprzednika stanowiącego swoisty fundament,
czyli Vi oraz angielskiego słowa improved oznaczające-
go rozbudowany.

Pierwowzór Vima został napisany przez Billa Joya,

natomiast jego nazwa swój rodowód zaczerpnęła od sło-
wa visual. To właśnie na podwalinach tego programu
holenderski programista – Bram Moolenaar – postano-
wił napisać jeden z najlepszych edytorów tekstu. W ten
sposób Vim stał się rozbudowanym i wieloplatformo-
wym oprogramowaniem. Pierwsza wersja ujrzała świa-
tło dzienne w 1991 roku. Ciekawostką jest specyficzna
licencja, na podstawie której autor zdecydował się podzie-
lić swoim dziełem z innymi użytkownikami, czyli chari-
tyware
. Podstawową cechą licencji jest kompatybilność
z licencją GPL. Odmienność jednak najwidoczniejsza
jest w samych założeniach twórcy Vima. W praktyce
oznacza to możliwość nieodpłatnego korzystania z do-
skonałego edytora tekstu. Autor zachęca jednak do prze-
kazywania darowizn na cele charytatywne, np. pomoc
ofiarom AIDS w Ugandzie.

Aktualna wersja Vima (7.2) jest rozwijana przez wie-

lu doskonałych programistów. Dbają oni, aby wprowa-

background image

Dla początkujących

Vim – konkurent prawie doskonały!

16

styczeń 2009

Dla początkujących

Vim – konkurent prawie doskonały!

17

www.lpmagazine.org

dzać jak najwięcej poprawek ułatwiających
korzystanie z programu, pilnując jednocze-
śnie, aby nie zostały zatracone pozytywne
jego strony. Zanim przejdziemy do szczegó-
łowego omawiania Vima, chciałbym wspo-
mnieć o zaletach tego edytora. Pierwszą
i najważniejszą jest oczywiście bardzo wy-
soka konfigurowalność. Wszystko zostało
jednak zorganizowane w taki sposób, aby
nawet początkujący użytkownik mógł z ła-
twością przebrnąć przez proces dostrajania
edytora do własnych potrzeb. Ponadto, Vim
został wyposażony w szereg dodatków, któ-
re w znacznym stopniu ułatwiają nie tylko
edycje dokumentów, ale pracę w ogóle. Za-
gadnieniem tym zajmiemy się jednak w dal-
szej części artykułu. Bardzo ważnym za-
gadnieniem jest intuicyjność. Choć jest to
pojęcie czysto abstrakcyjne, odgrywa czoło-
wą rolę podczas użytkowania danego opro-
gramowania. W grę wchodzą tu wszelkiego
rodzaju skróty klawiaturowe, umiejscowie-
nie najczęściej używanych elementów, na-
zewnictwo dodatkowych funkcji, np. szyb-
ciej użytkownik zapamięta nazwę save niż
save-this-text-now. Choć podany przykład
nie jest skomplikowany, zdarzają się jed-
nak nazwy, z którymi prawdopodobnie nie
mają problemów jedynie ich twórcy. Nie
wolno również zapominać o dokumantacji.
Mało kto podczas wyboru edytora tekstu za-
stanawia się nad tym zagadnieniem. Jest to
niewybaczalny błąd, ponieważ słaba doku-
mentacja lub jej całkowity brak w przyszłości
zaowocują tym, że użytkownik będzie zmu-
szony poświęcić długie godziny na przeszuki-
wanie Internetu w celu uzyskania odpowiedzi
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-

wych, można powiedzieć, że dany tryb wa-
runkuje to, co użytkownik może w nim wy-
konać, np. jeden będzie służył do wpisy-
wania tekstu, natomiast w innym wpisuje-
my polecenia, które mają zostać wykonane
przez program. Twórca programu wyróżnia
aż sześć podstawowych trybów pracy Vima
oraz pięć dodatkowych. W praktyce jednak
korzysta się najczęściej z trzech: Normal,
Insert i Command Line lub Ex. Pierwszy ze
wspomnianych jest podstawowym trybem,
który uruchamia się wraz z programem.
Można w nim wykonać wszystkie podsta-
wowe polecenia edytora. Drugi tryb – In-
sert
mode – pozwala na wpisywanie tekstu
z klawiatury do bufora. To właśnie w tym
trybie użytkownik może tworzyć tekst i do-
wolnie nim manipulować. Nazwa tego trybu
nie jest przypadkowa, ponieważ przełącza-
my się do niego wciskając właśnie klawisz
[Insert]. Aby opuścić tryb Insert korzystamy
z klawisza [Esc]. Trzeci wspomniany już
tryb, Command Line, służy do wydawania
programowi poleceń, podobnie jak w kon-
soli systemowej. Uogólniając, tryby moż-
na podzielić na wstawiania i poleceń. Tryb
wstawiania został jednak rozdzielony na

dwa rodzaje. Jednym z nich jest wspomnia-
ny już Insert mode, natomiast drugi to tzw.
Replace mode. Na czym polega różnica? Za-
sadniczo funkcja jaką spełniają oraz skróty
klawiaturowe są identyczne. Różnice moż-
na jednak dostrzec podczas wprowadzania
tekstu, w momencie ,kiedy kursor znajdu-
je się wewnątrz danej linii. W trybie Insert
tekst będzie dodawany do już istniejące-
go, powodując jego przesunięcie, natomiast
w trybie Replace stary tekst będzie podmie-
niany przez nowy, czyli istniejące znaki zo-
staną podmienione na wprowadzane. Aby
przejść do Replace wystarczy użyć klawisza
R w trybie poleceń. Powrót do Insert mo-
de
jest możliwy za pośrednictwem klawisza
[Insert]. Jak przejść do trybu poleceń? Moż-
na skorzystać z dwóch skrótów klawiaturo-
wych. Pierwszy to klawisz [Esc], natomiast
drugu to [Ctrl+c]. Pewnym problemem mo-
że być kompatybilność Vima z Vi. Jeżeli
w pliku konfiguracyjnym jest włączona taka
opcja, edytor nie będzie oferował możliwo-
ści poruszania się kursorem po tekście. Wy-
nika to z tego, że pierwowzór Vima nie da-
wał takiej możliwości. Problem ten można
w prosty sposób rozwiązać. Wystarczy edy-

Listing 1.

Parametry przypisujące skrót klawiaturowy oraz kompilator do określonego typu plików – tu *.pas.

autocmd BufEnter *.pas imap <F6> <C-O>:!fpc

%

<CR>;

autocmd BufEnter *.pas map <F6> :!fpc

%

<CR>.

Listing 2.

Ustawienia pozwalające na sprawdzanie pisowni z uwzględnieniem języka polskiego.

set spelllang=pl;
map <silent><F7> :setlocal spell!<CR>;

imap <silent><F7> <ESC>:setlocal spell!<CR>i<right>.

Rysunek 1.

Ekran powitalny programu Vim w pełnej okazałości

background image

18

Dla początkujących

Vim – konkurent prawie doskonały!

styczeń 2009

19

Dla początkujących

Vim – konkurent prawie doskonały!

www.lpmagazine.org

tować plik ~/.vimrc i wpisać set nocompa-
tible
lub set nocp. Po ponownym urucho-
mieniu edytora zostaną wczytane nowe
parametry. Konfiguracja taka pozwoli na po-
ruszanie się po tekście za pomocą strzałek,
a także klawiszy [Home] i [End]. Drugim
trybem jest oczywiście tryb, w którym użyt-
kownik wydaje polecenia. Po przełączeniu
się do niego można korzystać ze wszyst-
kich poleceń służących do zarządzania nie
tylko tekstem, ale także całym plikiem. Aby
wprowadzić program w tryb poleceń nale-
ży posłużyć się klawiszem [Esc]. Czasami
zdarza się, że niezbędne będzie kilkukrotne
przyciśnięcie tego klawisza. Ma to związek
z trybami zagnieżdżonymi i program musi
opuścić każdy z nich po kolei.

Poznaliśmy już tryby, czas więc przejść

do obsługi samego programu. Ponieważ są to
prymarne informacje, najsensowniej będzie
rozpocząć naukę od poruszania się po tekście.
Myślisz, że to proste? Nic bardziej mylnego.
Oczywiście, korzystając z Gvima można po-

sługiwać się myszą komputerową. Jaki jed-
nak sens miałoby uczenie się tego, co jest dla
wszystkich jasne i zrozumiałe? Nie miałoby
żadnego sensu. Skupimy się więc na obsłudze
Vima w konsoli. Po uruchomieniu edytora
bez środowiska graficznego okaże się, że nie
można korzystać z myszy. Niezbędna będzie
znajomość skrótów klawiaturowych. Wspo-
mnieliśmy już o pewnej drobnej modyfikacji
pliku konfiguracyjnego, która umożliwia ko-
rzystanie ze strzałek umieszczonych na kla-
wiaturze oraz klawiszy [Home] i [End]. Obec-
nie każdy system zapewnia już możliwość
korzystania z tych klawiszy. Dawniej jednak
użytkownicy musieli posługiwać się kombi-
nacjami składającymi się z określonych liter
lub cyfr i klawiszy [Ctrl] oraz [Alt] (dawniej
[Meta]). Aby artykuł był kompletny, a cieka-
wość Czytelnika zaspokojona, przyjrzymy
się tym skrótom bliżej. Czasem taki powiew
historii ma swój urok i duża część użytkow-
ników korzysta właśnie z tradycyjnych ze-
stawień, które już po kilku próbach wydają

się być o wiele wygodniejsze. Do poruszania
się po tekście w pionie służą klawisze J (dół)
i K (góra), natomiast aby przemieszczać się
kursorem w linii, czyli w poziomie używamy
H (lewo) i L (prawo). Jeżeli przyjrzymy się
ich ułożeniu na klawiaturze, spostrzeżemy, że
układ taki jest przemyślany i sensowny. Waż-
ną rzeczą, o której należy pamiętać jest wyj-
ście z trybu wprowadzania tekstu przed sto-
sowaniem tych klawiszy do poruszania się po
tekście (klawisz [Esc]). Czasami jednak po-
ruszanie się po długim pliku znak po znaku
jest uciążliwe, zwłaszcza jeśli np. musimy się
dostać do n-tego wyrazu, aby go zamienić na
inny. Znacznie wygodniej jest w takim wy-
padku przemieszczać się słowami. Aby prze-
skakiwać słowa do przodu korzystamy z kla-
wisza W (ang. word), natomiast w tył poru-
szamy się klawiszem B (ang. back word).
Jest to bardzo wygodny i przede wszystkim
szybki sposób na pokonywanie długich frag-
mentów tekstu. Może się jednak okazać, że
w przypadku plików wielostronicowych
i ta metoda jest zbyt wolna. Co wtedy ro-
bić? Przewijać tekst całymi ekranami. Dzię-
ki tej technice będziemy mogli przeskakiwać
naprawdę duże partie tekstu. Dzięki skróto-
wi [Ctrl+F] (ang. forward) jesteśmy w sta-
nie przełączać kolejne ekrany w przód, na-
tomiast używając skrótu [Ctrl+B] (ang. bac-
kward
) powracamy do wcześniejszych. A co
z [Home] i [End]? Ich odpowiednikami są
klawisze 0 oraz $ (czyli [Shift+4]). Pierwszy
z nich przenosi na początek tekstu lub aka-
pitu, natomiast drugi analogicznie na koniec.
Istnieje jednak możliwość przemieszczenia
się na początek np. akapitu, w miejsce znaj-
dujące się za pierwszą spacją lub tabulatorem.
Jest to polecenie rzadziej stosowane, jednak
nadal funkcjonujące. Wystarczy użyć skrótu
[Shift+6]. Vim został napisany w dużej mie-
rze jako edytor programistyczny. Co za tym
idzie, twórcy zadbali aby było to wygodne
środowisko pracy dla programistów. Nawet
takie czynności jak poruszanie się po tekście
zostały odpowiednio wzbogacone przydatny-
mi dla nich funkcjami. Przykładem jest wy-
posażenie Vima w możliwość przeskakiwania
do linii kodu znajdujących się pod wskazany-
mi numerami. Ponieważ edytor ten umożli-
wia także numerowanie poszczególnych linii,
sprawia to, że programista znając położenia
interesujących go fragmentów pisanego kodu,
może w prosty sposób przemieszczać się po-
między nimi. Dzięki temu omija konieczność
przewijania całości. Proces ten nie jest skom-
plikowany i ogranicza się jedynie do podania
numeru linii, która nas interesuje oraz wci-
śnięcia kombinacji [Shift+G].

Tabela 1.

Skróty, których znajomość jest niezbędna do swobodnej pracy z programem.

Skrót

Działanie

H (analogicznie – strzałka w lewo)

Przesuwa kursor w lewą stronę

L (analogicznie – strzałka w prawo)

Przesuwa kursor w prawą stronę

K (analogicznie – strzałka do góry)

Przesuwa kursor do wyższej linii

J (analogicznie – strzałka w dół)

Przesuwa kursor do linii poniżej

0 (odpowiednik klawisza [Home])

Ustawia na początku akapitu lub strony

$ (odpowiednik klawisza [End])

Ustawia na końcu akapitu lub strony

[Esc]

Przełącza program w tryb poleceń

W

Przeskakuje o jedno słowo do przodu

B

Przeskakuje o jedno słowo wstecz

[Ctrl+F]

Pokazuje kolejny ekran

[Ctrl+B]

Pokazuje poprzedni ekran

X (odpowiednik klawisza [Delete])

Kasuje zaznaczone znaki lub znaki znajdujące się za
kursorem

[Shift+X] (odpowiednik klawisza [Backspace]) Kasuje znak poprzedzający kursor
DD

Kasuje cały wiersz

[D+$]

Kasuje wiersz od miejsca, w którym znajduje się kursor

[D+^]

Kasuje znaki od miejsca, w którym znajduje się kursor do
początku linii

U

Cofa wprowadzone zmiany

[Ctrl+R]

Ponawia cofnięte zmiany

Y (odpowiednik [Ctrl+C])

Kopiuje zaznaczenie

P (odpowiednik [Ctrl+V])

Wkleja zawartość rejestru

:w

Zapisuje zmiany

!

Wymusza wykonanie polecenia

:q

Wychodzi z programu

/ fraza

Wyszukuje frazę do przodu

? fraza

Wyszukuje frazę do tyłu

N

Przechodzi do kolejnej odnalezionej frazy

[Shift+N]

Przechodzi do wcześniej odnalezionej frazy

background image

18

Dla początkujących

Vim – konkurent prawie doskonały!

styczeń 2009

19

Dla początkujących

Vim – konkurent prawie doskonały!

www.lpmagazine.org

Kolejnym krokiem jest manipulowanie

zawartością pliku oraz samym plikiem. Mam
tu na myśli nie tylko takie operacje jak wy-
cinanie, wklejanie, czy kopiowanie fragmen-
tów tekstu, ale również otwieranie i zapisy-
wanie plików. Zacznijmy jednak od edycji
danego pliku, np. Test.txt. Najczęściej wy-
gląda to w taki sposób, że w konsoli urucha-
miamy program Vim wraz ze ścieżką do od-
powiedniego pliku, który chcemy edytować.
Istnieje jednak możliwość wczytania pliku do
programu bez konieczności ponownego uru-
chamiania. Umożliwia to funkcja find. Aby
przyspieszyć wyszukiwanie możemy podać
kompletną ścieżkę do istniejącego pliku (lub
tworzonego). Jeżeli chcemy otworzyć (utwo-
rzyć) np. plik ~/Test.txt w trybie poleceń wpi-
sujemy

:find ~/Test.txt

. Może się jednak

zdarzyć, że operacja zakończy się błędem,
a edytor poinformuje o konieczności aktu-
alnej wersji innego, edytowanego wcześniej
pliku. Tu mamy dwie możliwości. Pierwsza
to zapisanie zmienionych danych i próba po-
nownego otworzenia pożądanego pliku, na-
tomiast druga to tzw. wymuszenie na pro-
gramie danej operacji. Robimy to dodając
do polecenia znak wykrzyknika. Jeżeli roz-
każemy Vimowi wykonanie polecenia

:find!

~/Test.txt

to bez względu na stan zapisu

otwartego aktualnie dokumentu, zostanie on
zamknięty, natomiast edytor otworzy wska-
zany przez nas dokument. Może się zdarzyć,
że nie będziemy chcieli zapisywać dopisane-
go fragmentu pliku, a chcielibyśmy wczytać
ponownie jego zawartość, lub mówiąc pro-
ściej odświeżyć zawartość bez zapisywania
nowych fragmentów. Wpisujemy w trybie
poleceń

:edit

lub

:edit!

.

Skoro udało nam się edytować plik, zo-

baczmy co Vim potrafi zrobić z jego zawar-
tością. Poza pisaniem, wklejaniem i kopio-
waniem tekstu, najczęściej wykonywaną
operacją jest kasowanie. Oczywiście może-
my korzystać z takich klawiszy jak [Delete]
i [Backspace], jednak nie są to standardo-
we skróty w przypadku Vima. Odpowiedni-
kiem [Delete] jest X, natomiast [Backspace]
zastępuje [Shift+X]. Na czym więc polega
różnica? Otóż pierwsze ze wspomnianych
działają w trybie wprowadzania tekstu. Aby
skasować znaki za pomocą standardowych
zestawień Vima musimy najpierw przejść do
trybu poleceń ([Esc]), ustawić kursor w od-
powiednim miejscu, a następnie skorzystać
z odpowiadającego naszym potrzebom skró-
tu. Twórcy programu zadbali o jego funkcjo-
nalność. Jeśli chcemy usunąć większą ilość
znaków, możemy to zrobić na kilka sposo-
bów. Dla skasowania np. 10 znaków w miej-

scu, w którym znajduje się kursor wpisuje-
my 10, a następnie korzystamy z odpowia-
dającego nam skrótu (X usunie 10 znaków
znajdujących się za kursorem, a [Shift+X]
te które są przed kursorem). Jest to bardzo
dobra funkcja, jednak w przypadku pracy
na długich tekstach nieco uciążliwa. Trud-
no bowiem liczyć znaki, które chcielibyśmy
usunąć. Jeśli zależy nam na kasowaniu ca-
łych wierszy, to znacznie praktyczniejszym
poleceniem jest DD. Wydane w trybie po-
leceń kasuje cały wiersz, w którym znaj-
duje się kursor. Istnieje także możliwość
usuwania kilku wierszy jednocześnie. Wy-
starczy polecenie DD poprzedzić liczbą
oznaczającą ilość wierszy. To jednak nie
wszystko! Ilość dostępnych poleceń ofe-
rowanych przez Vima jest tak ogromna, że
trudno o wszystkich pamiętać. Bardzo przy-
datnym poleceniem jest np. zestawienie
[D+$]. Efektem jego działania jest usunięcie
tekstu od znaku, na którym znajduje się kur-
sor, aż do końca linii. Stosując [D+Shift+6],
możemy skasować tekst od danego znaku
do początku linii. A co jeżeli się pomyli-
my i chcemy cofnąć lub ponowić zmiany?
Każdy edytor tekstu na wysokim poziomie
(a Vim do takich właśnie należy) oferuje takie
funkcje. Aby cofnąć wprowadzone zmiany
używamy klawisza U (ang. undo), natomiast
jeżeli chcemy je ponowić [Ctrl+R] (ang. re-
do
). Ogromnym plusem jest to, że zarówno
cofanie, jak i przywracanie może być wy-
konywane wielokrotnie. Oznacza to, że mo-
żemy cofać nie tylko ostatnie zmiany, ale
również te wcześniejsze. Identycznie wyglą-
da sytuacja przywracania. A co z kopiowa-
niem i wycinaniem? W przypadku Vima nie
mamy do czynienia z dobrze znanym każde-
mu schowkiem. Tutaj dane są umieszczane
w tzw. rejestrach, które w rzeczywistości są
równoznaczne ze schowkami. Użytkownik
ma do dyspozycji dwadzieścia sześć reje-
strów oznaczonych kolejno literami alfabetu
oraz jeden domyślny. Tak naprawdę jest ich
znacznie więcej, jednak są to tzw. rejestry
specjalnego przeznaczenia, których raczej
nie używamy. Kopiowanie nie jest już tak
proste jak opisane wyżej operacje. Istnie-
je kilka metod jednak najwygodniejszą jest
modyfikacja pliku konfiguracyjnego w ta-
ki sposób, aby możliwe było znane wszyst-
kim zaznaczanie z użyciem klawisza [Shift].
Na początek otwieramy plik ~/.vimrc. Tam
dopisujemy linię

set keymodel=startse-

l,stopsel

. Dzięki niej będziemy mogli za-

znaczać trzymając wciśnięty klawisz [Shift]
i posługując się strzałeczkami lub przedsta-
wionymi już w tekście skrótami alfanume-

rycznymi. Podczas zaznaczania zostaniemy
automatycznie przełączeni w tryb wizualny.
Jest to trzeci z trybów Vima. Po zaznacze-
niu odpowiedniego fragmentu, co nie po-
winno już sprawiać problemów wciskamy
klawisz Y (pozostając w trybie wizualnym).
Nasz tekst znajduje się już w schowku. Aby
wkleić go w odpowiednie miejsce, należy
ustawić kursor, a następnie trybie poleceń
([Esc]) wcisnąć klawisz P (ang. paste). Go-
towe! Można również włączyć obsługę [Ctr-
l+C
] i [Ctrl+P], czyli alternatywną metodę
kopiowania i wklejania. Jednak tradycyjny
sposób Vima daje użytkownikowi znacznie
większe możliwości, ponieważ podczas ko-
piowania może sam kontrolować do jakie-
go rejestru i co jest kopiowane. Sprawia to,
że tak naprawdę można skopiować dwadzie-
ścia sześć fragmentów bez konieczności na-
tychmiastowego wklejania ich w obawie, że
kolejne kopiowania zamaże poprzednie. Je-
śli chcemy skopiować tekst do pierwszego
rejestru, czyli oznaczonego literą a, wyda-
jemy polecenie

a

i wciskamy klawisz Y. Po-

dobnie będzie wyglądać sytuacja z każdym
rejestrem. Różnica będzie jedynie w poda-
wanej nazwie. Celowo nie wspominaliśmy
jeszcze o wycinaniu fragmentów tekstu. Ist-
nieje kilka sposobów na osiągniecie tego ce-
lu. Jednym z nich jest zaznaczenie fragmen-
tu, następnie skopiowanie go i usunięcie.
W ten sposób uzyskamy efekt identyczny
jak w przypadku typowego wycinania. Jeże-
li zależy nam, aby wycinany fragment zna-
lazł się w określonym rejestrze, możemy po-
służyć się poleceniem

aX

, gdzie

a

jest nazwą

konkretnego rejestru, natomiast

X

usuwa

tekst po uprzednim przypisaniu go do okre-
ślonego schowka. Oczywiście tekst musi zo-
stać wcześniej zaznaczony.

Kiedy skończymy pracę z plikiem najczę-

ściej chcemy zapisać jej efekty. Vim oferuje
dwie możliwości zapisywania. Pierwszą jest
wyjście z trybu wprowadzania do trybu pole-
ceń ([Esc]) i wydanie polecenia

:w

. Może się

jednak zdarzyć, że nasz edytor odmówi po-
słuszeństwa i ujrzymy komunikat o błędzie.
Najprawdopodobniej okaże się, że pracowa-
liśmy w nowym dokumencie i np. nie podali-
śmy jego nazwy i ścieżki (

:w ~/Test.txt

).

Jeżeli istnieje inna przyczyna, można wymu-
sić na Vimie zapisanie dokumentu stosując
znak wykrzyknika. Należy jednak przed każ-
dą tego typu operacją dokładnie zastanowić
się jaka była przyczyna wystąpienia ostrzeże-
nia. Z całą pewnością nie jest to metoda zale-
cana i bezpieczna.

W tym momencie nawet użytkownicy,

którzy spotkali się z Vimem pierwszy raz

background image

20

Dla początkujących

Vim – konkurent prawie doskonały!

styczeń 2009

21

Dla początkujących

Vim – konkurent prawie doskonały!

www.lpmagazine.org

są w stanie z niego korzystać. Wiemy czym
są tryby, potrafimy otwierać, zamykać i mo-
dyfikować zawartość plików. W dalszej czę-
ści artykułu zajmiemy się metodami prze-
szukiwania tekstu, a także nauczymy się jak
sprytnie można podmieniać jego określone
fragmenty. Jest to zagadnienie na tyle istot-
ne, że zasłużyło na umieszczenie go w od-
dzielnym akapicie.

Szukaj a znajdziesz

Trudno wyobrazić sobie pracę z jakimkol-
wiek tekstem bez możliwości przeszukiwa-
nia treści, wyszukiwania określonych zwro-
tów i słów. Mechanizm ten został w Vimie
bardzo skrupulatnie przemyślany i zaplano-
wany. Twórcy zadbali o dopracowanie de-
tali związanych między innymi z wyszuki-
waniem i zastępowaniem wyrażeń. Dzięki
temu edytor ten stał się potężnym konkuren-
tem dla dedykowanych środowisk programi-
stycznych, takich jak np. Eclipse czy Anjuta.
Vim został wyposażony w umiejętność ope-
rowania nie tylko na zwykłych fragmentach
tekstu, ale także na maskach, podobnych do
tych, które są dostępne w konsoli.

Jeżeli chcemy wyszukać jedynie jakiś

wyraz lub określone zestawienie wyrazowe,
wystarczy w trybie poleceń wpisać znak

/

,

a następnie poszukiwany tekst. Teraz wystar-
czy zaakceptować klawiszem [Enter] i jeśli
Vim odnajdzie szukany zestaw zostanie on
odpowiednio oznaczony i wskazany kurso-
rem. W tym przypadku przeszukiwanie do-
kumentu odbywa się w kierunku jego koń-
ca. Warto jednak wspomnieć w jaki sposób
możemy przeskakiwać do kolejnej pasującej
wartości, bez potrzeby ponownego wydawa-

nia polecenia. Recepta jest prosta. Aby prze-
nieść się do kolejnej pozycji, poruszając się
w kierunku końca pliku wystarczy użyć skró-
tu klawiaturowego N, natomiast w celu poru-
szania się ku początkowi [Shift+N]. Jeśli szu-
kany fragment tekstu znajduje się przed ak-
tualną pozycją kursora, zamiast

/

wydajemy

polecenie

?

, po czym wpisujemy pożądany

tekst. Dzięki temu Vim będzie przeszukiwał
plik wstecz. Metody te pozwalają na wygod-
ną pracę z programem. Jeżeli jednak zależy
nam na sprecyzowanym wyszukiwaniu, nie-
zbędne jest podanie dodatkowych parame-
trów. Są to tzw. wyrażenia regularne. Dzię-
ki nim edytor jest w stanie odnaleźć nie tylko
podane wyrażenia, ale również wszystkie po-
krewne, które spełniają podane warunki.

Czym jest wyrażenie regularne? Uogól-

niając, najczęściej jest to ciąg znaków okre-
ślający, że inne ciągi znaków spełniają jego
założenia. Najprymitywniejszą formą takie-
go ciągu jest oczywiście pojedynczy wyraz,
który sam w sobie stanowi określony ze-
staw. Dla słowa Linux, jedynym pasującym
ciągiem będzie Linux. W ten sam sposób
Vim będzie analizował każdy inny wyraz,
podany jako ciąg do wyszukania. Można
jednak uściślić parametry przeszukiwania
tekstu. Najpopularniejszymi parametrami
są gwiazdka, znak zapytania oraz znak plus.
Choć wygląda to na bardzo skomplikowa-
ne, w rzeczywistości takie nie jest. Mijałoby
się to z celem developerów, ponieważ celem
który im przyświecał było właśnie uprosz-
czenie pracy z tekstem. Zaczniemy od zna-
ku gwiazdki zestawionego z danym cią-
giem. Jeśli umieścimy go np. za literą a (

a*

),

okaże się, że Vim odnajdzie wszystkie ciągi

rozpoczynające się tym znakiem. Będzie to
zarówno pojedyncza litera a, jak i ananas.
Istnieje również możliwość łączenia kilku
parametrów w jednym poleceniu. Dla zesta-
wienia

r*z

, wynikiem będą wszystkie lite-

ry z oraz rz danego ciągu. Znacznie prościej
wygląda sytuacja z pytajnikiem. Dla zesta-
wienia

mż?awka

zostaną znalezione zarówno

wyraz mżawka, jak i ciąg, w którym znajdu-
je się zbiór awka, np. ławka. W ten sposób
możemy wyszukać określone zbitki zbiory
znaków. Czasem jednak jeden parametr to
zbyt mało i niezbędne jest dołączenie ko-
lejnych. Do tego właśnie służy trzecie ze
wspomnianych wyrażeń regularnych, czyli
znak plusa. Jak łatwo się domyśleć powodu-
je on połączenie minimum dwóch ciągów, w
taki sposób, aby uściślić krąg odnalezionych
elementów. Dla zbioru aaaabbcc aacc aab-
bcc
warunek wyszukiwania aa+bbcc zosta-
nie spełniony jedynie dla pierwszego i ostat-
niego ciągu. A gdybyśmy chcieli znaleźć je-
den z dwóch ciągów spełniających określo-
ny warunek? Możemy posłużyć się znakiem
| ([Shift+\]). Oznacza on, że Vim ma odna-
leźć wyraz stojący przed nim lub za nim.
Bardzo interesujący efekt daje wyszuki-
wanie z użyciem nawiasów kwadratowych.
Określają one pewną klasę, na bazie której
znajdowane są określone znaki. W klasach
takich litera lub cyfra określają same siebie,
natomiast minus oznacza zakres całej opera-
cji. Przykładem może być

[a-d]

oznaczają-

cy, że szukany znak musi mieścić się w ra-
mach zakresu od a do d, czyli może to być
zarówno a jak i b, c i d. Aby Emacs odnalazł
znak minusa, należy umieścić go na począt-
ku definiowanej klasy. Dzięki zastosowaniu
tej metody możemy np. odnaleźć 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 odnaleźć 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
w stanie wyeliminować z wyszukiwania

Rysunek 2.

Vim po zastosowaniu wybranego schematu kolorów (tu: impact)

background image

20

Dla początkujących

Vim – konkurent prawie doskonały!

styczeń 2009

21

Dla początkujących

Vim – konkurent prawie doskonały!

www.lpmagazine.org

np. wszystkie samogłoski (

[^aeiouyAEIO-

UY]

). Dla wyrażeń skomplikowanych bar-

dzo przydatne okazują się nawiasy okrągłe.
Ich zadaniem jest zespolenie w jedną całość
określonych fragmentów danego polecenia.
Doskonale komponują się z omówionymi
wcześniej wyrażeniami regularnymi np. +.
Jeżeli napiszemy

(abcd)+

, Emacs odnajdzie

wszystkie ciągi abcd, abcdabcd itd.

Nie wspomnieliśmy jeszcze o trzech

godnych uwagi funkcjach. Bardzo często
niezwykle przydatne są nawiasy klamrowe.
Podobnie jak nawiasy kwadratowe, również
określają zbiór. Różnica polega na tych, że
na zewnątrz, czyli poza nawiasem występu-
je zawsze dodatkowy parametr, np. wyraże-
nie

a{5-10}

zaowocuje tym, że litera a zo-

stanie odnaleziona tylko wtedy, jeżeli bę-
dzie powtórzona od 5 do 10 razy. A co, jeśli
interesuje nas konkretny znak, ale jedynie
w momencie, jeśli znajduje się on na począt-
ku linii? I na to znajdzie się rada. Wystarczy,
że przed poszukiwanym znakiem wstawimy
znany nam już

^

, czyli tzw. daszek. Dla wy-

rażenia

^lucas

, zostaną odnalezione słowa

lucas, ale tylko te, które znajdują się na po-
czątku linii. Analogicznie przeciwnym para-
metrem jest znaczek

$

, czyli dolar.

Poznaliśmy najpopularniejsze metody wy-

szukiwania w Vimie. Oczywiście bardzo czę-
sto łączy się je w celu uzyskania lepszej efek-
tywności i precyzyjności. Dla początkujących
użytkowników, z całą pewnością wystarczą
przedstawione powyżej.

Wszystko po swojemu

Po zainstalowaniu Vima jest on już w pew-
nym stopniu skonfigurowany. To jednak
żadna przyjemność korzystać z gotow-
ców, które nie zawsze rozumiemy. Naj-
lepszą konfiguracją programu jest ta, któ-
rą sami stworzymy, ponieważ dopasuje ona
edytor do naszych potrzeb, np. ustawi kolo-
rowanie dla języka programowania, którego
używamy. Najlepszym pomysłem jest stwo-
rzenie katalogu Vim w katalogu domowym.
Dzięki temu zachowamy większy porzą-
dek, ponieważ wszystkie dodatkowe pliki
będą umieszczone w jednym miejscu. Dla-
czego jest to takie ważne? Ponieważ dla Vi-
ma stworzono mnóstwo rozmaitych dodat-
ków, w które po pewnym czasie zapewne
każdy będzie chciał wyposażyć swój edy-
tor. Doskonałym przykładem jest cvim, ale
o tym za chwilę. Wróćmy jednak do na-
szego pliku konfiguracyjnego. Kiedy ma-
my już odpowiedni katalog, tworzymy no-
wy plik – vimrc. To właśnie w nim znajdują
się wszystkie ustawienia dotyczące wyglą-

du i działania programu. Aby lepiej zrozu-
mieć w jaki sposób można samemu skonfi-
gurować Vima, omówimy przykładowy plik
konfiguracyjny.

Na początek warto wyłączyć kompa-

tybilność ze starszym edytorem Vi. Dzię-
ki temu uzyskamy kilka bardzo przydat-
nych funkcji, takich jak chociażby porusza-
nie się po tekście za pomocą kursora. Aby
tego dokonać, wystarczy w pliku konfigu-
racyjnym dopisać

set nocompatible

. Te-

raz najważniejsza część dla każdego pro-
gramisty. Ustawimy kolorowanie skład-
ni kodu (bez tego trudno mówić o jakim-
kolwiek komforcie podczas pisania progra-
mów) oraz skróty pozwalające na zapisywa-
nie i kompilowanie kodu za pomocą dwóch
klawiszy. Zanim jednak przypiszemy okre-
ślony zestaw kolorów, należy włączyć opcję
syntax on, dzięki której operacja ta będzie
możliwa. Zestawienie zawierające informa-
cje o kolorach zawsze zapisane jest w od-
dzielnym pliku z rozszerzeniem *.vim. Na-
szym zadaniem jest jedynie umieszczenie
takiego gotowca w katalogach programu,
np. /usr/share/vim/vim71/colors. Po zain-
stalowaniu Vima, w katalogu tym znajduje
się kilka ciekawych propozycji koloryzują-
cych składnię. Warto poeksperymentować
i wybrać ten, który nam najlepiej odpowia-
da i przede wszystkim najmniej męczy na-
sze oczy. Do przypisania danego tematu słu-
ży polecenie:

colorscheme impact

, gdzie

impact

jest przykładem gotowego motywu.

Warto również wspomnieć o możliwości pa-
rowania nawiasów, czyli podświetlania np.
otwierającego podczas pisania zamykające-
go. Efekt ten (bardzo pomocny) uzyskamy
dopisując do ~/.vimrc linię

set showmatch

.

I gotowe! Od tej pory Vim jest prawie przy-
gotowany do programowania. Dlaczego
prawie? Ponieważ w tym momencie, aby
skompilować program będziemy musie-
li wpisywać niewygodne polecenia. Można
jednak temu zaradzić. Jeżeli chcemy kompi-
lować kod napisany w Pascalu, dopisujemy
dwie linie, które określają typ pliku, kom-
pilator oraz skrót, którego będziemy uży-
wać (Listing. 1). Teraz wystarczy nacisnąć
klawisz [F6] aby Vim uruchomił kompila-
tor dla Pascala. W identyczny sposób mo-
żemy przypisać skróty dla innych języków
programowania. A w jaki sposób przypisać
skrót np. [F2] zapisujący zmiany w pliku?
Właściwie jest to okrojona wersja polece-
nia, które zostało użyte w powyższym przy-
kładzie. W pliku konfiguracyjnym dopisuje-
my

imap <F2> <C-O>:w<CR>

oraz

map <F2>

:w<CR>

. Analogicznie do tego przykładu

można utworzyć mnóstwo innych użytecz-
nych skrótów, w zależności od tego jakie są
najczęściej wykorzystywane.

Na zakończenie skonfigurujemy opcje,

pozwalające na sprawdzanie pisowni. Zanim
jednak do tego przejdziemy należy zainsta-
lować pakiet vim-spellfiles-pl, który powi-
nien znajdować się w większości dystrybu-
cji. W pliku ~/.vimrc wskazujemy język, któ-
ry ma zostać uwzględniony podczas spraw-
dzania oraz skrót uruchamiający sprawdzają-
cy skrypt (Listing. 2).

Vim jest już gotowy do pracy. Aby wczy-

tać nowy plik konfiguracyjny, należy urucho-
mić program z opcją

-u

, podając po niej ścież-

kę do nowych ustawień. Oczywiście moż-
liwości manipulacji konfiguracją edytora są
ogromne. Setki dodatków znajdujących się
w Internecie (np. http://www.vim.org/scripts/
index.php
) sprawiają, że Vim jest pretenden-
tem do zajęcia pierwszego miejsca na arenie
najlepszych edytorów na świecie.

Wyrok

Vim jest doskonały rozwiązanie dla osób,
które wymagają od swojego edytora, aby
pracował na najwyższych obrotach nie tracąc
przy tym na funkcjonalności. Każda osoba
zajmująca się programowaniem już po krót-
kim użytkowaniu zauważy zalety i olbrzymi
potencjał tego programu. Nie jest to co praw-
da środowisko programistyczne, jednak po
niewielkich modyfikacjach pliku konfigura-
cyjnego, doskonale może je zastąpić. Do-
datkowym atutem Vima jest jego konfiguro-
walność. To ona sprawia, że popularność te-
go edytora nieustannie rośnie. Jedynym pro-
gramem tego typu, który może zagrozić Vi-
mowi, jest Emacs. Trudno rozstrzygnąć, któ-
ry z nich jest lepszy, czy wygodniejszy. Są
to dwa całkowicie odmienne edytory, ofe-
rujące jednak te same możliwość. Nie nale-
ży rezygnować z chęci poznawania nowego,
na rzecz pamięciożernych i wolnych środo-
wisk programistycznych. Nauka obsługi Vi-
ma lub Emacsa z całą pewnością zaowocu-
je w przyszłości. Zapoznaj się z tymi edyto-
rami – warto!

Autor jest dziennikarzem, którego pasją sta-
ło się programowanie (C/C++, Java, Pascal,
Qt, Gtk+) oraz systemy spod znaku pingwi-
na (Slackware, Debian).
Kontakt z autorem:
lucas.ciesielski@gmail.com

O autorze


Wyszukiwarka

Podobne podstrony:
2009 01 Firewall w Linuksie [Poczatkujacy]
2009 01 Firewall w Linuksie [Poczatkujacy]
choroby trzustki i watroby 2008 2009 (01 12 2008)
2009 01 Analiza powłamaniowa
2009 01 testy odpowiedzi
[2009-01-20] MIKROEKONOMIA - Kolokwium 2 v2, mikro, Mikroekonomia, Ćwiczenia, Ściągi na kolokwia, [2
2009 01 rozszODP (2)
.SIMR-ALG1-EGZ-2009-01-30b-rozw
[2009-01-20] MIKROEKONOMIA - Kolokwium 2, mikro, Mikroekonomia, Ćwiczenia, Ściągi na kolokwia, [2009
2009 01 07
bik 04 2009 01 art
2009 01 podstODP POZNAN
2009 01 The Naked Wiki

więcej podobnych podstron