======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}}