(This IsN't The F*cking Manual)
UNIX
a la Hamster
A vi többnyire a rendszergazdák nagy kedvence, egyetlen vetélytársa
van a "leghasználhatóbb editor" címért folytatott versenyben, és ez az
emacs,
ami viszont egy csúnya, nagy és gonosz dolog, tehát diszkvalifikálandó
;-) A két betű a "visual" szóból jött, és így leírva
egyszerűen víájnak ejtendő, mert a 'vi' fonetikus kiejtéstôl általában
rángógörcsöt kap mindenki...
Minden egyszerű user "kedvenc" editora ez, mely bár nevéből ítélve már valami optikailag is értékelhető dolognak ígérkezik, de a valóságban az ed-féle sororientált és a PC-ken megszokott képernyőorientált szerkesztők keveréke. A programozók mindenesetre kedvelik, nem véletlenül... Tapasztalatom szerint a legtöbb ember megijed a láttán, eddig rajtam kívül egyetlen embert láttam, aki alapból ki tudott lépni belőle, és ez nem vicc, legalább tucat ember mesélte, hogy CONTROL-Z, aztán meg KILL segítségével lép ki, ha véletlenül elindult a vi... A vi-ban három üzemmód létezik, a parancsmód, a beviteli mód, és az ex mód, mely az ex nevű editorral kommunikál, ez az ex pedig a régi jó kis ed továbbfejlesztése... Alapban parancsmódban indul a kis kedves,
: / ? !karakterek valamelyikének segítségével pofozható tovább ex-módba. Bevitelből ESC-el kerülhetünk ide vissza, a sokat emlegetett beviteli üzemmódba pedig aAiIoOcCsSR segítségével kapcsolunk. Ez eddig jó bonyolultan hangzott, ugye? Az is... Kezdjük úgy, hogy egy file-t megnyitunk szerkesztésre:
vi huhh.gyerunkParancsmódban vagyunk, ha a file már létezik, valós tartalommal, akkor azt látjuk, különben csak az üres sorokat jelző ~ jeleket. A parancsformátum itt:
Ha megtaláltuk a keresett helyet, akár durvulhatunk és pusztíthatunk
is (még mindig parancsüzemmódban vagyunk!):
x - törli a kurzor alatti karaktert
d[arg] - törli az argumentummal kijelölt részt (wW(){}),
ha még emlékeztek...
dd - törli az egész sort. Itt az utóbbinál (ugyan nem) látszik,
hogy a parancsok nagy része az egész kurrens (micsoda szó) sorra vonatkozik,
ha a parancskaraktert megduplázzuk.
p - a legutóbb letörölt karaktert, vagy objektumot lerakja a
mostani kurzorpozíció után, a
P pedig elé
Persze kicsit szebb, ha nem törölgetünk feleslegesen, hanem csak kijelölünk
másoláshoz:
[darab]y[obj]
Hűha... nem kezdetek fáradni? (én igen)
zz - na ez egy jó parancs, kimenti a dolgokat, és gyorsan itthagyja
ezt a tetves vi-t
u - undo
. - előző szövegmódosító parancs végrehajtása
~ - kurzor alatti karaktert kicsiről nagyra, vagy nagyról kicsire
konvertálja
Na de nem csak törölni meg módosítani lehet, mi van, ha újat akarunk
létrehozni a semmiből? (akkor kicsit beképzeltek vagyunk...) Akkor az alábbi
parancsbillentyűket használhatjuk:
a, A - beviteli mód, az ezután gépelt szöveg a kurzor
után, ill. elé kerül beszúrásra
i, I - beszúrás, mögé/elé (ha szerencsénk van, akkor
olyan vi-verziónk van, aminél ezesetben műxenek a klavi kurzormozgató gombjai,
hát nem tökjó?)
o, O - új sort kezd az aktuális pozíció mögött, előtt
R - overwrite mód, de ha túlmentünk az eredeti szövegsor végén,
akkor átmegy síma beviteli módba...
S - az egész sort lecseréli az ezután begépelhető szövegre...
s - az aktuális pozíció alatti karaktert törli, és onnantól
szúr be
Hú, mostmár nagyon zsibbadtaknak kell lennetek!
Na jó, marad még pár ex-módban használható parancs:
:wq - elmenti a puffert, és kilép
:q - kilép, már ha előtte elmentettük a puffer tartalmát
:q! - kilépés mentés nélkül... az egyik legfontosabb parancs
;-)
:e név - betölti a nevezett fájlt, normális esetben erre csak
akkor hajlandó, ha üres a puffer, vagy elmentettük az előtte szerkesztgetett
marhaságainkat
:e! - "na jól van, töltök mentés nélkül is"
Ezenfelül használhatjuk az ed-nél látott parancsok nagyrészét is, például
a mintacserélést, ilyesmit, meg egy csomó mást is... AMit leírtam, abban
mind nincs benne az, amiért a programozók különösen szeretik a vi-t, a
kellemes reguláris kifejezés (regexp) támogatást a search and replace funkciókban,
stb... Majd egyszer. Mindenesetre még fontosnak tartanám elmondani, hogy
manapság kevés helyen látni az eredeti vi-t, jobbára valamilyen továbbfejlesztése
kerül fel a rendszerekre, például elvis, vim. Ezekben tapasztalhatók
kisebb eltérések, valamint a terminálbeállításainktól függően létezhetnek
hot key-k, amik más verziókon, más oprendszereken nem használhatók, ezeket
magunknak kell felfedezni. A nagy kedvencem, a vim mindenesetre :help
-re igen tekintélyes méretű helpet ad, érdemes nézegetni!