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