Vim, a hatékony fegyver...
"Vim isn't an editor designed to hold its users' hands. It is a tool, the use of which must be learned."
Sokan kérdezik tőlem, hogy miért használom ezt a szövegszerkesztőt, hiszen ez "bonyolult", és mennyi másik van, ami "normális". Ezeknek az embereknek készítem ezt a kis bemutatót. Nem célom, hogy minden részletre kitérő leírást adjak, arra van éppen elég hivatalos leírás, ezekre majd kitérek.
VI, a nagy túlélő...
Történt egyszer, még a 70-es években, hogy Bill Joy úgy érezte, írnia kellene egy szövegszerkesztő programot. Mivel akkoriban nem nagyon voltak olyan berögződések, amik megzavarták volna Bill józan eszét, saját szája íze szerint alakíthatta ki a neki megfelelő eszközt.
Akkor még valószínűleg ő sem gondolta, hogy amit alkot az annyira hasznos, logikus, és kényelmes lesz, hogy az majd sok évvel később is meghatározó szerepet kaphat. Az eredeti VI (visual) egy korai BSD változathoz készült, de annyira bevált, hogy minden Unix rendszer részévé vált, és többféle port, és verzió is készült belőle.
Hirdetés
Ugorjunk kicsit az időben, egészen 1991-ig, amikor is egy Bram Moolenaar nevű úriember megalkotta a saját VI változatát VIM néven, az amiga típusú számítógépek felhasználói számára. Eredeti céljait azonban meglehetősen túlteljesítette, így a Vim a VI minden erényét megtartva, jelentősen ki is bővítette azt, minek eredményeképpen a Vim visszakerült minden rendszerre, leváltva ezzel őseit, és a mai napig hasznos segítőtársként könnyíti meg az életünket azzal, hogy jelentős időmennyiséget takaríthatunk meg a használatával, amit így fordíthatunk valami másra.
Ezen kívül elmondható az is, hogy a Vim mindenhol ott van, bármilyen mai operációs rendszeren megtaláljuk, illetve Windows on nem, de oda feltesszük. :) Szóval miért is olyan jó a Vim?
Vim, portból lettünk...
Az eredeti elképzelés az volt, hogy a szerkesztéshez használt utasítások legyenek leválasztva a szövegbevitelről, ezzel megkönnyítve azok használatát. Ezt úgy érték el, hogy bizonyos váltóbillentyűk használatával lehet ugrani egyikből a másikba. Ez elsőre talán kicsit furcsa lehet, de ha az ember huzamosabb ideig használja, rájön, hogy tényleg rendkívül hasznos. A gyakorlatban ez azt jelenti, hogy amikor belépünk a programba, akkor szerkesztési módban vagyunk, és ilyenkor szoktak az emberek sokkos állapotba kerülni, hiszen hiába villog a kurzor ott ahol máskor is, a gombnyomogatás hasztalan, nem történik semmi.
A pánikroham második fázisában aztán ki akarnak lépni valahogy, de sajnos ez sem sikerül nekik elsőre - terminálban semmiképp -, csak valamilyen drasztikusabb megoldással, aminek az eredménye, hogy többet az életben nem közelítenek ehhez a programhoz... :) De mit is csináltak rosszul? Ha szöveget akarunk írni, akkor először is szövegbeviteli módba kell kapcsolni a programot. Ezt sokféleképpen megtehetjük.
i - mint insert. Ez a kurzor helyén vált beviteli módba.
a - az aktuális karakter után írhatunk.
o - a következő sorba írhatunk.
Ezek a legalapvetőbbek, de van még egy sor másik is. Kilépni egyébként az Esc gombbal lehet, ezzel visszakerülünk szerkesztési módba, de erről még majd később lesz szó. Bonyolult? Annak tűnhet. Itt meg kell jegyeznem, hogy a Vimet leginkább azok fogják tudni gyorsan megtanulni, akik tudnak 10 ujjal gépelni. Vizsgáljuk tehát innen a dolgokat. Ha alapállásban van a kezünk, akkor minden fontosabb alap funkció azonnal kézre esik, "kéz alatt van" mondhatnánk.
Ennek eredményeképpen pedig nem kell állandóan az egér után kapirgálnunk, vagy az alapállástól messzire lévő billentyűket keresgélni, majd visszarakni a kezünket a megfelelő helyre. És itt most nem csak az alap szerkesztési műveletekre kell gondolni. Elképesztően bonyolult dolgokat is meg lehet csinálni viszonylag egyszerűen, pár billentyű lenyomásával. De haladjunk csak szépen sorjában. Azt mondtam, hogy alap dolgokhoz nem kell, hogy mozogjon a kezünk annál többet, mint normál gépelésnél. No, akkor hogyan mozgunk a szövegben?
Hát így:
h - balra egy karakter
l - jobbra egy karakter
j - egy sort le
k - egy sort fel
Aki szemfüles, az láthatja, hogy ez mind a jobb kéz alá tartozó billentyű. Szerkesztési módban ezekkel tudunk navigálni. Természetesen itt is csak az alapokat írtam, hiszen lehet cifrázni is a dolgot, több sort ugrani, oldalt ugrani. Lehet pl szavakon ugrálni előre "w" és vissza "b", file elejére "gg", végére "shift+G", vagy pl. 10 sort le, "10j". (Egyébként Vimnél ha valaki akar, mozoghat kurzorbillentyűkkel is.)
Gyakorlatilag hasonlóképpen működik minden egyéb művelet is, amiket szerkesztési módban, billentyűvel el lehet érni. Van pl. csere funkció "c", amit mondjuk a szavakon ugrálás gombbal kombinálva szót cserélhetünk. "cw". Törölhetünk az "x" gombbal, vagy speciálisabb esetben "d" -vel, amit természetesen szintén kombinálhatunk is. "dw" -re szót töröl, "d$"-re pl. sor végéig töröl adott ponttól (Vimnél a Shift+d -re is ezt teszi) "dd" -re már egész sort. Ezeknek még szorzót is adhatunk, és mondhatjuk neki azt pl., hogy töröljön ki 10 sort. "10dd". Hogy valami extrémebbet is mondjak, pl. a "ci(" kitörli a következő zárójelbe zárt szöveget, és beviteli módba vált, így könnyedén kicserélhetjük annak tartalmát. A rugalmasan kombinálható műveleti utasítások gyakorlatilag lehetőségek végtelen sorát adják arra, hogy az egyszerű "notepad" -os szemlélettel rendkívül körülményes dolgokat elvégezhessük pusztán pár billentyű lenyomásával. Ez pedig nagyon nagy segítség az embernek, ha egyszer beletanult a használatába.
Vim parancsok.
Van, aki így használja. Csak, hogy lássátok, milyen szinten átszabható.
Eddig nem beszéltem a parancsokról, pedig abból aztán van bőven. Mindjárt itt van az egyik legfontosabb kérdés. Hogyan is lehet kilépni a szerkesztőből? :) Szerkesztés módban írjuk be hogy:
:q
Ha nem módosítottunk semmit a file-on, akkor ezzel ki fog lépni. Ha viszont igen, akkor:
:wq
Ha pedig csak simán menteni akarunk, akkor:
:w
file megnyitása
:e
A szemfülesebb olvasók észrevehetik, hogy mindegyiket ":" -al kezdtem. :) Ez azért van, mert a kettőspont jelenti a Vim számára, hogy parancsot akarunk adni neki. Ilyenkor a kurzor a képernyő aljára kerül, és írhatjuk az utasításainkat. Ebből egyébként - mint mondtam - elképesztően sok van, ráadásul kapunk egy nagyon jó, és gyors regexp motort is, ami a szöveg manipuláció egyik, ha nem a legfontosabb eszköze. Pl. az összes felesleges sorvégi szóköz törlése ":%s/\s\+$//". Persze ennél jóval komolyabb szerkesztési műveleteket össze lehet rakni neki.
És ami itt nem szerepel...
A fentiek mind csak apróságok, a Vim tudásának csupán igen kicsi szeletét érintettem velük, de ennél többet nem is akartam. Lett volna még bőven, amiről kellett volna írni, a komplett script nyelvről, a részletesen beállítható billentyű parancsokról, a Gvim -ről ami az ablakos Vim, A beállítási lehetőségekről, amikkel bármilyen igényekhez hozzá lehet szabni a szerkesztőt (vimrc), a harmadik módról (visual) a megjelenéssel kapcsolatos kérdésekről, a pluginekről, a programfejlesztőket segítő eszközökről mint a vimdiff stb .
Ezekről azonban könyvet lehetne írni, és... írtak is.
ftp://ftp.vim.org/pub/vim/doc/book/vimbook-OPL.pdf
A www.vim.org -on tanulhat mindenki, aki akar.
Végezetül megköszönöm, hogy elolvastátok ezt a cikket, egy apró információval szolgálnék azoknak, akikben egy idő után felmerülne a kérdés, hogy miért pont az Esc billentyű az alapértelmezett váltó billentyű a VI -ban, ha egyszer kényelmetlen lehet hosszú idő után a bal kisujjnak a használata? A választ a "Lear Siegler's ADM-3A" terminal adja, amit a cikk elején említett Bill Joy használt a VI kifejlesztésére.
Mint látható, azon a billentyűzeten bizony kényelmes közelségben volt az ESC. Kész szerencse, hogy a vim -ben bármelyik billentyűt át lehet konfigurálni más funkciókra, így az Esc-et is. Ezt a vimrc -ben teheti meg aki akarja, pl így:
:imap ii <Esc>
Ezek után a kettős "i" lesz a szerkesztő módba lépés. Természetesen bármit lehet választani, de az i betű azért jó, mert ritkán van olyan, hogy egymás után kellene begépelnünk belőle kettőt. Ez is egyéni ízlés dolga, hogy kinek melyik billentyűkombináció a legjobb, és a vim lehetőséget ad arra, hogy maximálisan testre szabjuk minden apró elemét.
Mindenkinek jó szórakozást kívánok, aki kedvet kapott a Vimhez!