C-7 TEXTOVY EDITOR vi                        



                                 Obsah                                



1.    Uvod 
2.    Editor vi 
2.1   Zaciname prikladem
2.2   Pracovni rezimy editoru vi 
2.3   Tvary povelu 
2.4   Obrazovka jako pracovni pole
2.5   Vyvolani vi 
2.6   Ukonceni vi a ulozeni pracovni pameti
2.7   Zadani povelu shellu z editoru 
2.8   Jak se listuje v souboru
2.9   Jak se pise novy text 
2.10  Ovladani kurzoru
2.11  Jak se meni existujici text
2.12  Vicenasobne provedeni povelu 
2.13  Prace s vice soubory 
2.14  Dalsi priklady 
2.15  Volba parametru editoru vi
3.    Strucny prehled povelu
4.    Literatura k dalsimu studiu


                                1. Uvod                                

     Tato prirucka ma slouzit jako uvod do textoveho  editoru   vi  (z 
angl. visual). Jedna se o standardni editor, ktery by mel byt podporo- 
van v kazde implementaci operacniho systemu UNIX. Muzeme s nim  praco- 
vat zejmena na pracovnich stanicich SUN a na pocitaci Cray pod operac- 
nim systemem UNICOS.
     Editor vi podporuje jen zakladni (anglickou) ASCII sadu  znaku  a 
proto se hodi predevsim k psani programu. Pres svoje nedostatky -  ze- 
jmena nesikovne naprojektovane uzivatelske rozhrani - je mezi  progra- 
matory bezne pouzivan.
     Tato prirucka je prekladem  kapitoly  5.2  publikace  SINIX  EIN- 
FUEHRUNG V5.2A, U3901-J-Z95-1, upravenym podle pripominek ctenaru.  Na 
konci je strucny prehled povelu editoru, ziskany  z  datoveho  serveru 
TRICKLE jako

          WUARCHIVE.UNIX-Cinfo/vi-ref.TXT

Pro vazne zajemce o popisovany editor je urcen take  podrobny  prehled 
povelu

          WUARCHIVE.UNIX-Cinfo/vi-qref.TAR-Z

ktery je pod nazvem vi_hodne k dispozici jako on-line dokument  v  in- 
formacnim systemu info pocitacu SUN a na uzlu router1@fzu.cz.
     Sama tato prirucka je k dispozici v tistene  forme  u  operatorek 
Strediska automatizace a vypocetni techniky FzU AV CR v  Cukrovarnicke 
ul. i jako Chi-Writerovsky soubor v uzlu  router1@fzu.cz  (podrobnosti 
viz prirucka C-4 Pocitac Cray Y-MP EL ve FzU AV CR).
     V prirucce se pouziva nasledujici konvence pro typ pisma: to,  co 
pise uzivatel na klavesnici, je znazorneno tucnym pismem,  s  vyjimkou 
nazvu formalnich promennych, ktere jsou ve scriptu, odezva pocitace je 
napsana kurzivou.

obsah
2. EDITOR vi Chcete napsat nejaky text, treba zdrojovy text programu, dopis nebo neco jineho. Tato prirucka Vam ma pomoci se takove veci v editoru vi naucit. Najdete zde kroky, kterymi pritom musite projit. Vystacit se soustavnym popisem povelu dost dobre nelze, protoze jich je mnoho a maji ruzne varianty. Jejich efektivni pouziti vyzaduje urcitou zkusenost. Proto zde uvadime nekolik uvodnich prikladu, s ni- miz bude pocatecni zauceni hrackou. Prvni ukony vysvetlime podrobneji, abyste pochopili zakladni rezimy editoru. Popis povelu bude strucnejsi a bude probiran spis se zretelem na modelove problemy. Co vsechno se da s editorem vi dosahnout? Napriklad: . poridit soubor . napsat a opravit text . vkladat, rusit, nahrazovat a duplikovat cast textu . hledat, rusit a systematicky menit retezce znaku . prejit do jineho souboru, odskocit do shellu . ukladat text nebo povely do pametovych oblasti . urcit si predvolby
obsah
2.1 Zaciname prikladem Nachazite se v povelovem rezimu UNIXu, shell Vam nabizi prompt $. Editor vyvolate povelem vi jmeno-souboru Uvedeni jmena souboru je nepovinne. Jestlize je jmeno souboru za- dano a soubor toho jmena neexistuje, bude zalozen. Jestlize uvedeny soubor existuje, bude jeho obsah nacten do pracovni pameti editoru. Jestlize jmeno souboru nebylo zadano, bude pracovni pamet editoru otevrena jako prazdna. V kazdem pripade tedy pracujeme s kopii dat v pameti. Na konci prace budeme chtit vysledek ulozit. Jmeno souboru, do nehoz se bude ukladat, bylo zadano pri vyvolani editoru, nebo bude za- dano pri ukonceni. Pri ukladani bude pripadny drivejsi obsah tohoto souboru prepsan. Zalezi-li Vam na tom, aby se Vam data neztratila, porizujte si z nich vzdy vcas kopii hlavne v dobe, kdy se novy editor ucite. V nasem prikladu vytvorime soubor jmenem tel-seznam. Tento soubor v pracovnim adresari jeste neexistuje. Soubor ma obsahovat maly tele- fonni seznam a celkem ma sestavat ze ctyr radek: Telefonni seznam Adam 4999 Eva 3210 Vyvolame editor: $ vi tel-seznam Na obrazovce uvidime urcity pocet (podle velikosti obrazovky) prazdnych radek. Prazdne radky jsou v prvnim sloupci oznaceny znakem "~" (vlnovka). Na posledni radce dostaneme zpravu: "tel-seznam" [New file] Posledni radka je vyhrazena pro hlaseni editoru nebo operacniho systemu a pro vstup povelu editoru ex. Nyni je pracovni pamet editoru priprave- na pro vstup textu. Zacneme tedy psat, ale editor dela neco necekaneho nebo nereaguje vubec! To je v poradku. Editor vi se zpocatku nachazi ve stavu cekani na povel. Stisknete klavesu a Na obrazovce se nic nezmenilo. Pismenem a jsme vsak prepnuli editor do rezimu vkladani textu. Ono "a" bylo pochopeno jako povel "append". Na- sledujici znaky ted uz budou interpretovany jako vlastni text. Mnoho povelu vi sestava z jednoho nebo aspon mala pismen. Napsany povel neni na obrazovce echovan a provede se ihned, tj. bez pouziti klavesy Enter. Napiseme tedy nas text: Telefonni seznam Text se ukazuje na obrazovce a soucasne uklada v pracovni pameti. Mu- zeme pokracovat jako na psacim stroji. Novy radek obdrzime pomoci kla- vesy Enter. Po preklepu se vratime o jeden znak klavesou Backspace (na SUNech take Delete), jak jsme zvykli z povelu shellu. Prazdny radek dostaneme klavesou Enter, pak napiseme radky Adam 4999 a Eva 3210. Ted musime nas miniaturni telefonni seznam ulozit, aby se s ukoncenim editoru neztratil. Na to bude zase povel - ale napred musime zpatky do poveloveho rezimu. K tomu slouzi klavesa Esc. Stiskneme ji a potom ZZ (dvakrat velke pismeno Z primo, bez Enter). Ulozili jsme napsany text a soucasne ukoncili cinnost editoru zadanim ZZ Od editoru jsme jeste na posledni radce dostali hlaseni: "tel-seznam" [New file] 4 lines, 32 characters a pak se nam vratil systemovy prompt $. Soubor tel-seznam je nyni vy- tvoren, pracovni pamet editoru uz neni dosazitelna. Zopakujeme si, co jsme dosud delali: $ vi tel-seznam volani editoru se jmenem souboru a povel vi: vkladej text (append) text text radky 1 Enter nova radka Enter radka 2 zustane prazdna text text radky 3 Enter nova radka text text radky 4 Esc zpet do poveloveho rezimu ZZ ukonceni s ulozenim $ Muzete se presvedcit o spravnosti obsahu nove vytvoreneho souboru tak, ze si ho povelem $ cat tel-seznam vyvolate na obrazovku, nebo povelem $ lpr tel-seznam vytisknete.
obsah
2.2 Pracovni rezimy editoru vi Kdyz zadavate neco z klavesnice, editor reaguje ruzne podle toho, v jakem se nachazi rezimu. V zasade rozlisujeme povelovy rezim a rezim vkladani textu. Zpocatku je editor vzdy v povelovem rezimu a ocekava tedy povel. Napiseme-li povel k vkladani textu, prepne se editor do textoveho rezimu, napr. jednim z povelu: a (append) vkladej vpravo od kurzoru i (insert) vkladej vlevo od kurzoru Pote budou vkladane znaky interpretovany jako text. Musime si uvedo- mit, ze editor vykonani povelu nijak nepotvrzuje. Nevime-li zrovna, v jakem rezimu se nalezame, muzeme to vyzkouset. Napr. klavesa x v pove- lovem rezimu zpusobi vymazani jednoho znaku, v rezimu vkladani se echuje jako znak x. K navraceni do poveloveho rezimu slouzi klavesa Esc. Po jejim stisknuti budou nasledujici znaky interpretovany jako povely. Take vy- konani nekterych povelu ma za nasledek navrat do poveloveho rezimu. Opakovane stisknuti klavesy Esc nema zadny ucinek, proto nevite-li, zda jste uz stiskli Esc nebo ne, stisknete ho jeste jednou.
obsah
2.3 Tvary povelu Povely vi maji nekolik obecnych tvaru. Nasledujici vysvetleni jed- notlivych povelu si muzete porovnavat s jejich popisem v odst. 3 teto prirucky. Nejjednodussi povely sestavaji z jednoho maleho pismene: a (append) vkladej text vpravo od kurzoru i (insert) vkladej text vlevo od kurzoru x vymaz znak v poloze kurzoru u (undo) odejmi zmeny zpusobene poslednim povelem, ktery nejake zmeny zpusobil Dale existuji povely sestavajici z jednoho velkeho pismene - cas- to jsou obdobne povelum odpovidajicich malych pismen, ale s modifiko- vanym, zejmena zesilenym ucinkem: A (append) vkladej text na konec aktualni radky I (insert) vkladej text na zacatek aktual- ni radky X vymaz znak vlevo od kurzoru U (undo) odejmi vsechny zmeny ucinene v aktualni radce Mnohe povely muze predchazet cislo urcujici pocet opakovani: 7x vymaz 7 znaku v poloze kurzoru a vpravo od nej 7X vymaz 7 znaku vlevo od kurzoru Diky tomu, ze editor vi vznikl zdokonalenim svych predchudcu, po- uziva stejne jako oni casto pismena kombinovana s klavesou Ctrl: Ctrl-d (down) posun okno o polovinu obrazovky dolu Ctrl-u (up) posun okno o polovinu obrazovky na- horu Dalsi variantu predstavuji povely prevzate ze starsich editoru ed a ex. Tyto ex-povely zacinaji v editoru vi vzdy dvojteckou, jsou echo- vany na povelove radce obrazovky a musi byt explicitne ukonceny ("ode- slany") klavesou Enter nebo Esc. Vzdy, kdyz se v dalsim textu vy- skytne povel zacinajici dvojteckou, rozumi se, ze se jedna o tento typ povelu. Napr.: :w (write) uloz obsah pracovni pameti :q (quit) ukonci praci editoru Tyto dva povely zadane bezprostredne po sobe maji stejny ucinek jako drive probrany povel ZZ. ex-povely se zadavaji ve zvlastnim ex-povelovem rezimu editoru, do nehoz prejdeme z bezneho poveloveho rezimu nekterou z techto klaves: : dvojtecka Q Pri tom kurzor skoci na povelovou radku a nabidne se dvojtecka. Muze se stat, ze se kurzor po provedeni povelu nevrati na aktualni misto na obrazovce, nybrz zustane na povelove radce. V tom pripade za- dejte :vi Jestlize napisete na povelove radce napr. w bude echovano: w. Jinak se zatim nedeje nic. Jeste muzete napsany povel zmenit - klavesou Backspace se dostanete o jedno misto vlevo. Teprve po stisknuti Enter nebo Esc se napsany povel vykona. Pote je editor v povelovem rezimu. Po provedeni povelu :w dostaneme na povelove radce hlaseni: "soubor" xxx lines, yyyy characters Je to jmeno zpracovavaneho souboru, pocet radek a pocet znaku. Hlaseni zde zustane, dokud nejak nepohneme textem na obrazovce. Kurzor se ma po ukonceni povelu vratit na aktualni misto v textu. Dokud se tak nestane, povel dosud probiha. Muzeme ho pripadne prerusit klavesou Enter, Ctrl-c nebo Ctrl-d. Mnoho ex-povelu umoznuje zadani oboru platnosti povelu. :20,$w text V tomto priklade bude do souboru text zapsana pracovni oblast editoru od radky 20 do konce. U ex-povelu znak $ oznacuje konec souboru, za- timco u povelu obrazovkoveho modu oznacuje posledni znak aktualni rad- ky. Kdyz napisete :20w text ulozi se jen dvacata radka. Kdyz chcete ulozit celou pracovni oblast - a to do drive urceneho souboru - je to zvlastni pripad, pro nejz staci pouhe :w Zadate-li :wq bude pracovni oblast ulozena a editor ukoncen. Pri zadani oboru platnosti lze znakem "." (tecka) oznacit aktual- ni radku. :.w soubor zapise jen aktualni radku :.,.+20w soubor zapise aktualni radku a dvacet dalsich :.,.20w soubor stejne jako predchozi priklad Moznosti ex-povelu se castecne prekryvaji s moznostmi povelu vi, napr. povel 20G nastavi stred okna na dvacatou radku stejne jako :20. Kterou moznost si vyberete, zalezi na Vas.
obsah
2.4 Obrazovka jako pracovni pole Po vyvolani vi obdrzime obrazovku, jejiz prvni radka je prvni radkou editovaneho souboru, posledni radka obrazovky je povelova. Kdyz napisete do radky text presahujici sirku obrazovky, bude text klidne pokracovat na dalsi radce obrazovky, aniz by se do souboru doplnil znak konce radky (ledaze bychom meli nastavenu nenulovou hodnotu ex-promenne wrapmargin, wm). Editor vi nema moznost posunout okno do strany. Znak konce radky neni na obrazovce vyznacen. Pokud byste to po- trebovali, zadejte povel :set list Potom budou vsechny znaky viditelne, zejmena konec radky jako $ escape jako ^[ tabelator jako ^I Tento rezim zobrazovani zrusime povelem :set nolist Kdyz dopisete na dolni konec obrazovky, potom pri prechodu na dalsi radku (napr. klavesou Enter) se okno automaticky posune dolu. Take muzete povelem Ctrl-f posunout okno dolu tak, ze predposledni veta se stane prvni. Moznosti posouvani okna jsou souhrnne uvedeny dale. Kdyz zpracovavate delsi soubor a chcete vedet, kde se v nem na- chazite, muzete si nechat radky ocislovat povelem :set number nebo zkracene :se nu Radky budou nyni na obrazovce (nikoli vsak v souboru) ocislovany. Ci- slovani zrusite pomoci :set nonumber nebo zkracene :se nonu Jestlize Vas zajima jen cislo aktualni radky (t.j. radky, na niz stoji kurzor), mate na vyber nektery z nasledujicich povelu: Ctrl-g ohlasi: "soubor" line xxx of yyy--zz%-- kde line xxx je cislo aktualni radky yyy je pocet radek souboru zz procento cisla radky z poctu radek souboru :.= ohlasi cislo radky :nu napise cislo radky a jeji text := napise cislo posledni radky pracovni ob- lasti :f stejne jako Ctrl-g Kdyz chcete zrekonstruovat obrazovku, napr. po vystupu systemove- ho hlaseni, ktere narusilo Vas text, pouzijte povel Ctrl-l
obsah
2.5 Vyvolani vi Editor vi vyvolame ze shellu povelem vi. Muzeme zadat jen tento povel nebo ho doplnit dalsimi udaji oddelenymi mezerami: vi otevre se docasny soubor v pracovni pa- meti vi soubor otevre se soubor a okno nastavi na jeho zacatek vi [-R] soubor soubor se otevre jako "read only", zmeny v pracovni pameti a ulozeni do jineho souboru jsou mozne vi [-r] soubor vi se pokusi rekonstruovat zadany soubor po predchozi havarii editoru ("recover"). A jeste neco o vyvolani editoru. Povelem vi bude editor pouze spusten. Pracovni pamet bude prazdna a neni prirazena zadnemu souboru. Po povelu vi soubor bude soubor, neni-li prazdny, nacten do pracovni pameti. Okno bude na jeho zacatku. Puvodni soubor se tim nezmeni. Lze zadat take nekolik jmen souboru oddelenych mezerami. Potom budete zpracovavat napred prvni z nich, nacez ho ulozite povelem :w a povelem :n (next) prejdete k dalsimu souboru. Naopak pomoci :e# lze prejit k souboru predchozimu. Povel :n soubor1 soubor2 soubor3 slouzi ke zmene seznamu jmen v argumentu jiz vyvolaneho editoru. vi + soubor stred okna i kurzor budou nastaveny na posledni radku souboru vi +n soubor stred okna i kurzor budou nastaveny na n-tou radku souboru (n je cislo) vi+/vzor soubor stred okna i kurzor budou nastaveny na radku v souboru, ktera obsahuje vzorove slovo "vzor". Napr. vi +/Hallo soubor vyhleda prvni vyskyt znakoveho retezce "Hallo". Povelem n potom muzete prejit k nasledujicimu vyskytu tohoto vzoru.
obsah
2.6 Ukonceni vi a ulozeni pracovni pameti Mame nekolik moznosti ukonceni. Predem si musime rozmyslet, co se ma stat s textem v pracovni pameti. Toto rozhodovani je dulezite, jestlize text je novy nebo zmeneny. :w Obsah pameti bude ulozen do souboru dri- ve zadaneho jmena. Soubor bude ulozen nebo prepsan. (Tento povel muzeme pouzit kdykoli pro zajisteni mezivysledku edi- tace. Po jeho provedeni se text na obra- zovce nezmeni a lze pokracovat v praci. :q Editor bude ukoncen, paklize vsechny zmeny uz byly ulozeny. V opacnem pripade se editor odmitne ukoncit. :wq ulozeni textu a nasledujici ukonceni :q! editor se ukonci a obsah pracovni pameti je ztracen :x stejne jako :wq ZZ stejne jako :wq :w soubor ulozeni pracovni pameti do souboru :wq soubor ulozeni pracovni pameti do souboru a ukonceni Priklad: :w savefile ulozi editovany text do souboru jmenem savefile. Poznamka: Povelem :w! soubor prepiseme soubor, i kdyz je "read only".
obsah
2.7 Zadani povelu shellu z editoru. Muze se nam stat, ze behem seance editoru potrebujeme provest prikaz shellu, napr. podivat se na jmena souboru. Editor vi k tomu po- skytuje nasledujici moznosti: :sh Dojde k preruseni editoru bez naruseni obsahu pracovni pameti. Shell se ohlasi obvyklym promptem, muzeme psat libovolne povely operacniho systemu, treba pomoci ls se podivat na svoje vlastni soubory. Pred vetsimi akcemi bychom nicmene meli editor opustit. Klavesou Ctrl-d nebo povelem exit se pak vratime do seance vi. :!cmd Provede se unixovy povel bez opusteni editoru a beze zmeny editovaneho textu. Na posledni radce obrazovky se muze objevit systemove hlaseni o prubehu po- velu. :!! Provede se znovu minule zadany povel operacnimu systemu. Vysledek bude indi- kovan na spodni radce obrazovky. !Gcmd Povel cmd bude pouzit jako filtr na text v pracovni pameti. Text od aktualni rad- ky az do konce souboru bude pouzit jako standardni vstup povelu cmd, nacez bude nahrazen standardnim vystupem povelu cmd. Pocet radek standardniho vstupu a standardniho vystupu nemusi souhlasit. Toto je vhodny prostredek na systematic- ke zmeny v editovanem textu, napr. pomo- ci unixovskych utilit sed nebo awk. Priklady: 1G!Gdos2unix zpusobi najeti na zacatek souboru (1G), a jeho konverzi z PC-formatu do unix-formatu (utilita dos2unix - jen na SUNech). 1G!Gawk '/pocitac/' v pracovni pameti ponecha jen ty vety, ktere obsahuji retezec "poci- tac". Poznamka: Pismeno G v povelu !Gcmd souvisi s tim, ze samotny po- vel G znamena posun kurzoru na posledni radku textu. Podobne muzeme psat !'acmd pro filtrovani textu od aktualni radky ke znacce a (kterou jsme drive udelali povelem ma), nebo !!cmd pro filtrovani jen aktualni radky. Priklad: !!ls nahradi aktualni radku seznamem souboru.
obsah
2.8 Jak se listuje v souboru Dejme tomu, ze chceme prohlizet nebo menit nejaky vetsi soubor. Po vyvolani editoru vidime zacatek souboru. Kdyz nas zajima, co je dal, musime posunout okno. Posouvani doleva a doprava neni mozne, protoze vety se zobrazuji vzdy cele, podle potreby i pres nekolik radek. Je tedy jen moznost po- hybovat oknem nahoru a dolu (vuci obsahu souboru). Editor vi poskytuje pro tento ucel asi dvacet moznosti, takze dokaze vyplnit skoro kazde prani. Nenechte se odradit a radeji ze zacatku pouzivejte jen nekolik jednoduchych povelu. Posouvani okna Editor nam umoznuje listovat po vetsich nebo mensich krocich: . o cele okno . o pul okna . o jednu radku. Kdyz opracovavame existujici text, potrebujeme si v nem listovat tam a zpatky. Orientujeme se pri tom podle toho, jakou cast textu mame zrovna na obrazovce, co mame na prvni radce, co na posledni a co upro- stred. K tomu ted uvedeme nekolik povelu: Esc G posun na konec souboru Esc 1G (go) posun na zacatek souboru Esc nG n-ta radka prijde doprostred obrazovky Ctrl-e o jednu radku vpred Ctrl-y o jednu radku zpet mc aktualni radka bude oznacena znakem (na- pr. pismenem) c 'c skok na radku oznacenou znakem c Ctrl-f (forward) o jednu obrazovku vpred Ctrl-b (backward) o jednu obrazovku zpet Ctrl-d (down) o pul obrazovky vpred Ctrl-u (up) o pul obrazovky zpet Esc z Enter aktualni radka prijde na zacatek obra- zovky Esc z. aktualni radka prijde doprostred obra- zovky Esc z- aktualni radka prijde na konec obrazovky % posun kurzoru k zavorce. Jestlize je kurzor nastaven na (levou nebo pravou) zavorku, skoci na (pravou nebo levou) zavorku do paru. Zavorkou se mysli kula- ta, hranata nebo lomena. Tato konstrukce se hodi pri psani programu. '' (dva apostrofy) kurzor skoci tam, kde bylo naposledy neco vyznamneho ucineno. Pro listovani vpred je velmi uzitecny povel Ctrl-d (t.j. o pul obrazovky). Jestlize se vam to nepovedlo, je to tim, ze nejste v pove- lovem rezimu. Stisknete tedy napred Esc. Muzete take posouvat okno klavesami urcenymi pro pohyb kurzoru nahoru a dolu (sipkami). Kdyz ji budete drzet stisknutou, kurzor doje- de na prvni nebo posledni radku obrazovky a potom jakoby potahne okno prislusnym smerem. Muzete posunout okno tak, aby aktualni radka se stala prostredni radkou okna, povelem Esc z. (znak z a tecka). Na zacatek souboru se dostaneme povelem Esc 1G, na konec soubo- ru povelem Esc G. Hledani urciteho mista v textu Kurzor muzete posunout na misto vyskytu nejakeho slova. Jako vzor pro hledani pouzijete toto slovo nebo jeho cast. Editor bude hledat v cele pracovni pameti, nejen v zobrazene casti. Hledani vzoru v celem souboru /vzor Enter hledani vpred ?vzor Enter hledani vzad / Enter znovu hledani vzoru vpred ? Enter znovu hledani vzoru vzad n znovu hledani vzoru stejnym smerem N znovu hledani vzoru, ale opacnym smerem Hledani v jedne radce fc (find) hledame v dane radce vpred znak c, kurzor se zastavi na znaku c Fc hledani vzad, kurzor se zastavi na znaku c tc hledani vpred, kurzor se zastavi pred znakem c Tc hledani vzad, kurzor se zastavi za zna- kem c ; znovu hledani vpred , znovu hledani vzad Editor vi si pamatuje naposledy hledany vzor a naposledy hledany znak. Po provedeni libovolnych jinych povelu muzete napr. povelem n najit pristi misto v textu obsahujici zadany vzor. Nezavisle na tom funguje napr. ; pro hledani v radce. Priklad: Dejme tomu, ze hledame slovo Mississippi. Zadame Esc/issis a nejpis slovo takto najdeme, i kdyz jsme pouzili jen cast slova. Radka obsahujici nalezene slovo bude umistena doprostred obra- zovky, kurzor bude stat na prvnim "i" v Mississippi. Kdyz chceme na nejake radce najit pismeno M, najedeme kurzorem na zacatek teto radky a dame povel Esc f M. Kurzor skoci na M, pokud v radce je. Muzeme take zadat 3fM, cimz najdeme treti M na radce. Povel 3fM je ekvivalentni fMfMfM nebo fM;; . Muzete si to vyzkouset. Pokrocili uzivatele vi umeji hledat i zavorky, odstavce, konec vety (dve mezery) atd. Kde to jsem? Pote co jste posunuli okno, nebo z jineho duvodu chcete vedet, na ktere radce je zrovna kurzor, muzete se na to zeptat: :.= napise cislo radky :nu napise cislo radky a tuto radku :f napise zpravu: "soubor" line xxx of yyy--zz%-- Ctrl-g napise tutez zpravu A mimochodem, muzeme se zeptat i na instalovanou verzi editoru: :ve napise na spodni radce verzi a datum vy- dani Vaseho editoru vi. Oproti tomu se nelze primo zeptat na to, v jakem rezimu se zrovna editor nachazi. Muzete ovsem stisknout klavesu Esc, a jste zcela jiste v povelovem rezimu. Priklad: Chcete vedet, kolik uz ma Vas dokument radek. Stisknete Ctrl-g. Na dolni radce obrazovky dostanete zpravu, napr. "test" [Modified] line 98 of 98 --100%-- Jak je videt, nachazime se na konci souboru o 98 radkach.
obsah
.9 Jak se pise novy text Editor vi akceptuje novy text, pouze kdyz ho prepnete do rezimu "vkladani". Napisete tedy povel a (append). Nyni muzete psat text. (Kdyz tedy napisete Esc a a , bude prvni a vyhodnoceno jako povel editoru a druhe a se objevi na obrazov- ce jako vlozeny text.) V rezimu vkladani muzete psat jako na psacim stroji: . pismena (kurzor ukazuje pristi pozici) . zpetny posun klavesou Backspace (pismeno po preklepu bu- de prepsano) . nova radka pomoci Enter To jsou nejjednodussi moznosti editoru vi. Prirovnanim k psacimu stro- ji jsme ho silne podcenili, nebot jsou zde nepreberne dalsi moznosti, jako skoky kurzoru, zapis do pomocnych pametovych oblasti, substituce v textu a predvolba parametru pomoci povelu :set. Opravy chyb a preklepu Kdyz udelate preklep v textu a hned to zjistite, vratte se o je- den znak klavesou Backspace. Druhy zpusob - navrat pomoci klavesy J- (sipka doleva) a pak oprava pomoci nektereho z povelu r, R, s, C aj. - je budto nevhodny nebo mnohem mene vhodny, protoze na to se mu- site napred pomoci Esc dostat do poveloveho rezimu, a kdyz na to za- pomenete, budete toho mit tim vic k oprave. Krome toho Esc posune kurzor o jednu pozici doleva! Pri oprave preklepu v kazdem pripade davejte pozor na to, kde ma- te kurzor! Kdyz jste se pri psani uplne popletli, pouzijte povel u (undo). Tim eliminujete ucinek posledne vykonaneho povelu, coz bylo a (vkladani textu), cili muzete zacit od zacatku. K uprave existujiciho textu je rada moznosti. Vzdy je treba zacit tim, ze kurzorem najedeme na spravne misto v textu. V nasledujicim od- stavci bude popsano, jak na to.
obsah
2.10 Ovladani kurzoru Kdyz chcete menit existujici text, musite se napred dostat kurzo- rem na prislusnou radku nebo znak. V predchozim odstavci jsme vysvet- lili, jak nastavit okno. Nyni se budeme zabyvat nastavenim kurzoru v ramci okna. Povely ovladani kurzoru umoznuji jeho pohyb jen uvnitr textu, do- stat se mimo text (treba na radku 101 storadkoveho dokumentu) nelze. Klavesy se sipkami funguji spravne jen v povelovem rezimu. Pred pouzitim sipky muzeme zadat pocet opakovani. Napr. 5-L zpusobi posun o 5 znaku vpravo. Takto se tedy muzeme dostat na (n+1)-ty sloupec, jestlize jsme predtim (treba po povelu 0) byli zcela vlevo. Krome vyuziti klaves se sipkami je pro posun kurzoru k dispozici velky pocet povelu pro posun. Dejme tomu, ze kurzor je nekde uprostred okna. Uvedeme nekolik povelu pro jeho posun. h o jednicku doleva j o radku dolu + o radku dolu na zacatek radky Enter o radku dolu na zacatek radky k o radku nahoru - o radku nahoru na zacatek radky l o jednicku doprava mezera o jednicku doprava A jeste dalsi povely pro posun: H (home) na zacatek obrazovky M (middle) doprostred obrazovky L (last) na konec obrazovky - radka 23 0 na zacatek radky | (svisla cara) na zacatek radky ^ na prvni znak radky ruzny od mezery _ (podtrzeni) totez $ na posledni znak radky w (word) na nejblizsi zacatek slova vpravo e (end) na nejblizsi konec slova vpravo b (back) na nejblizsi zacatek slova vlevo W (word) na nejblizsi zacatek dlouheho slova vpravo E (end) na nejblizsi konec dlouheho slova vpravo B (back) na nejblizsi zacatek dlouheho slova vlevo Slovem se rozumi usek textu ohraniceny mezerou, tabelatorem, kon- cem radky a specialnim znakem. Dlouhym slovem se rozumi usek textu ohraniceny mezerou, tabelatorem a koncem radky. Chceme napriklad do existujiciho textu vlozit jedno slovo. Jak dostaneme kurzor efektivne na potrebne misto? Jestlize se kurzor na- chazi vlevo od cilove pozice, muzeme tisknout opakovane klavesu [-L a krokovat tedy po znaku. Rychlejsi je to po delsich krocich, napr. 5[-L nebo 5 mezera, nebo po slovech pomoci w nebo W, nebo jeste rychleji pomoci napr. 3W - a kdyz to prejedeme, vratime se povelem b nebo B. Potom povelem e nebo E skocime na konec slova, napiseme povel a, vlozime slovo a stiskneme Esc. Nebo: pote co jsme se dostali na zacatek pristiho slova, dame po- vel i a rovnou piseme chybejici slovo. Take jsme mohli na radce hledat pomoci fc, Fc, tc, Tc (kde c je znak). Je-li cesta od leveho okraje dlouha, zadame Esc $, tim nam sko- ci kurzor na konec radky a vratime se treba pomoci B nebo 3B. Chcete-li radku rozpulit, umistete na misto zlomu kurzor a zadej- te povel a. Nyni klavesou Enter vlozite znak konce vety a radka se rozdeli. Povelem J muzete aktualni a pristi radku zretezit. Ucinek je nezavisly na poloze kurzoru v aktualni radce. Povelem 3J spojite aktualni radku a dve na- sledujici.
obsah
2.11 Jak se meni existujici text Napred najdeme odpovidajici misto v textu a umistime tam kurzor. Ruseni a obnova casti textu K ruseni pouzivame hlavne povely x a d. Nasleduje nekolik povelu ruseni: x zrusi jeden znak na aktualni pozici kur- zoru 3x zrusi tri znaky od aktualni pozice kur- zoru X zrusi jeden znak vlevo od kurzoru 3X zrusi tri znaky vlevo od kurzoru dd zrusi aktualni radku 3dd zrusi aktualni radku a dve nasledujici dG zrusi zbytek souboru pocinaje aktualni radkou dH zrusi cast souboru od zacatku obrazovky po aktualni radku vcetne d2H zrusi cast souboru od aktualni radky vcetne smerem zpet, na zacatku obrazovky dve radky zbudou D zrusi zbytek radky pocinaje aktualni po- lohou kurzoru Vymazana cast textu je vzdy uschovana v nepojmenovane pracovni promenne a lze ji z ni obnovit. Jak? Nejjednodussi je povel u. Kdyz ho zadate, zrusite ucinek posledne provedeneho povelu. Povelem u obnovite aktualni radku neza- visle na tom, kolika povely jste ji pred tim zmenili. Take povelem p (paste) obnovite prave zruseny text. Tak lze take rychle zdvojit rad- ku: zrusit, pak o radku nahoru, p a znovu p. Pokud jste po zruseni uz zadali nejake dalsi povely a bezejmenna pracovni oblast tak byla modifikovana, ani potom neni vsechno ztrace- no. Editor vi ma totiz techto pracovnich promennych 10, a v nich jsou ulozeny posledni zmeny. Kazda nova zmena se zapise na zacatek a ostat- ni se o jedno misto posunou. Dejme tomu, ze jste neco zrusili a potom napsali kus noveho textu. Povel u vam tedy nepomuze. Zkuste 1p (prvni pracovni pamet). Jestlize se ani takto nevrati ztraceny kousek, dejte hned nato povel "." (tecka - opakovani minuleho povelu). S kazdym dal- sim opakovanim tecky se vam na obrazovku vlozi obsah dalsi pracovni pameti. Pak ovsem budete muset provest uklid. Rozhodne si to nekdy zkuste. Ocislovane pracovni pameti (1-9) muzete cist, ale nelze do nich explicitne zapisovat. K cilenemu uschovani a obnove slouzi 27 pracov- nich pameti oznacovanych malymi pismeny abecedy - viz priklady v odst. 2.14 (uschovani povelu). Zmeny a rozsireni casti textu Pro zacatek rovnou nejake povely: r znak1 (replace) nahradi jeden znak na miste kurzoru znakem1 R text1 (replace) nahradi text na radce pocinaje aktualni pozici textem1 Oba uvedene povely nam pomohou i tehdy, kdyz opravujeme text a caste posouvani kurzoru po radce by pusobilo potize. A jeste jeden radikalni postup: jestlize jste na zacatku radky misto provedeni nekolika pismenovych povelu omylem tato pismena vlozi- li jako text, zruste radku povelem ddd a zacnete znovu. Je to lepsi nez se pachtit za mnoha drobnymi opravami. Poznamka: Nezapomente na Esc a bedlive si hlidejte polohu kur- zoru! Vlozeni prazdnych radek o vlozi prazdnou radku za aktualni radku O vlozi prazdnou radku pred aktualni radku V obou pripadech vi prejde automaticky do rezimu vkladani textu a na- stavi kurzor na prvni pozici vlozene radky. K temto povelum nelze pri- dat faktor opakovani. Chcete-li nekolik prazdnych radek, musite neko- likrat opakovat dvojici Esc o nebo Esc O. Nebojte se pridat vzdy nejake prazdne radky navic. Aspon budete mit dost mista a take odstup od dosavadniho textu. Az nakonec zrusite prebytecne radky napr. povelem 4dd, nebo po jednotlivych radkach. Prirozene, ze vkladani prazdnych radek neni povinne. Muzete vy- stacit s povelem A a vytvarenim novych radek pomoci Enter. Opracovani textu a (append) psani noveho textu za aktualni pozici A (append) pripisovani na konec aktualni radky i (insert) psani noveho textu od aktualni pozice I (insert) pripisovani na zacatek aktualni radky Priklad: Napsali jsme vetu Editor vi je vykonny, ale tezky.. Oprava: Potrebujeme umazat posledni tecku, a nachazime se na za- catku nasledujici radky. Esc (nezapomenout!) k$x (o radku nahoru, na konec radky, smazat znak) nebo -$x (totez) nebo bx (o slovo nazpet a smazat znak) Prakticky priklad: Snazime se vytvorit tabulku ohranicenou vodo- rovnymi carami ze znaku "-" a svislymi carami ze znaku "|". Na zacatku radky napiseme nekolikrat "-". Vratime se na zacatek radky (|), smaze- me znaky od zacatku do konce (D) a pak je nekolikrat za sebou vratime (pppp). Vodorovna cara je hned hotova. Potom do nasledujici radky na- piseme vsechny potrebne svisle cary. Takto vzniklou radku smazeme (dd), posuneme kurzor o jednu radku dolu (k), a zrusenou radku opako- vane vratime (pppppppppp). Ostatne vodorovnou radku muzeme uschovat i bez ruseni, povelem Y Tedy, povelem Y (yank) radku uschovame a povelem p ji zopakujeme. Chceme-li uschovat nekolik radek pouzijeme faktor opakovani. Na- pr. 4Y uschova 4 radky. Povel p (muzeme ho zadat po libovolnem premis- teni kurzoru) nam potom tyto ctyri radky nekam nakopiruje.
obsah
2.12 Vicenasobne provedeni povelu Mnoho povelu editoru lze zadavat s faktorem opakovani, napr. 3- posune kurzor o 3 radky nahoru 4dd zrusi aktualni radku a 3 nasledujici 4dw zrusi text vpravo od prvni pozice za kurzorem az k zacatku ctvrteho slova 5| (5 svisla cara) posun kurzoru na 5. sloupec aktualni radky (nebo na konec radky) 5z. posune okno tak, aby nyni pata radka se ocitla uprostred okna Nektere povely ovsem pokus o zadani faktoru opakovani ignoruji, napr. o, O, p.
obsah
2.13 Prace s vice soubory Pri vyvolani vi muzeme zadat vice nez jeden soubor. V tom pripade pracujeme napred s prvnim z nich, potom ho ulozime a prejdeme k dal- simu povelem Esc :n Enter Prechod k minulemu souboru provedeme povelem Esc :e# Enter Tyto prechody jsou mozne, jen kdyz dosavadni soubor byl ulozen napr. pomoci :w .... Pokud si ulozeni neprejete, muzete prechod k ji- nemu souboru vynutit pouzitim vykricniku. Povelem :e! prinutime editor, aby svuj aktualni obsah prepsal ob- sahem aktualniho diskoveho souboru (t.j. obsahem souboru, jehoz jmeno je prave aktualni napr. proto, ze s timto jmenem byl editor vyvolan). Spolu s povelem e! muzeme zadat take jmeno noveho souboru, cimz se tento soubor stane aktualnim. Vlozeni souboru Povelem :r soubor muzeme do editovaneho textu vlozit obsah souboru. Vkladani zacina za aktualni radkou, nasledujici jiz existujici radky budou nalezite posu- nuty.
obsah
2.14 Dalsi priklady Na tomto miste uvedeme vetsi pocet prikladu povelu. Castecne se jedna o veci, ktere v predchozim textu nebyly probrany. Praxe ostatne ukazuje, ze soubor prikladu bez zbytecnych vykladu byva oblibenym zdrojem informaci, pokud jsou jasne zakladni principy. Nektere prikla- dy jsou pouzitelne i u pribuznych editoru ed a ex. Symbolem "\" je mi- neno obracene lomitko. Ukladani :w ulozeni do aktualniho souboru :w soubor ulozeni do souboru :wsoubor pripsani obsahu pracovni pameti na konec souboru :4,17w soubor ulozeni radek 4 az 17 (14 radek) do souboru :.,17w soubor ulozeni od aktualni radky do radky 17 do souboru :.,.+17w soubor ulozeni aktualni radky a dalsich 17 ra- dek do souboru; "+" nebo "." lze vyne- chat, takze :.,.17w soubor nebo :.,+17w soubor maji stejny ucinek O zadavani rozsahu (range) najdete vice v odstavci Vyhledavani a nahrazovani. Ruseni dd zruseni aktualni radky d0 zruseni znaku vlevo od kurzoru D zruseni znaku vpravo od kurzoru dW zruseni od aktualni pozice do konce dlouheho slova (napr. az k mezere) db zruseni od zacatku slova az tesne pred aktualni pozici 5dd zruseni aktualni radky a ctyr nasleduji- cich -4dd o radku nazpatek a potom zruseni 4 radek :-4d o 4 radky zpatky a potom jednu zrusit :%d zruseni vseho (cele pracovni oblasti) :d zruseni aktualni radky (jako dd) mc nasazeni znacky c na aktualni pozici (jako c muzeme pouzit libovolne pismeno, pojmenovani znacek nijak nesouvisi s pojmenovanim pracovnich promennych a-z) d'c zruseni celych radek, pocinaje aktualni radkou a konce radkou oznacenou znackou c, apostrof zde znamena zacatek radky d`c zruseni souvisleho textu od aktualni po- zice az po pozici oznacenou znackou c, obraceny apostrof zde znamena pozici v souboru ma nasazeni znacky a mb nasazeni znacky b :'a,'bd zruseni celych radek od a do b Kopirovani Y zapamatovani aktualni radky yy zapamatovani aktualni radky 5Y zapamatovani aktualni a 4 nasledujicich radek Yp zdvojeni aktualni radky yyp zdvojeni aktualni radky :10,13t20 vlozeni radek 10-13 za radku 20 :.t. zdvojeni aktualni radky :t. zdvojeni aktualni radky :-2t. predchozi radku nakopirovat za aktualni :r soubor obsah souboru nakopirovat za aktualni radku :4r soubor obsah souboru souboru nakopirovat za radku 4 Prenaseni textu 3dd ruseni 3 radek, nasleduje presun kurzo- ru P obnova zrusenych radek na jinem miste "a3dd nebo 3"add zruseni tri radek a jejich uschovani v promenne a (docasne take v bezejmenne promenne, ale tam to bude behem dalsich zmen posouvano a nakonec zapomenuto, zatimco obsah promenne vydrzi az do konce seance) "ap vlozeni promenne a za aktualni pozici kurzoru nebo za aktualni radku "aP vlozeni promenne a pred aktualni pozici kurzoru nebo pred aktualni radku "aD zruseni zbytku radky a jeho ulozeni do a "cyw ulozeni slova od pozice kurzoru do pro- menne c :4,18m21 (move) radky 4 az 18 presunout za radku 21 :.m.+ vymena radky, na niz je kurzor, s radkou nasledujici :m.+ vymena dvou radek Vyhledavani /xyz v cele pracovni pameti hledej znakovy retezec xyz /xyz / hledani xyz s nasledujicimi dvema meze- rami /^$/ hledani prazdne radky /^\./ hledani tecky na zacatku radky. Pred specialnimi znaky, maji-li byt chapany jako takove, musi byt uveden znak "\". Specialni znaky jsou "^", ".", "$", "|", "*", "\" a "/". /\.$/ hledani tecky na konci radky /\(..,\) hledani retezce: dva znaky nasledovane carkou /^\(....,\) hledani carky ve sloupci 5 /a.c hledani axc, nebo abc, nebo a=c atd. (tj. misto tecky libovolny znak) /( hleda nejblizsi nasledujici levou zavor- ku % hleda k ni odpovidajici pravou zavorku Vyhledavani a nahrazovani :s/old/new/ v aktualni radce misto "old" dosadi "new" :/old/s//new/ najde nejblizsi nasledujici vyskyt "old" a nahradi ho "new" :/old/s/old/new/ najde nejblizsi nasledujici vyskyt "old" a nahradi ho "new" :s/old/new/g v aktualni radce vsechny vyskyty "old" nahradi "new" :1,$s/old/new/g v cele pracovni pameti vsechny vyskyty "old" nahradi "new" :%s/^/ / v cele pameti kazdou radku posune o dve mezery :%s/^ // v cele pameti kazdou radku zkrati o prvni dve mezery & zopakuje posledni povel :s - ale pozor: :s/old/(&) v aktualni radce prvni vyskyt "old" na- hradi jim samym :s/old/&new prvni vyskyt "old" nahradi "oldnew" :%s/old/&new/g v cele pracovni pameti vsechny vyskyty "old" nahradi "oldnew" :s/$/./ pridani tecky na konec aktualni radky Rozsah platnosti dvojteckoveho povelu % cela pracovni oblast n radka cislo n .n n-ta radka za aktualni radkou .-n n-ta radka pred aktualni radkou 1 zacatek souboru $ konec souboru /vzor/ radka obsahujici zadany vzor (neco pro znalce: vzor muze byt i regularni vyraz) od,do carka oddeluje zacatek a konec Specialni znaky ve vzorech ^ zacatek radky (nepocitaje mezery) /^.../ $ konec radky /...$/ . (jeden) libovolny znak .. (dva) libovolne znaky, podobne ... atd. * libovolny pocet opakovani predchoziho znaku .* libovolny neprazdny znakovy retezec x* jeden nebo vice znaku x \ nasledujici znak chapej doslovne (po- trebne pro specialni znaky "^", ".", "$", "|", "*", "/" a "\") Pro ilustraci rozsahu a specialnich znaku ve vzorech jeste dva priklady nahrazovani pomoci povelu :s . Priklad 1. V aktualni a nasledujicich 25 radkach ma byt hvezdicka ve 4. sloupci nahrazena plusem. :.,.25s/^\(...\)\*/\1+/ rozsah/ vzor /nahrada/ uzavorkovana cast 1 tvorena tremi lib. znaky po casti 1 doslovne chapana * cast 1 beze zmeny nasledovana + Priklad 2. Radku 1-3 abc zmenit na 1-x3 abc Reseni: zmena probehne podle schematu / \(...\) \(...\) / \1 \2 / tedy :s/^\(.-\)\([1-9]\)/\1x\2/ Cast 1 je libovolny znak nasledovany minusem, cast 2 je nenulova cis- lice. Cast 1 bude rozsirena o x, potom k tomu bude pridana cast 2. Zbytek radky (znaky abc) bude automaticky posunut doprava. Touto metodou muzeme i zmenit poradi "casti", napr. /\2\1/. Uschovani povelu Povel napiseme do pracovni pameti jako radku textu. Specialni znaky odpovidajici klavesam Esc, Enter napiseme jako Ctrl Esc, Ctrl Enter. Na obrazovce budou zobrazeny jako ^[ , ^M . Napr. po- vel zruseni prvnich ctyr radek textu bude zobrazen takto: ^[1G4dd Nyni tuto konstrukci uschovame do pracovni promenne a povelem Esc "ayy a radku zrusime povelem dd. Nasleduje @a vykonani uschovaneho povelu, pripadne @@ opakovani naposledy vybaveneho povelu Zde mame opravdu hodne moznosti, jak si zmechanizovat caste na- vzajem si podobne ukony. Zacnete s necim jednoduchym a vymyslete si vlastni konstrukce. Povely shellu: :!Gsort setridi cely obsah pracovni pameti :1,5!sort setridi radky 1 az 5 :.,.5!sort setridi sest radek pocinaje aktualni
obsah
2.15 Volba parametru editoru Editor vi umoznuje praci s promennymi, zavedenymi jeho predchud- cem, radkovym editorem ex. Tyto tzv. ex-promenne si muzete zobrazit na obrazovce povelem :set all nebo :se all Hodnoty zminenych promennych jsou definovany implicitni predvol- bou. Behem prace s editorem vi je muzeme menit povelem :set napr. :se nu. Predvolene hodnoty promennych lze trvale zmenit, kdyz prislusne povely :set zapiseme do souboru .exrc: cat .exrc se nu Ctrl-d Druha moznost je pouzit promennou shellu $EXINIT: setenv EXINIT "se nu" Uvedeme nektere ex-promenne. O vsech se lze docist v priruckach operacniho systemu UNIX - povel ex. autoindent, ai (implicitni predvolba noai) Pri vkladani noveho textu (napr. povel a) bude kazda napsana radka za- rovnana vlevo s radkou predchazejici. Zarovnani se deje vlozenim mezer nebo znaku tabelatoru. Prvni radka vkladaneho textu je zarovnana podle radky, ktera byla aktualni v okamziku povelu prechodu do rezimu vkla- dani. Jestlize na zacatku nektere vkladane radky napiseme znak tabela- toru, tj. Ctrl-i, budou nasledujici radky zarovnany o tento tabela- tor navic. Jestlize chceme naopak na zacatku radky ze zarovnani ubrat, stiskneme jednou nebo vickrat Ctrl-d, aniz bychom pri tom opustili textovy rezim. Kazde pouziti Ctrl-d posune zarovnavani doleva o to- lik znaku, kolik je hodnota promenne shiftwidth. Napoprve se nam takto posune doleva aktualni radka. Jestlize ale napiseme 0Ctrl-d, zmeni se hodnota zarovnani pro vsechny radky. autowrite, aw (noaw) Pri zmene souboru nebo ukonceni editoru bude obsah pracovni oblasti vzdy ulozen. ignorecase, ic (noic) Pri vyhledavani se nebude rozlisovat mezi velkymi a malymi pismeny. list (nolist) Znaky tabelatoru a znaky konce vety budou na obrazovce znazorneny jako ^I a $. number, nu (nonu) Na zacatku kazde radky bude zobrazeno jeji poradove cislo. shiftwidth, sw (=8) Tato promenna udava krok zarovnavani, pouzity v rezimu autoindent a u povelu a. tabstop, ts (=8) Tato promenna urcuje rozmisteni zarazek tabelatoru pri zobrazeni textu. window (=23) Pocet radek v okne. wrapscan, ws (ws) Je-li tato promenna aktivovana, potom prohledavani pomoci // nebo ?? pokracuje od zacatku nebo konce souboru. V opacnem pripade prohledava- ni skonci na konci nebo na zacatku souboru. writeany, wa (nowa) umozni prepsat libovolny soubor, k nemuz ma uzivatel pristupove pravo. Jinak receno, povel write bude proveden bez predchoziho zkoumani, zda soubor uz existuje.
obsah
3. Strucny prehled povelu Quick Introduction to the vi Editor Entering vi vi name start vi editor with file name. The file is created if it doesn't exist. Leaving vi ZZ exit from vi, saving changes :q! exit from vi, discarding changes Cursor Positioning h moves left one character position j moves down one line k moves up one line l moves right one character position 0 (zero) moves to the beginning of a line w moves right one word b moves left one word Ctrl-u moves up 1/2 screen full Ctrl-d moves down 1/2 screen full G moves to the bottom of the file nG moves to line number n Ctrl-l clear screen and re-draw Pattern searching /pattern/ positions the cursor at the next occur- rence of the string pattern Text Modification i text Esc inserts text to the left of the cursor. Insert doesn't cause the cursor to move; text appears as it is typed, terminate with Esc. a text Esc appends (inserts) text to the right of the cursor, terminate with Esc. R text Esc replaces (overprints) characters at cur- sor position, terminate with Esc. dd deletes the line the cursor is on ndd deletes n lines from the cursor position. Note: Deleted lines are replaced with @ which is removed when the page is re- drawn. D deletes characters from the cursor posi- tion to the end of the line x deletes the character at the cursor nx deletes n characters to the right of the cursor u undo the last change Notes Esc represents the Esc key. Press the Esc key when it is called for in the above commands. Ctrl represents the Ctrl key. Hold the Ctrl key and press the following key simultaneously. Second Level vi Editing Commands Cursor Positioning } move down one paragraph { move up one paragraph mx save the current cursor position and la- bel it with the letter x (x is any let- ter) 'x return to the cursor position labeled x Text Modification dw delete the next word . (period) repeat last change A append at the end of the current line P put back deleted line(s). Text deleted with D and dd commands maybe pasted back with the P command. Text is pasted in be- fore the cursor position. :a,bs/old/new/ From line number a to line number b, substitute the pattern "old" with the pattern "new". You may use any text string which doesn't contain a carriage return in place of the "old" and "new" strings. Use Ctrl-G to tell what line the cursor is on. Miscellaneous :w write out current changes. The vi editor works on a copy of your file. The :w command causes the editor to write its copy over the original which is on the disk. :w name write out changes to the file name like the :w command but the changes are writ- ten into the file you specify (good for making intermediate copies). Cut and Paste Move to the beginning of the text to cut. Use dd to delete (cut) several lines. Use D to cut only the end of one line. Move to the place where you wish to paste the text. Use P to put back the text. You may need to clean up the spacing after pasting. Pattern Searching // search for the next occurrence of a pre- viously specified search string.
obsah
4. LITERATURA PRO DALSI STUDIUM [1] UNICOS Text Editor's Primer (SG-2050) [2] UNICOS User Commands (SR-2011) [3] SUN OS Documentation Tools, kap. 2 [4] L.Lamb: Learning the vi Editor (O'Reilly & Associates, Inc.)
manualy