Ismerkedés - a túlélőkészlet

Egy fájlt a vi file paranccsal nyithatunk meg szerkesztésre; ha létező fájlról van szó, a vi a fájl elejére áll, ha még nem létezett ilyen fájl, a képernyő alsó sorában egy "New file" vagy "Empty file" szöveg figyelmeztet minket. (Meghívhatjuk a vi-t fájlparaméter nélkül is, ez esetben legkésőbb kilépéskor kell nevet adni neki.)

A megnyitott fájlban a villogó kurzor az első sor elején jelzi, hogy a vi parancsra vár. Ha a képernyőn a fájl vége (is) látható, a képernyő szélén a '~' (tilde) karakterek a már üres sorokat jelzik.

A vi egyik leggyakrabban szidott vonása szófukarsága; még gyakorlott felhasználóknak is rendkívül zavaró tud lenni, hogy nem látják, milyen üzemmódban vannak éppen. Első lépésként ezért gépeljük be az alábbi parancsokat:

:set novice

:set showmode

Ennek hatására némileg megoldódik a vi nyelve, a továbbiakban a képernyő jobb alsó sarkában ki fogja írni, hogy milyen beviteli módban vagyunk éppen; ennek hiánya azt jelzi, hogy parancsmódban vagyunk. (Ha elvesztettük a fonalat, s nem tudjuk, épp milyen vi módban vagyunk, nyomjuk meg kétszer egymás után az ESC gombot, ennek hatására garantáltan "visszajutunk a kályhához", azaz parancsmódba. Mivel a legtöbb terminál a parancsmódban érkező ESC karaktert egy fütyüléssel vagy villanással is honorálja, így ha a dupla ESC után fütyült a terminálunk, biztosak lehetünk abban, hogy parancsmódba kerültünk vissza.

Ahogy a kisbaba is először járni tanul meg, elsőként nézzük meg, mely alapvető parancsokkal mozoghatunk egy fájlban. A legfontosabbak a balra-le-föl-jobbra funkcióknak megfelelő parancsok. Ezeket a klaviatúrán rendre az egymás mellett lévő h j k l billentyűvel érhetjük el. (A legtöbb Unix rendszerben és terminálon ma már használhatóak a standard nyíl billentyűk is, ám ezek használata nem mindig javasolt. Ennek az az oka, hogy a kurzormozgató nyíl billentyűket a legtöbb terminál valamilyen ESC karaktert is tartalmazó 2-4 karakteres szekvenciával kódolja (például ESC [ A ). A rendszer leterheltsége esetén könnyen előfordulhat, hogy e karakterszekvenciák feldolgozása időben elhúzódik, a vi egymástól független külön karakterként fogadja őket, s így egy nyílbillentyű lenyomásakor a vi az ESC miatt átlép parancsmódba, majd a kurzormozgató szekvencia többi karakterét vi parancsnak értelmezi.)

Ha nagyobb lépésekkel szeretnénk mozogni a fájlban, a b paranccsal az aktuális szó elejére ugorhatunk vissza, w paranccsal pedig a (jobbra) következő szó elejére. A 0 karakterrel az aktuális sor elejére, a $ karakterrel pedig a sor végére ugorhatunk. A H paranccsal a képernyő tetejére, az L paranccsal pedig a képernyő utolsó sorára ugorhatunk. A fájl tetszőleges sorára az nG paranccsal pozicionálhatunk, így 1G a fájl legelső sorába visz minket. Paraméter nélkül megadva G az utolsó sorba röpít. A legfontosabb pozicionáló parancsokat grafikus formában az alábbi ábra szemlélteti.

 

1G

H

 

 

 

k

 

1   b  h 

*  l  w   

$

    

j

 

 

 

L

G       

 

 

 

Ha írni szeretnénk a fájl egy tetszőleges helyére, álljunk a kurzorral a kívánt helyre, majd adjuk ki az i (insert) parancsot. Ennek hatására azonnal beviteli módba kerülünk, s mint már mondtuk, az ESC karakter leütéséig minden, amit gépelünk, bekerül a fájlba. Az i parancs az elé a karakter elé szúr be, ahol a kurzor áll, az a karakter hatására pedig a kurzor után szúródik be szövegünk. Ha szöveg bevitele közben szeretnénk javítani, a BACKSPACE karakterrel törölhetünk egy karaktert.

Speciális (például vezérlőkarakterek) beviteléhez előbb a CTRL-V billentyűt nyomjuk le, az ezután megadott karaktert a vi nem értelmezi, hanem beírja a fájlba. Például ha egy ESC karaktert szeretnénk beírni, a CTRL-V ESC karakterszekvenciát kell megadni; a vi a vezérlőkaraktereket a ^c formátumban jeleníti meg a képernyőn (az ESC például ^[ ), az ékezetes karakterek megjelenítése implementáció és beállításfüggő.

A szövegbevitel után előbb-utóbb törölni is kényszerülünk... Ha néhány karaktert szeretnénk csak törölni, a kurzorral álljunk rá az első törlendőre, s adjuk ki az x parancsot; ennek hatására egy karakter törlődik. Ha többet szeretnénk, adjuk meg az x előtt a darabszámot; így például 5x öt karaktert fog törölni, a kurzor feletti karaktert, s négy tőle jobbra lévőt. (Vigyázzunk, ha eközben a sor végére értünk, a maradék karaktereket balra haladva fogja törölni a vi, mintha a PC-s DEL funkcióból hirtelen BACKSPACE funkcióra váltana.)

Ha egész sort szeretnénk törölni, a dd paranccsal az aktuális sort törölhetjük.

Ha valamit elrontottunk, és rögtön észrevesszük a hibát, az u (undo) paranccsal vissza lehet állítani a legutolsó szövegmódosítás előtti állapotot.

Ha végeztünk munkánkkal, a :w paranccsal tudjuk a módosított fájlt elmenteni, azaz visszaírni a vi pufferének tartalmát a merevlemezre. Kilépni a :q paranccsal léphetünk. Ha egy fájlt módosítottunk, és mentés nélkül akarunk kilépni, a vi nem hagyja: vagy el kell mentenünk a fájlt a :w paranccsal, vagy pedig a :q! paranccsal kell kilépnünk.

 

Tartalomjegyzék