======Základny====== Poznámka ve vicku: znak **''"''** uvozovka * spustit: **vi** a/nebo **vim** (**view** readonly režim) * POZOR, editor je **modální**, má režimy, "je ve stavu" * opuštení editoru: viz ukazkové EX1 příkazy v násl obrazku: ======rezimy====== VISUAL EDIT -------------- -------------------------- / \ / \ | | |backspace | | | |vim umi sipky... | |Odstavec | | | |ods ta vec. | | | | | | | | |------------>| | | | i nsert | | prompt$ vi file -->| | r eplace | | |^radek$ | O pen | | |0dalsi radek$| o pen | | | | c hange | | | k | | | | h l | | | | j |<-----ESC----| | | | | | | | | | \G____________/ \_________________________/ : | |odskok do EX V :w [file] "zapis/uloz, pripadne do jineho :x [file] "uloz a ukonci :q "ukonci editor, zepta se :q! "ukonci a neptej se :e file "nacti jiny soubor :n f1 f2 "nacti jine soubory :n "nacti dalsi soubor prompt$ ex file --> :prikazovy EX rezim (trvale) :vi"sual "jdi do VISUAL rezimu ======VISUAL MOVE====== * //kursor// blikající obdélník, aktuální pozice je jeho levá hrana * směr **vpřed**: ke konci souboru, **malé písmeno** * směr **zpět**: k začátku, **VELKÉ PÍSMENO** MOVE příkaz pouze přesunuje aktuální pozici //kursoru//, původní a nová pozice tvoří //rozsah// (//range//). * šipky (posun o znak) * **h** doleva, **j** dolů, **k** nahoru, **l** doleva * **w** word, **b** back-word, **e** end-word * **W** word, **B** back-word, **E** end-word velké slovo, vyjímka z pravidla malé/VELKé písmeno * **}** **{** skok o odstavec (oddělovač prázdný řádek) * **0** **^** začátek řádku, **$** konec řádku * **G** skok na řádek/konec souboru * **f**//char// skok na //znak// * **%** skok mezi párovými znaky (závorky) příkazu může předcházet //číslo//, např: * **3}** skok o 3 odstavce * **3w** skok o tri slova * **2l** posun o dva znaky * **1G** skok na 1řádek položení značky **m**ark: * **m**//char// kde //char// je **a-z** * **'**//char// skok na značku //char// viz **m**ark * **%%''%%** skok na poslední posizi Pohyb, rolování: * **^F** **^B** **PgDn** **PgUp**, vim7.x umí i rolovat mysi * **H**igh **M**idle **L**ow přesune kursor nahoru/doprostred/dolů ======VISUAL EDIT====== editační příkazy se získají kombinací **MOVE** a **i**nsert, **r**eplace a následujících operátorů : * **d** elete (Cut) * **y** ank (Copy), Paste je pak příkaz **p** **P** * **c** hange * **>** shift doleva * **<** shift doprava * **!** filtr přes příkaz (''popen'') Některé kombinace mají jednopísmenkovou //builtin// variantu: * **x** == **dl** vymaž znak vpravo * **X** == **dh** vymaž znak vlevo * **D** == **d$** vymaž do konce řádku * **d0** vymaz do zacatku radku * **dG** vymaz zbytek souboru * **d1G** vymaz do zacatku souboru * **d3}** vymaz nasledujicí 3 odstavce * **dw** **dW** **de** ... dá se pokračovat Totéž se dá kombinovat s **y** místo **d** * **Y** == **y$** napastuj zbytek řadku Neexistuje ale MOVE konstrukce pro označení celého řadku! toho se dosáhne jednoduše: **zdvojíme** operátor: * **dd** delete řádku * **3dd** delete 3 řádků * **yy** kopie ř * **cc** změna ř * **%%>>%%** **%%<<%%** shift radku * **!!** přefiltrování radku * **1G** + **!G** přefiltrování celého souboru (edit. bufferu) Každý výmaz/kopie (**d** **y**) se uloží do bufferu/schránky, ze kterého se vytahuje pomocí **p**ut (za kurzor) a **P**ut (před): * **ddp** **ddP** přehození řádku * **yyp** **yypppp** **yy3p** kopirování řadku * **xp** přehození znaku Poslední změna se dá opakovat pomocí **.** (tečka) * **ineco napisuESC** pak se posunuje kam je treba a pomocí **.** opakuju poslední **i**nsert * **dd** a opakovaným **.** mažu řadky Další EDIT příkazy * **I** == **^i** začni vkládat na začátku řádku * **a** == **li** insert za znakem * **A** == **$a** insert za koncem řádku * **s** == **xl** substituce * **R** == **r$** replace do konce řádku * **C** == **c$** change * **cw** oprav následující slovo * **cc** oprav řádek * **o**pen **O**pen nový řádek * **J**oin spoj řádek s následujícím/i Vyhoda **c** je v tom, že nemusíme nejdřív mazat a poté vložit něco jiného Hledání: * **/regexp** vpřed/ke konci * **?regexp** vzad/k začátku * **n** **N** najdi další výskyt Existují schránky **"a** až **"z** (zpravidla použity s **d** **y** a **p**) obsah se pamatuje při změně editovaného souboru -- lze snad přenášet mezi soubory ======EX1====== Note: příkaz se ukončí ''ENTER'' * **:x**it ulož a ukonči * **:e**dit načti jiný soubor * **:e!** znovu načti tejný soubor (zahoď změny) * **:w**rite //[soubor]// ulož * **:q**uit ukonči * **:r**ead vlož obsah souboru * **:r !**//program// vlož výstup programu * **:sh**ell odskok do //shell// -- neukončujte editor! * **!**//program arg1 arg2...// proveď jeden příkaz v shellu, neplést s operátorem **!** ve VISUAL! S výhodou lze použít znaku **%** (jméno současného souboru) **#** jméne předchozího, např.: * **w %.save** zapiš //file// do //file.save// * **:!cp % %.save** kopie pomocí ''cp'' příkazu * **:e#** vrat se k předchozímu souboru, Note: **vim** umí **^W**indow ======konfigurace====== **:set** příkazy do souboru ''$HOME/.vimrc'' a/nebo ''$HOME/.exrc'' viz [[vim#vimrc]] {{tag>:vim}}