Ö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:
- 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.
- 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.
- 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 =*
*= =*
*************************************************************************