vi [-r soubor] [-wn] [-R] [+povel] [soubor...]
vedit [-r soubor] [-wn] [-R] [+povel] [soubor...]
view [-r soubor] [-wn] [+povel] [soubor...]
vi -R /usr/include/sys*
vi +50 /etc/termcap vi +/vt100 /etc/termcap
$ vi muj.denicekPřejdeme do vkládacího režimu stiskem i a budeme psát text:
Milý deníčku! Můj chlapec John mi dnes věnoval manuál vi editoru a v kavárně Slavia koupil panáka absintu a esej Václava Havla v angličtině. Jsem tak málo nešťastná!
Milý deníčku! Můj chlapec John mi dnes věnoval manuál vi editoru a esej Václava Havla v angličtině. Jsem tak šťastná!
Milý deníčku! Můj americký chlapec John mi dnes věnoval manuál vi editoru a esej Václava Havla v angličtině. Je úplně jiný než ostatní chlapci! Jsem tak šťastná!
:x
:q!
a tím o změny v textu přijdeme, v našem příkladu tedy o celý soubor.
$ vi muj.denicek
| Regulární výraz | Vyhovující posloupnost znaků |
|---|---|
| znak | znak bez zvláštního významu ( tj. kromě ^ & * . \ [ ] ~ ). Chceme-li je v regulárním výrazu použít jako ASCII znak, zamaskujeme předcházejícím znakem \ |
| ^ | na začátku vzoru značí začátek řádky |
| $ | na konci vzoru značí konec řádky |
| . | libovolný jeden znak |
| \< | začátek slova |
| \> | konec slova |
| [řetězec] | znak, obsažený v řetězci, lze použít intervaly znaků , ve tvaru počáteční-koncový. Např. [A-Z] značí velká písmena |
| [^řetězec] | znaky, které nejsou obsaženy v řetězci|
| řetězec* | žádný nebo libovolný počet řetězců (lze použít i interval znaků) |
| řetězec1řetězec2 | řetězec vyhovující regulárnímu výrazu řetězec1, následovaný řetězcem, vyhovujícímu regulárnímu výrazu řetězec2 |
| \(řetězec\) | uzavření regulárního výrazu řetězec do závorek pro jeho očíslování za účelem zkrácení zápisu. Každému takto uzávorkovanému regulárnímu výrazu odpovídá zleva číslo od jedné do maximálně šesti. Na tyto dílčí regulární výrazy se lze potom odkazovat jako \1 až \6 ve vzorech pro hledání a lze je použít při konstrukci nových řetězců v povelech náhrady. |
| Vzor | Vyhovuje |
|---|---|
| /^$/ | prázdná řádka |
| /./ | nejméně jeden znak na řádce |
| /^/ | všechny řádky |
| /^vzor/ | řetězec vzor na začátku řádky |
| /vzor/ | řetězec vzor kdekoliv na řádce |
| /vzor$/ | řetězec vzor na konci řádky |
| /^vzor$/ | řádky obsahující pouze řetězec vzor |
| /vzor\./ | řetězec 'vzor.' kdekoliv na řádce |
| /[Vv]arianta[1-3]/ | řetězce Varianta1, Varianta2, Varianta3, varianta1, varianta2, varianta3 |
| /^V Praze.*1\.1.97$/ | řádky obsahující na začátku řetězec 'V Praze' a na konci řetězec '1.1.97' |
Textové objekty jsou definovány povely pro pohyb kurzoru, argument manipulačního povelu vymezuje text mezi aktuální pozicí kurzoru a polohou kurzoru, danou povelem objekt.
Pokud se namísto objektu zopakuje manipulační povel, znamená to jeho aplikaci na celý řádek na němž stojí kurzor.
dd vymaže celý řádek, na němž stojí kurzor
20>> posune dvacet řádků od řádku na němž je kurzor
o tabulátor doprava.
100d+
10d10+
d+100+
Tyto povely mají stejnou funkci a vymažou text od
pozice kurzoru sto řádek.
!Lsort setřídí řádky od řádku s kurzorem do posledního řádku
obrazovky
Co je to?
>M cw c) c( c}
Některé funkce pouze v režimu editoru ex (do něhož přejdeme povelem : ), popř. někdy jsou efektnější alternativou k povelům režimu vi.
Adresa udává rozsah řádků, na kterých operuje povel:
| adresa | význam | . | tečka značí aktuální řádek. Pracuje-li povel pouze s jedním řádkem, není třeba psát (standardní hodnotou povelů je zpravidla aktuální řádek | n | n-tý řádek | $ | poslední řádek vyrovnávací paměti | 0 | začátek vyrovnávací paměti | % | celá vyrovnávací paměť (zkratka pro adresu 1,$) | +n | n-tý řádek za řádkem aktuálním | -n | n-tý řádek před řádkem aktuálním | /vzor/ | hledá směrem vpřed text vyhovující regulárnímu výrazu vzor. Pokud se hledá pouze výskyt textu vzor, stačí pouze /vzor. Zadá-li se adresa pouze jako /, definuje další výskyt | '' | návrat k poslednímu řádku | 'c | řádek označený v režimu vi povelem mc nebo v režimu ex :mc |
|---|
Př. Povel :.,+2 co0 okopíruje na začátek souboru aktuální řádek a dva řádky následující
Př.
Povel :,$d vymaže text od řádku na který ukazuje kurzor do konce vyrovnávací paměti a :.+3j spojí aktuální řádek a tři řádky za ním následující v jeden.