EDITOR VI
Pokud se dostanete do tohoto editoru
omylem, můžete ho ukončit následující
posloupností znaků (neuloží se změny): <Esc>:q!
Editor má 3 režimy - režim řádkový, režim povelový (zobrazování)
a režim
vkládání. Po spuštění editoru je obvykle nastaven zobrazovací režim (v
případě nastavení
neznamého typu terminálu v environment proměnné TERM lze pracovat
pouze v řádkovém režimu).
Povelový režim umožňuje provádět následující základní editační operace:
pohyb po
souboru, výmaz znaků (textu), práce s odkládací oblastí (varianta
bloků). Pro uložení
souboru a ukončení editoru se musí přejít do příkazového režimu. Režim
vkládání, jak
název napovídá, slouží pro vkládání nových znaků do souboru.
Povelový režim editoru vi
V povelovém režimu se k zobrazování textu používá celá obrazovka.
Základní příkazy pro pohyb po textu:
šipka_nahoru O řádku nahoru, též k.
šipka_dolů O řádku dolů, též j.
šipka_vpravo O znak doprava, též l.
šipka_vlevo O znak doleva, též h.
$ Na konec řádku, též <END>.
0 Na začátek řádku.
w Na začátek následujícího slova.
b Na začátek předchozího slova.
G Na konec souboru.
1G Na 1. řádek souboru.
^F O stránku dolů - ke konci souboru, též <PgDn>.
^B O stránku nahoru - k začátku souboru, též <PgUp>.
^D O půl stránky dolů - ke konci souboru.
^U O půl stránku nahoru - k začátku souboru.
/řetězec Vyhledání řetězce znaků směrem ke konci souboru
(po stisknutí klávesy / se zadává řetězec na dolním řádku).
Pokud se řetězec do konce souboru nenajde, hledá se od
začátku souboru (cyklické vyhledávání).
?řetězec Vyhledání řetězce znaků směrem k začátku souboru, jinak
stejně jako /řetězec.
Základní příkazy pro výmaz a opravu existujícího textu:
x Maže znak na pozici kursoru.
dd Výmaz aktuální řádky.
dpohyb Maže text od aktuální pozice po pozici, kam směřuje pohyb.
Příklady:
d$ výmaz od aktuální pozice do konce řádku,
dG výmaz od aktuální pozice do konce souboru,
d/text výmaz od aktuální pozice po první výskyt řetězce text,
rx Přepsání znaku na pozici kurzoru znakem x.
J Připojení následujícího řádku na konec aktuálního řádku
(tj. vymazaní znaku konce řádky).
Práce s odkládací oblastí:
yy Uložení aktuálního řádku do odkládací oblasti.
ypohyb Uložení textu do odkládací oblasti od aktuální pozice po
pozici, kam směřuje pohyb. Příklad:
y$ uložení textu od aktuální pozice do konce řádku,
p Vložení textu z odkládací oblasti za pozici kurzoru.
P Vložení textu z odkládací oblasti před pozici kurzoru.
Režim vkládání editoru vi
Do režimu vkládání/přepisování se editor přepne jedním z následujících
příkazů v
povelovém režimu:
a Vkládání za pozici kurzoru.
A Vkládání na konec řádku.
i Vkládání na pozici kurzoru.
I Vkládání na začátek řádky.
R Režim přepisování znaků.
Ve vkládacím režimu mají pouze dvě klávesy speciální význam
(<Esc> a
<BackSpace>) - vše ostatní se vkládá do souboru. <Esc>
ukončuje vstupní režim
- editor přechází zpět do editovacího režimu. <BackSpace> po
jednom maže vložené
znaky.
V režimu vkládání nelze používat šipky!!!
Řádkový režim editoru vi, editory ex a ed
V řádkovém režimu lze používat příkazy editoru ex. Jeden příkaz
řádkového režimu můžeme zadat po znaku : - editor zobrazí na dolní
řádce dvojtečku
a lze zadat příkaz. Trvale lze přejít do příkazového režimu pomocí
povelu Q.
Zpět do obrazovkového režimu lze přejít příkazem visual.
V editorech ed a ex lze u většiny příkazů určit rozsah aktivity
příkazu, a to buďto
označením jednoho řádku nebo dvojicí řádků. Pro označní řádků lze
použít:
. Současný řádek.
$ Poslední řádek textu v editované oblasti.
n Číslo desítkové soustavy označuje pořadí řádku editované oblasti.
.+n Relativní odkaz na řádek vzdálený n řádků kupředu.
.-n Odkaz na řádek vzdálený n řádků zpět.
/řetězec První řádek od aktuálního směrem ke konci editované oblasti
obsahující řetězec (řádek odpovídající zadanému regulárnímu
výrazu).
Ve dvojici jsou adresy odděleny znakem ,. Např.
1,$ adresuje celou oblast editace.
.,+3 adresuje oblast od aktuálního řádku do řádku o 3 dále včetně,
Nejčastěji používané příkazy řádkového režimu editoru vi:
[rozsah] w [soubor]
Zápis editovaného textu do souboru. Pokud se jméno souboru neuvede,
přepíše se soubor, který byl otevřen. Variantou w! lze textem
přepsat soubor, ke kterému má uživatel pouze přístup na čtení. Příkaz
wq je totéž jako w a pak q. Pokud není uveden rozsah,
zapisuje se text z celé editovací oblasti.
q Ukončení práce editoru. Pokud změny nejsou uloženy, nelze
takto ukončit.
q! Ukončení editoru bez uložení změny.
r soubor
Načtení textu ze souboru do oblasti editace za aktuální řádek.
[rozsah] s/regulární_výraz/text/[volby]
Výměna textu danného regulárním výrazem za text. Jako volbu lze zadat
g, který rozšiřuje platnost výměny na všechny výskyty
regulárního výrazu na řádce. Při použití volby c bude editor
požadovat před každou výměnou potvrzení. Pokud není uveden rozsah, týká
se výměna pouze aktuálního řádku. Příklad:
1,$ s/novak/Novak/gc
V celém souboru se místo řetězce novak zapíše řetězec Novak. Před
každou výměnnou se editor zeptá, zda ji má opravdu provést.
[rozsah] p
Výpis řádku (řádků dle zadaného rozsahu) na obrazovce.
a Vkládání textu za aktuální řádek. Následující text zapisovaný
na terminál je vložen do oblasti editace až po řádek, který
obsahuje pouze v prvním sloupci znak .
i Vkládání textu před aktuální řádek.
[rozsah]d
Zrušení aktuálního řádku (řádků dle zadaného rozsahu).
[rozsah] g/regulární_výraz/příkazy
Na řádcích, které odpovídají regulárnímu výrazu se provedou zadané
příkazy. Příklad:
1,$ g/^#/d
v celém souboru se zruší řádky, které začínají znakem #.