1 Úvod a história

Editor VI je najrozšírenejší textový editor na systémoch typu UNIX. Jeho meno je v dnešnej dobe trochu kuriózne. Editor vznikol v začiatkoch operačných systémov UNIX, kedy boli k dispozícii iba editory, ktoré vedeli zobrazovať v jednom okamžiku iba jeden riadok textu a ten upravovať. Editor VI už zobrazoval na obrazovke celú stranu textu (dokumentu) naraz a umožňoval pohyb v tomto texte a jeho modifikácie, tak ako sme dnes všetci zvyknutí. Táto jeho skvelá vlastnosť viedla jeho tvorcov k menu, ktoré editor dostal. Okrem editora VI, ktorý vznikol veľmi dávno, existuje aj editor VIM. Editor VIM je klasický editor VI rozšírený o množstvo ďalších vlastností a funkcií. Editor VI je súčasťou každého OS UNIX. V OS LINUX je možné sa stretnúť prevažne len s jeho vylepšenou verziou - VIM. Editor VI je kvalitný editor poskytujúci používateľovi širokú škálu najrôznejších funkcií, ktoré môže používateľ pri písaní textov a zdrojových kódov potrebovať. Veľa ľudí aj napriek jeho dobrým vlastnostiam tento editor radšej nepoužíva. Dôvodom je na prvé použitie komplikované ovládanie. Ide väčšinou o ľudí, ktorí prišli z operačného systému Microsoft Windows, a teda ľudí zvyknutých na vizuálne prostredie a textové editory (procesory), ktorých funkcie sú jednoducho prístupné cez menu a použitie myši. Aj napriek komplikovanému ovládaniu nie je potrebné hneď zanevrieť na tento editor a skúsiť sa naučiť používať ho. Jeho ovládanie je možno trochu komplikovanejšie ako ovládanie MS Wordu, ale na druhej strane poskytuje oveľa väčšiu efektívnosť pri práci. Treba skúsiť.

1.1 Na čo sa hodí a nehodí editor VI (M)

Editor VI (M) je vhodný na písanie ľubovolného textu, ktorý netreba nejako špeciálne formátovať pre potreby tlače. Teda žiadne fonty, odrážky, formátovnia odstavcov, farby (pre tlač) a podobne. Vzhľadom na funkčnú podporu, ktorú má editor zabudovanú (odkazy na chyby po kompilácii, dopĺňanie textu), je editor vhodný na písanie programov.

1.2 Prečo používať VI (M)

  • editory VI (M) sú veľmi rozšírené v OS UNIX / LINUX, ktoré sa vyznačujú svojou
robustnosťou, stabilitou a (nie len) sieťovou bezpečnosťou => tieto OS sa v komerčnom svete často používajú => je dobré vedieť používať štandardné nástroje, ktoré sa nachádzajú v týchto OS

  • editor VI (M) je veľmi efektívny editor, čo môže viesť k značnému ušetreniu času
pri jeho použití a zvládnutí jeho ovládania

  • existujú aj verzie VIM pre OS Windows => stačí keď viete dobre používať jeden
editor a vystačíte si na najpoužívanejších OS (aspoň v Európe myslím, že sú najpoužívanejšie)

2 Práca s editorom

2.1 Spustenie editora

Editor VI (M) umožňuje používateľovi editovať existujúci súbor a pokračovať v jeho editácii alebo vytvoriť nový súbor. Príkaz na naštartovanie editora je vi nasledované menom súboru. Napr. vi temp.txt pre editovanie súboru temp.txt (ak neexistuje, tak sa vytvorí pri uložení otvoreného súboru na disk), alebo vi čím sa vytvorí dočasný súbor (neodporúčam). Po spustení editora je možné na obrazovke vidieť začiatok textu súboru. Ak je súbor malý alebo bol vytvorený nový súbor, tak je možné vidieť na začiatku riadkov znak ~. Tento znak sa objavuje na začiatku každého riadku obrazovky, ktorý je prázdny, teda súbor končí posledným riadkom bez znaku ~.

2.2 Ukončenie editora

Keď máme otvorený editor VI je dobré aj vedieť, ako ho ukončiť. Na ukončenie editora je potrebné dostať sa do tzv. príkazového módu (command mode) a zadať príkaz na ukončenie práce s editorom. Do príkazového módu sa dostaneme stlačením klávesy Esc (po spustení sa default nachádzame v príkazovom móde, teda netreba sa do neho nijako dostávať). Potom treba zadať príkaz na ukončenie práce s editorom :q, ktorý ukončí editor v prípade, že neboli vykonané žiadne zmeny v dokumente. V prípade, že zmeny boli urobené, editor na to upozorní používateľa a nedovolí mu ukončiť ho. Keď chceme ukončiť editor a ignorovať vykonané zmeny treba napísať príkaz :q! Ak chceme vykonané zmeny uložiť je potrebné v príkazovom móde napísať :w Ak chceme zmeny zapísať do iného súboru je potrebné napísať :w filename kde filename je meno súboru. Ak chceme uložiť zmeny a ukončiť prácu v editore je možné príkazy spojiť a napísať :qw alebo napísať príkaz ZZ čo je ekvivalent pre :qw a je to rýchlejšie pri písaní (tie ZZ sú veľké).

2.3 Módy práce VI

Editor VI má dva módy práce. Ide o príkazový mód (command mode) a vkladací mód (insert mode). Príkazový mód umožňuje zadávať príkazy pre manipuláciu s textom a riadenie a konfigurovanie editora (exit, nastavenie veľkosti tabulátora a pod.) . Tieto príkazy sú väčšinou zadávané formou klávesových skratiek. Vkladací mód umožňuje pridávať nový text. Editor VI sa po štarte nachádza v príkazovom móde. Na prechod editora do vkladacieho módu sa môžete použiť príkazy a a i ktoré budú popísané neskôr. Na prechod z vkladacieho módu do príkazového treba stlačiť klávesu Esc Keď už sme v príkazovom móde, opätovné stlačenie klávesy Esc nespôsobí prechod do vkladacieho módu.

2.4 Ako písať príkazy v príkazovom móde

Príkazy v príkazovom móde majú väčšinou takýto tvar:

[počet] príkaz [kde] pričom počet definuje koľko krát sa má príkaz uskutočniť a je zadaný ako číslo. Ak napríklad chcem zmazať 10 znakov napíšem v príkazovom móde 10x pričom príkaz x zmaže znak v mieste kde sa nachádza kurzor. Kde špecifikuje oblasť textu na ktoré sa má aplikovať príkaz. Možno špecifikovať koľko riadkov alebo akú časť dokumentu má príkaz postihnúť. Kde môže byť aj ďalší príkaz ktorý slúži na pohyb kurzora (v podstate vždy to je príkaz na pohyb kurzoru). Napr. zmazanie všetkých riadkov do konca súboru by sa napísalo ako dG kde d je príkaz na mazanie a G je príkaz na posun kurzora na koniec dokumentu.

2.5 Jednoduché príkazy

Na začiatok niekoľko najpoužívanejších príkazov. V zátvorke budú uvedené varianty pre daný príkaz v editore VIM. a - prechod do vkladacie módu, vkladané znaky budú umiestňované za aktuálnu pozíciu kurzoru. Ak sa špecifikuje počet, tak vložený text sa vloží opakovane na toto miesto. i - prechod do vkladacie módu, vkladané znaky budú umiestňované pred aktuálnu pozíciu kurzora. Ak sa špecifikuje počet, tak vložený text sa vloží opakovane na toto miesto (insert) h - posun kurzora jednu pozíciu doľava (šipka vľavo) j - posun kurzora jeden riadok nižšie (šipka dole) k - posun kurzora jeden riadok vyššie (šipka hore) l - posun kurzora jednu pozíciu doprava (šipka vpravo) r - nahradí jeden znak pod kurzorom zadaným znakom. Ak sa špecifikuje počet, tak zadaný text nahradí počet znakov na tomto mieste. u - undo posledná zmena. Ak sa napíše znova tak to znamená redo. (viac krokové undo) x - zmaže znak na pozícii kurzora. Ak sa špecifikuje počet, tak je zmazaných počet znakov.

2.6 Pohybovanie v texte

Na pohybovanie v texte slúžia okrem spomenutých základných príkazoch aj niektoré ďalšie. Príkazy na pohyb kurzora sa používajú aj pri stanovení rozsahu platnosti iných príkazov (mazanie, kopírovanie a pod.). Preto sa venujeme najskôr pohybom v texte a až potom ostatným príkazom. E, e - presun na koniec tohto slova, v prípade e je slovo text oddelený interpunkčnými a inými znakmi, v prípade E je slovo všetko čo je oddelené bielymi znakmi B, b - presun na začiatok tohto slova, v prípade b je slovo text oddelený interpunkčnými a inými znakmi, v prípade B je slovo všetko čo je oddelené bielymi znakmi W, w - presun na začiatok ďalšieho slova, v prípade w je slovo text oddelený interpunkčnými a inými znakmi, v prípade W je slovo všetko čo je oddelené bielymi znakmi $ - presun na koniec riadku (end) ^ - presun na začiatok riadku (home) G - presun na koniec súboru rG - presun na riadok číslo r, kde r je počítané od začiatku súboru. Čiže 1G nás presunie na začiatok prvého riadku súboru

2.7 Vystrihávanie, kopírovanie a vkladanie textu

Príkaz d slúži na vystrihnutie textu, čiže zmaže text a uloží ho do štandardného buffera (niečo ako clipboard vo Windows) a príkaz y slúži na skopírovanie text do štandardného buffera. Príkazy sú predchádzané špecifikáciu počtu použitia príkazu (počet) a nasledované špecifikáciou pohybu kurzora (kde). Ak zapíšeme príkaz dva krát po sebe znamená to že sa vzťahuje na aktuálny riadok. Nasledujú nejaké

príklady:

d^ - zmaže znaky od pozície kurzoru po začiatok riadku d$ - zmaže znaky od pozície kurzoru po koniec riadku dw - zmaže znaky od pozície kurzoru po koniec tohto slova yy - skopíruje riadok na ktorom sa nachádza kurzor do buffera 3dd - zmaže tri riadky vrátane riadku kde je umiestnený kurzor

Príkazy p a P slúžia na vkladanie obsah buffera do textu. Príkaz P vloží pred riadok, na ktorom je umiestnený kurzor a p za tento riadok.

2.8 Buffere

Ako už bolo spomínané príkazy y, d a p pracujú z buffrom, ktorého správanie je možné prirovnať k správaniu clipboardu. Okrem štandardného buffera, ktorý sa používa ak nie je uvedené inak, je možné používať aj pomenované buffere. Pomenované buffere sa používajú tak, že pred samotný príkaz sa vloží postupnosť "m kde znak m je ľubovolné písmeno alebo číslica, tzv. meno buffera. Napríklad skopírovanie 5 riadkov do buffera b a jeho vloženie na koniec súboru bude táto

postupnosť príkazov:

"m5yy G p

2.9 Vyhľadávanie v texte

Na vyhľadávanie slúžia príkazy /, ?, n. Vyhľadávanie sa vykonáva prostredníctvom regulárnych výrazov (ak neviete regulárne výrazy nevadí, ani nezbadáte, že ich potebujete). Pre hľadanie prvého výskytu textu awk smerom dole zapíšeme ako /awk Ak sa takýto text vyskytuje v texte kurzor sa presunie na pozíciu prvého výskytu. Ak chceme hladať ďalší výskyt, tak zadáme príkaz n Ak sa hľadaný text nenachádza v texte editor nás na toto upozorní prostredníctvom správy v stavovom riadku. Pre hľadanie toho textu turbo smerom hore zapíšeme príkaz

takto:

?turbo V prípade ďalšieho hľadania opäť použijeme príkaz n.

2.10 Nahrádzanie textu iným textom

Nahrádzanie sa robí nasledujúcim príkazom:

:s/povodnytext/novytext/g povodnytext je regulárny výraz ktorý špecifikuje čo sa má nahrádzať, novytext je text, ktorým sa majú nájdené výskyty nahradiť. Ak sa neuvedie na konci príkazu g tak sa nahradí len prvý výskyt na každom riadku. Ak sa g uvedie nahradia sa všetky výskyty. Pred samotným príkazom s možno uviesť rozsah dokumentu na ktorý sa má vyhľadávanie vzťahovať. Za všetky keci radšej nejaké príklady: :1,$s/varname/newname/g alebo :%s/varname/newname/g Nahradí v celom súbore všetky výskyty textu varname za text newname (od prvého riadku po posledný). :.,+20s/\