Ötödik lecke

"...az igazi programozó szerint az "azt kapod amit látsz" elv éppen olyan hibás az editoroknál, mint a nőknél. Nem, az igazi programozó az "ezt akartad, hát nesze" editort szereti - bonyolultat, titokzatosat, veszélyeset..."
(Ed Post: Az Igazi Programozó)*
Verzió: 1.0

Szövegszerkesztés Unix alatt

Egy operációs rendszerben mindennapi feladat, hogy egy szövegfájl tartalmát meg kell változtatnunk. Ezt a célt szolgálják az editorok. A Unix szabványos editora a vi, amelynek az az előnye, hogy minden rendszeren megtalálható. Az előnyök felsorolását ezzel ki is merítettük -- mai szemmel nézve a vi rettenetesen elavult. A grafikus operációs rendszerek alatt futó szövegszerkesztőkkel (Word for Windows, Ami Pro, stb.) elkényeztetett felhasználónak a vi editortól olyan érzése támad, mintha késsel és villával próbálna megenni egy tál levest. Ha csak tehetjük, nagy ívben kerüljük el a vi-t!*

A vi használatának elkerülésére a következő stratégiákat alkalmazhatjuk:

  1. Több más editor is létezik, például emacs, pico, joe. Nézzük meg a dokumentációban, vagy kérdezzük meg a rendszeradminisztrátortól, hogy ezek közül melyiket lehet használni.

  2. Ha valamilyen grafikus munkaállomáson dolgozunk, akkor ott kell lennie ablakos editornak. A Silicon Graphics gépeken jot a neve, a Sun-okon textedit, de biztosan könnyen elérhető helyen van. Ezek azonban csak grafikus terminálon futtathatók.

  3. Ha PC-ről jelentkezünk be, akkor nagyobb fájlok esetén érdemes un. "file transfer" művelettel áthozni a fájlt DOS alá, ott a DOS editorral vagy akár valamilyen szövegszerkesztővel elvégezni a szükséges műveleteket, a kész fájlt pedig visszavinni a Unixra. A PC és a Unix közötti fájlátvitelről szintén az írásos dokumentációból, vagy a rendszeradminisztrátortól szerezhetünk információkat.* A leggyakrabban használt program neve ftp (File Transfer Protocol), ennek használatáról a hálózatokról szóló leckében lesz szó.

Mégis érdemes a vi kezelését legalább alapszinten elsajátítani: ha netán kitennének minket egy lakatlan szigetre, és a sziget Unixos gépén történetesen csak vi van, akkor ne álljunk ott tehetetlenül.

A vi editor

Először is meg kell értenünk a vi alapelveit. Két üzemmódja van: szöveges mód és parancs mód. A parancs módban begépelt karaktereket parancsként értelmezi, például 'karakter törlés' vagy 'kurzor mozgatása jobbra'. Szöveges üzemmódban a bevitt karakterek bekerülnek a kurzor aktuális pozíciójába. Parancs módból úgy tudunk szöveges (text) üzemmódba váltani, hogy kiadjuk az a,C,i,o,O vagy R parancsok valamelyikét. Text módból az ESC billentyűvel jutunk parancs módba. Nagyon vigyázzunk, mert a képernyőn semmi sem utal rá, hogy éppen melyik üzemmódban vagyunk! Ez a fő ok, ami miatt az emberek ellenséges érzelmeket táplálnak a vi editorral szemben. Ne felejtsük el azonban, hogy a vi-t sok-sok évvel ezelőtt írták, amikor e terminálok még nem voltak olyan fejlettek mint napjainkban. Vigyázat, a kis- és nagybetűk különbözőnek számítanak! Igyekezzünk fejből megtanulni a parancsokat; azt fogjuk tapasztalni, hogy minél több parancsot tudunk fejből, annál könnyebbé válik a vi kezelése. Egy parancsot mindenképpen tanuljunk meg, ez a :q! (a kettőspont és a felkiáltójel itt a parancs része).

Mozgás a szövegben

Ctrl u, Ctrl d
A kurzort a szövegben felfelé (up) vagy lefelé (down) viszi 12 sorral.

Ctrl f, Ctrl b
A kurzort a szövegben előre (forward) vagy hátra (back) viszi 12 sorral.

e
A kurzort a következő szó végére viszi.

b
A kurzort az előző szó elejére viszi.

Ctrl g
Kiírja a kurzort tartalmazó sor sorszámát.

G
A szerkesztett fájl végére ugrik.

n G
A fájl n-dik sorára ugrik.

$
Ugrás az aktuális sor végére.

/keresett_szó
A keresett_szó első előfordulási helyére ugrik.

n
A keresett_szó következő előfordulási helyére ugrik.

Szöveg beszúrás

i
A begépelt szöveget beszúrja (insert) a kurzor pozíciójához. Ha befejeztük a műveletet, üssük le az ESC billentyűt.

a
A begépelt szöveget a kurzor pozíciójától kezdve hozzáfűzi (append) a szerkesztett dokumentumhoz. Ha befejeztük a műveletet, üssük le az ESC billentyűt.

o
Egy üres sort hoz létre az aktuális sor alatt. Gépeljük be a kívánt szöveget, majd üssük le az ESC billentyűt.

O
Egy üres sort hoz létre az aktuális sor felett. Gépeljük be a kívánt szöveget, majd üssük le az ESC billentyűt.

Szöveg módosítása

x
Kitörli a kurzor pozícióján álló karaktert.

rc
Kicseréli (replace) a kurzor pozícióján álló karaktert c-re.

R
Felülírásos üzemmódba kapcsol; Üssük le az ESC billentyűt ha vissza akarunk térni parancs módba.

dd
Kitörli az aktuális sort.

J
A következő sort összefűzi az aktuális sorral.

C
Kijelöli az aktuális sor kurzortól jobbra eső részét (egy $ jelet rak a sor végére.) Amit ezután begépelünk, az felülírja a megjelölt részt.

u
Visszacsinálja az utolsó műveletet

U
Visszacsinálja az eredeti állapotot az aktuális sorban.

:i,j m p
Az i. és j. sorok közé eső részt (beleértve magát az i. és j. sort is) áthelyezi a p. sor után.

Kilépés a vi-ból

:w
Elmenti a szerkesztett szöveget.

:w név
'név' néven elmenti a szerkesztett szöveget.

:i,j w név
'név' néven elmenti az i. és j. sorok közé eső részt (beleértve magát az i. és j. sort is)

:q
Kilép, ha nem változtattunk a szövegen az utolsó mentés óta.

:q!
Mindenképpen kilép, az esetleges változtatások elmentése nélkül.

:wq
Elmenti a szerkesztett szöveget és kilép.

Egyéb

.
Megismétli az utolsó parancsot.

Feladatok

Készítsünk magunknak "puskát" a vi legfontosabb parancsairól! Ehhez először mentsük ki e lecke szövegét egy szövegfájlba. Ezt minden levelezőprogrammal meg lehet tenni, általában az export parancs segítségével.* Ha sehogyan sem boldogulunk, akkor használjuk a Unix mail programját. (Indítsuk el a mail programot, válasszuk ki ezt a levelet a sorszámának begépelésével, majd az s vi-doc paranccsal mentsük el a szöveget egy vi-doc nevű fájlba.

Az így létrehozott szövegfájlt töltsük be a vi-ba! Töröljük ki a parancsok leírása előtti bevezető szöveget, és a feladatok leírását. Mentsük el a változtatásokat! Most lapozzunk vissza a fájl elejére, és szúrjunk be egy-egy üres sort minden parancs leírása elé!

Az elkészült "puskát" ki is nyomtathatjuk, feltéve, hogy van nyomtató a rendszerben.* A nyomtatási lehetőségekről és a nyomtató használatáról (hogy hívják a PRINT parancsot ezen a héten), olvassuk el a dokumentációt, vagy kérdezzük meg a rendszeradminisztrátort!

Nézzük meg, hogy az eddigi munkánkkal mennyi helyet foglalunk!


*************************************************************************
*=                                                                     =*
*=                           SZERZOI JOGOK                             =*
*=                                                                     =*
*=   Ez  a dokumentum a Unix  operacios  rendszer  es a szamitogepes   =*
*=   halozatok elterjedeset  kivanja  elosegiteni, ezert dijmentesen   =*
*=   terjesztheto.  Nem szabad azonban a terjesztes soran a szoveget   =*
*=   megvaltoztatni,  barmilyen  modon  megcsonkitani  es a  szerzoi   =*
*=   jogokra vonatkozo megjegyzest eltavolitani!  Sem  a dokumentum,   =*
*=   sem annak barmely resze nem hasznalhato fel segedanyagkent vagy   =*
*=   tankonyvkent profitorientalt intezmenyekben vagy tanfolyamokon,   =*
*=   a szerzok elozetes irasbeli engedelye nelkul!                     =*
*=                                                                     =*
*=   (C) Csaky Istvan es Mork Peter         Miskolc, 1994. januar 19   =*
*=                                                                     =*
*************************************************************************