VIM dla poczâtkujâcych.

"Vi suxx; jest to edytor chory i nieprawdopodobnie gîupi... skîadnia jego poleceï i klawiszologia jest gorsza niû w jakimkolwiek innym produkcie czyjejkolwiek chorej wyobraúni" - potoczna opinia o VI

"W dobie kart s3 i GUI uûywanie vi jest chorobâ, którâ powinno sië leczyê" - inna potoczna opinia

Edytor tekstów vim jest nieco ulepszonâ (wprowadzono uzupeînianie nazw plików po naciôniëciu klawisza TAB i kilka istotnych uîatwieï) wersjâ edytora vi, standardowego edytora dla systemów unixowych. Dla typowego amigowca vim wydaje sië byê caîkowitym przeûytkiem - odpala sië w okienku shella, nie ma ûadnych rozwijanych menu i na dodatek cechuje sië [pozornie] mocno zawikîanâ skîadniâ komend. Zgadza sië, vim nie jest edytorem "przyjaznym dla uûytkownika" - "przyjaznoôê" jest ostatniâ rzeczâ, o którâ moûna go posâdziê. Po co wiëc opis takiego dziwadîa? Bo vim posiada pokaúne moûliwoôci, których nie ma ûaden z popularnych amigowych edytorów.

Jak wyglâda praca z vim-em? Po pierwsze, trzeba sobie wbiê do gîowy, ûe edytor pracuje zasadniczo w dwóch trybach - w trybie wstawiania tekstu i w trybie komend. Przejôcie do trybu komend nastëpuje po naciôniëciu klawisza ESC. Kiedy juû sië zaîapiemy róûnicë miëdzy trybem komend a trybem wstawiania tekstu, nic nie jest w stanie nas zaskoczyê. [Ûeby dobrze zrozumieê, co moûe sië staê, kiedy zacznie sië wpisywaê tekst bez przejôcia do trybu wstawiania, wystarczy wczytaê dowolny plik i np. wpisaê swoje imië i nazwisko, przy uûyciu duûych i maîych liter... I potem nacisnâê ESC, dwa razy (dla pewnoôci), i wpisaê :q!, ûeby wyjôê z edytora bez zapisywania zmian w pliku ;^)] Aby przyzwyczaiê sië do pozornie dziwacznych "narowów" edytora, dobrze jest zaczâê pracë od wczytania pliku "tutorial" i postëpowania zgodnie ze wskazówkami tam zawartymi.

Ale wróêmy do zalet edytora, tak wychwalanych, a nie wspomnianych jeszcze sîowem :). Vi (a co za tym idzie i vim) posiada znakomicie skonstruowany mechanizm wyszukiwania i zamiany tekstów, podczas których to operacyj moûna stosowaê niezwykle rozbudowane wyraûenia regularne... Moûna na przykîad przeksztaîciê do czystego ASCII dokument w HTML-u lub AmigaGuide, tylko przy pomocy _jednej_ operacji wyszukiwania i zamiany. Moûna zdefiniowaê dowolnâ czynnoôê (lub sekwencjë znaków, w szczególnoôci sekwencja moûe skîadaê sië z jednego znaku) dla kaûdego klawisza, moûna zdefiniowaê wîasne skróty, które bëdâ rozwijane bezpoôrednio po wpisaniu. Przykîadowe makra pozwolâ sië zorientowaê, co moûna zrobiê przy jego pomocy (np. rozwiâzaê problem wieû Hanoi ;^) - to nie ûart, sprawdúcie sami...) VIM do tych moûliwoôci doîoûyî jeszcze uzupeînianie nazw poleceï (po przejôciu do trybu ex, i.e. wpisaniu dwukropka i fragmentu nazwy polecenia wystarczy wcisnâê <tab> i nazwa nam sië uzupeîni sama) i plików (teû trzeba wcisnâê tab, tylko ûe po poleceniu zapisania [:w] lub odczytania [:ed] pliku), wielopoziomowe undo i zapamiëtywanie definiowalnej liczby ostatnio wykonanych poleceï. Edytor ten ma jeszcze jednâ zaletë: jest caîkowicie przenaszalny. Moûna sië naï natknâê na wszystkich praktycznie systemach, kompiluje sië na kaûdym praktycznie unixie, sâ wersje dla MS-DOS, 16- i 32-bitowych windoze, OS/2 i WinNT. Oznacza to, ûe nawet jeôli jesteômy zmuszeni pracowaê na róûnych systemach, nie musimy kîopotaê sië o róûnice miëdzy nimi - vim jest wszëdzie.

Standardowe rozkazy edytora vi sâ jednoznakowe i zawierajâ sië w zbiorze znaków [a-zA-Z], naleûy odróûniê maîe litery od duûych (np. rozkaz 'a' powoduje przejôcie do wstawiania tekstu o jeden znak na prawo od kursora, zaô 'A' - dopisywanie tekstu na koïcu linii). W vi jest wbudowany inny edytor, zwany ex. Jego polecenia rozpoczynajâ sië z kolei od dwukropka (np. polecenie wyszukiwania i zamiany, :s/hrabia/diuk/). Jasne? Nie, prawda? :) Na szczëôcie dla poczâtkujâcego uûytkownika vim posiada dosyê wyczerpujâcy help, dostëpny (jeôli zainstalowano program prawidîowo) po wciôniëciu klawisza <Help> lub wpisaniu komendy :help.

Wróêmy zatem do podstawowych komend. Pierwszâ rzeczâ, jakiej bëdziemy musieli sië nauczyê, jest poruszanie sië po dokumencie. W VIM-ie uûywa sië do tego klawiszy 'h', 'j', 'k' i 'l' (odpowiednio: góra, lewo, prawo, dóî).

                      ^
                      h

              < j           k >

                      l
                      v

[na amidze i wiëkszoôci innych komputerów moûna poruszaê sië po tekôcie przy pomocy kursorów, ale moûe zdarzyê sië Wam dziwny terminal, który nie bëdzie miaî nawet klawiszy kursora - lepiej wiëc uczyê sië od poczâtku...]

Oczywiôcie moûna wpisaê dowolnâ liczbë przed wciôniëciem któregoô z opisanych znaków, spowoduje to przeniesienie o odpowiedniâ liczbë kolumn lub wierszy we wskazanym kierunku.

Aby wyjôê z edytora, naleûy wcisnâê <ESC> (aby wyjôê z trybu wstawiania lub upewniê sië, ûe jesteômy w trybie komend) i wpisaê:

:q!

Spowoduje to wyjôcie z edytora bez zapisywania czegokolwiek (nawet, jeôli dokonaliômy jakichô zmian - wymusza to wykrzyknik po nazwie komendy). Ûeby wyjôê zapisujâc jednoczeônie bieûâcy dokument, naleûy wpisaê:

:wq

Poniewaû wszyscy juû zdâûyli sië zniechëciê do vim-a, tych nielicznych, którzy dotarli do tego zdania zapraszam na maîy kurs pod tytuîem

"Jak przeûyê pierwsze kilka spotkaï z vi"

Dajmy na to, ûe mamy uruchomiony shell. Wpisujemy vim i cóû widzimy? Tytuî okienka zmienia sië na "VIM -", zaô w samym oknie widzimy kolumnë tyld (znaków '~'). Znaczy to, ûe dokument jest pusty.

Zwykle tak bywa, ûe zaraz po uruchomieniu edytora znajdziemy sië w trybie komend (moûemy zaûyczyê sobie uruchamiania edytora w trybie wstawiania tekstu umieszczajâc odpowiednie polecenie w pliku konfiguracyjnym). Aby przejôê do wstawiania tekstu, trzeba wcisnâê 'i' (od 'insert').

np.

iJacek i Agatka albo inne zîe opowieôci

spowoduje, ûe:

1) przejdziemy do trybu wpisywania komend

i

2) na ekranie znajdzie sië tekst:

"Jacek i Agatka albo inne zîe opowieôci"

Wiemy juû, jak mamy sië poruszaê po edytowanym przez nas tekôcie, potrafimy wejôê do trybu wstawiania znaków, ba, potrafimy wyjôê z edytora nie czyniâc szkody edytowanemu tekstowi. Moûemy wiëc spróbowaê czegoô bardziej interesujâcego ;^)

Kaûdâ komendë vi moûna poprzedziê liczbâ, która spowoduje "zwielokrotnienie" efektów danej komendy. Wpisanie np.

10l
przeniesie kursor o dziesiëê znaków w lewo, zaô

20j
spowoduje skok o dwadzieôcia linijek w dóî.

Moûna oczywiôcie poruszaê sië wiëkszymi skokami, sîuûâ do tego takie polecenia jak 'w' (skok o jeden wyraz w prawo, zatrzymuje sië takûe na znakach przestankowych), 'W' (skok do poczâtku nastëpnego wyrazu). Analogicznie funkcjonujâ polecenia 'b' i 'B', skaczâ jednak o sîowo do tyîu. Dziaîanie wszystkich poleceï moûna oczywiôcie zwielokrotniê, wciôniëcie np.

4B
spowoduje skok o cztery sîowa do tyîu.

Do innych przydatnych komend naleûâ '0' - skok na poczâtek wiersza, '$' - skok na koniec wiersza, '^' - skok do pierwszego znaku w linii (z wyîâczeniem tabów i spacji), '(' - skok do poczâtku zdania i ')' - skok do poczâtku nastëpnego zdania...

Kiedy zechcemy coô poprawiê, a nie znajdujemy sië w trybie wstawiania, moûemy zechcieê do niego przejôê. Sîuûâ do tego cztery polecenia: 'i' - powoduje wstawianie tekstów "przed kursorem", 'I' - na poczâtku linii, 'a' (oczywiôcie od 'append' - doîâcz) - jeden znak za kursorem, 'A' - przenosi na koniec linii. Aby wyjôê z trybu wstawiania tekstu naleûy oczywiôcie wcisnâê <ESC>.

Do usuniëcia pojedynczego znaku uûywamy klawisza 'x' (usuniëcie znaku na pozycji kursora, czyli tak jak 'Del') lub 'X' (dziaîa tak jak BackSpace). Efekt polecenia moûna zwielokrotniê przez poprzedzenie go liczbâ znaków do usuniëcia.

Do zamiany jednego znaku na inny sîuûy polecenie 'r'. Wciôniëcie 'r' i dowolnego znaku spowoduje zamianë znaku pod kursorem. 'r' poprzedzone liczbâ spowoduje zamianë n znaków, od tego pod kursorem poczâwszy. Rozkaz 'R' powoduje przejôcie w tryb nadpisywania - wprowadzany przez nas tekst zastëpuje juû istniejâcy.

W vimie znakomicie funkcjonuje wielopoziomowe undo, moûna przy tym zdefiniowaê liczbë poziomów tego polecenia (w odróûnieniu od dobrze znanych mi CEda i AmiTekstu, które pozwalajâ tylko na przydzielenie konkretnej iloôci pamiëci). Do wywoîania undo sîuûy klawisz 'u'. Do przywrócenia odwoîanej zmiany sîuûy <CTRL-R>.

To tyle, jeôli idzie o podstawowy 'survival guide in vim' ;^), jeôli jeszcze sië nie zniechëciliôcie, zapraszam do eksperymentowania; gdzieô na dysku znajduje sië plik 'tutorial' do vim-a. Powinien on uîatwiê pracë i wyuczyê kilku przydatnych w uûywaniu tego edytora nawyków... jak sië z nim zapoznaê? Najproôciej: vim tutorial.

Jeôli nadal zastanawiacie sië, po jakâ cholerë zaprzâtaê sobie gîowy takim dziwadîem, to trudno - choê zanim ja doszedîem do tego, ûe zaczâîem uwaûaê vi(m) za jeden z najlepszych edytorów tekstów w ogóle, klâîem na niego przez jakieô równe póîtora roku (a musiaîem go uûywaê, bo z unixowych edytorów jedynie emacs go przewyûsza - zarówno pod wzglëdem moûliwoôci, jak i komplikacji obsîugi [o pamiëcioûernoôci nie wspominajâc - wbudowany interpreter lispa to nie przelewki], pico zaô i joe w szybkim tempie wyprowadziîy mnie z równowagi). (A przestaîem klâê mniej wiëcej wtedy, gdy zaczâîem w miarë sprawnie pisaê bezwzrokowo i przy uûyciu dziesiëciu palców.) Powiecie pewnie: "jeszcze jeden unixowy maniak, który uûywa jakichô bzdur, zamiast porzâdnych, amigowych produktów". Cóû, moûe macie racjë. A moûe nie ;->

Gdzie znaleúê to monstrum? Najîatwiej - na aminecie, w katalogu /text/edit/vim4.6bin.lha, albo jakoô tak.

Jubal/Alchemy