NahrazovaniJednim z nejcasteji pouzivanych prikazu editoru ex je nahrazovani. Prikaz se nazyvas (substitute) a ma nasledujici
tvar:
<radky>Jako vsechny ostatni zacina urcenim radku, kterych se ma nahrazeni tykat. Za prikazem s se uvadeji dva retezce, jako
obvykle vymezene lomitky. Prvni urcuje, jaky text ma editor hledat, a druhy cim
jej nahradit.
Priklad:Takto trivialni pripad vas samozrejme tezko ohromi, ale predevsim pri vyhledavani se ukazuje sila regularnich vyrazu. Navic je muzete pouzivat hned na dvou mistech: jednak ve specifikaci radku (kde se ma pravidlo pouzit), jednak v parametrech vyhledavani. Pokrocilejsi priklady uvedu pozdeji.
VolbyUcinek nahrazovani lze ovlivnovat volbami, ktere se uvadeji za zaverecnym lomitkem. Nejcasteji pouzivane jsou dve:g a c .
Volba
(oblibene vojenske zaklinadlo pro synchronizaci pochodujicich) by prikaz
udelal
Teprve prikaz
zajisti nahrazeni vsech slov a vznikne
Abych mluvil skutecnou pravdu, chovani vim zavisi na nastaveni
parametru gdefault . Pokud je zapnut (:set gdefault ), editor implicitne nahrazuje vsechny vyskyty
retezce na radku. Pri pouziti volby g pak bude
nahrazovat vzdy jen prvni kousek na kazdem radku. Vypnuty parametr (:set nogdefault ) pak zajisti vyse popsane chovani, ktere je
implicitni pro puvodni editor vi i radu dalsich programu systemu
Unix.
Druha volba umoznuje potvrzovani kazde nahrady. Zadate-li
vim se pokusi nahradit vsechny retezce raz v textu, ale
kazdy z nich nejprve predvede a dotaze se, zda jej ma skutecne nahradit. Tato
vlastnost je velmi uzitecna, pokud se necitite silni v kolenou a mate jiste
obavy, ze hledanemu retezci by mohlo vyhovet i neco navic proti vasemu zameru.
Svou odpoved muzete vybirat z obvyklych moznosti:
Komplikovanejsi prikladyKdysi jsem v jednom zdrojovem textu potreboval vsechny ciselne udaje vydelit deseti. To vlastne znamena vyhledat vsechna cisla a pred posledni cislici do nich vlozit tecku. Zminenou akci obstara prikaz
Hleda skupiny cislic a ty si diky mechanismu zapamatovani (kulate zavorky s
lomitkem) rozdeli vzdy na dve casti. Prvni je dlouha podle potreby a druha
obsahuje vzdy prave jednu (posledni) cislici. V nahrazovacim retezci jen
zopakuje tyto zapamatovane skupiny, avsak mezi ne vlozi tecku.
Nedavno jsme menili strukturu domacich adresaru uzivatelu na disku. Pro kazdeho uzivatele obsahoval soubor informace o uzivatelskem jmene a domacim adresari - napriklad
Soubor byl usporadan abecedne podle uzivatelskych jmen. My jsme vsak
potrebovali seskupit uzivatele podle kateder, ktere se projevuji v ceste k
domacimu adresari za adresarem HOME (jakozto prislusnik katedry
informacnich technologii bydlim v adresari KIT ). Potrebovali jsme
tudiz vycucnout dotycne jmeno adresare a zapsat je jako prvni udaj na
radku - abychom obdrzeli
Takovy soubor pak staci protahnout standardnim programem sort a
clenove jednotlivych kateder se razem ocitnou pospolu. Potrebnou transformaci
obstara
Pri vyhledavani si prikaz zapamatuje vse od zacatku radku az po retezec
:HOME\ (jelikoz lomitko ma specialni vyznam, musi se v hledanem
retezci zdvojit). Pod cislem 2 se nasledne zapamatuje retezec znaku,
odlisnych od lomitka (jinymi slovy cely nazev adresare az po nasledujici
lomitko). V nahrazovacim retezci se nejprve vypise tento nazev adresare, za nim
carka a pak beze zmeny obe zapamatovane casti textu.
© 1997, 1998 Pavel Satrapa
|