Globální

  • :h[elp] klíčové slovo - otevřít nápovědu pro klíčové slovo
  • :sav[eas] soubor - uložit soubor jako
  • :clo[se] - zavřít aktuální panel
  • :ter[minal] - otevřít okno terminálu
  • K - otevřít manuál pro slovo pod kurzorem
Tip Spusťte vimtutor v terminálu a naučte se první příkazy Vim.

Pohyb kurzoru

  • h - přesunout kurzor doleva
  • j - přesunout kurzor dolů
  • k - přesunout kurzor nahoru
  • l - přesunout kurzor doprava
  • gj - přesunout kurzor dolů (víceřádkový text)
  • gk - přesunout kurzor nahoru (víceřádkový text)
  • H - přejít na horní část obrazovky
  • M - přejít do středu obrazovky
  • L - přejít na spodní část obrazovky
  • w - skok dopředu na začátek slova
  • W - skok dopředu na začátek slova (slova mohou obsahovat interpunkci)
  • e - skok dopředu na konec slova
  • E - skok dopředu na konec slova (slova mohou obsahovat interpunkci)
  • b - skok zpět na začátek slova
  • B - skok zpět na začátek slova (slova mohou obsahovat interpunkci)
  • ge - skok zpět na konec slova
  • gE - skok zpět na konec slova (slova mohou obsahovat interpunkci)
  • % - přejít na odpovídající znak (výchozí podporované dvojice: '()', '{}', '[]' - pro více informací použijte :h matchpairs ve vim)
  • 0 - přeskočit na začátek řádku
  • ^ - přeskočit na první neprázdný znak řádku
  • $ - přeskočit na konec řádku
  • g_ - přeskočit na poslední neprázdný znak řádku
  • gg - přejít na první řádek dokumentu
  • G - přejít na poslední řádek dokumentu
  • 5gg or 5G - přejít na řádek 5
  • gd - přejít na lokální deklaraci
  • gD - přejít na globální deklaraci
  • fx - přejít na další výskyt znaku x
  • tx - přejít před další výskyt znaku x
  • Fx - přejít na předchozí výskyt znaku x
  • Tx - přejít za předchozí výskyt znaku x
  • ; - opakovat předchozí pohyb f, t, F nebo T
  • , - opakovat předchozí pohyb f, t, F nebo T směrem zpět
  • } - skok na další odstavec (nebo funkci/blok, při editaci kódu)
  • { - skok na předchozí odstavec (nebo funkci/blok, při editaci kódu)
  • zz - vycentrovat kurzor na obrazovce
  • zt - umístit kurzor do horní části obrazovky
  • zb - umístit kurzor do spodní části obrazovky
  • Ctrl + e - posunout obrazovku o jeden řádek dolů (bez pohybu kurzoru)
  • Ctrl + y - posunout obrazovku o jeden řádek nahoru (bez pohybu kurzoru)
  • Ctrl + b - posun o jednu celou obrazovku zpět
  • Ctrl + f - posun o jednu celou obrazovku vpřed
  • Ctrl + d - posun o půl obrazovky vpřed
  • Ctrl + u - posun o půl obrazovky zpět
Tip Před příkazem pohybu kurzoru uveďte číslo, které jej zopakuje. Například 4j se posune o 4 řádky dolů.

Režim vkládání - vkládání/připojování textu

  • i - vložit před kurzor
  • I - vložit na začátek řádku
  • a - vložit (připojit) za kurzor
  • A - vložit (připojit) na konec řádku
  • o - přidat nový řádek pod aktuální řádek
  • O - přidat nový řádek nad aktuální řádek
  • ea - vložit (připojit) na konec slova
  • Ctrl + h - vymazat znak před kurzorem během režimu vkládání
  • Ctrl + w - vymažte slovo před kurzorem během režimu vkládání
  • Ctrl + j - začít nový řádek během režimu vkládání
  • Ctrl + t - odsadit (přesunout doprava) řádek o šířku posunu během režimu vkládání
  • Ctrl + d - zrušit odsazení (přesunout doleva) řádek o jednu šířku posunu během režimu vkládání
  • Ctrl + n - vložit (automatické dokončení) další shodu před kurzor během režimu vkládání
  • Ctrl + p - vložit (automatické dokončení) předchozí shodu před kurzor během režimu vkládání
  • Ctrl + rx - vložit obsah registru x
  • Ctrl + ox - Dočasně přejít do normálního režimu a zadat jeden příkaz x.
  • Esc or Ctrl + c - ukončit režim vkládání

Editace

  • r - nahradit jeden znak.
  • R - nahradit více než jeden znak, dokud nestisknete ESC.
  • J - spojit řádek níže s aktuálním řádkem s jednou mezerou mezi nimi
  • gJ - spojit řádek níže s aktuálním řádkem bez mezery mezi nimi
  • gwip - přeformátovat odstavec
  • g~ - prohodit velká a malá písmena
  • gu - změnit na malá písmena
  • gU - změnit na velká písmena
  • cc - změnit (nahradit) celý řádek
  • c$ or C - změnit (nahradit) do konce řádku
  • ciw - změnit (nahradit) celé slovo
  • cw or ce - změnit (nahradit) do konce slova
  • s - smazat znak a nahradit text
  • S - smazat řádek a nahradit text (stejné jako cc)
  • xp - transponovat dvě písmena (smazat a vložit)
  • u - zpět
  • U - obnovit (vrátit zpět) poslední změněný řádek
  • Ctrl + r - vpřed
  • . - opakovat poslední příkaz

Označení textu (vizuální režim)

  • v - spustit vizuální režim, označit řádky a poté provést příkaz (například y-yank)
  • V - spustit vizuální režim po řádcích
  • o - přesunout na druhý konec označené oblasti
  • Ctrl + v - spustit režim vizuálního bloku
  • O - přesunout do jiného rohu bloku
  • aw - označit slovo
  • ab - blok s ()
  • aB - blok s {}
  • at - blok se značkami <>
  • ib - vnitřní blok s ()
  • iB - vnitřní blok s {}
  • it - vnitřní blok se značkami <>
  • Esc or Ctrl + c - opustit vizuální režim
Tip Místo b nebo B lze také použít ( nebo { v daném pořadí.

Vizuální příkazy

  • > - posunout text doprava
  • < - posunout text doleva
  • y - yank (zkopírovat) označený text
  • d - smazat označený text
  • ~ - prohodit velká a malá písmena
  • u - změnit označený text na malá písmena
  • U - změnit označený text na velká písmena

Registry

  • :reg[isters] - zobrazit obsah registrů
  • "xy - yank (zkopírovat) do registru x
  • "xp - vložit obsah registru x
  • "+y - yank (zkopírovat) do registru systémové schránky
  • "+p - vložit z registru systémové schránky
Tip Registry se ukládají do ~/.viminfo a budou znovu načteny při příštím restartu vim.
Tip Speciální registry:

0 - poslední yank
" - nepojmenovaný registr, poslední smazání nebo yank
% - aktuální název souboru
# - alternativní název souboru
* - obsah schránky (primární X11)
+ - obsah schránky (schránka X11)
/ - poslední vzor vyhledávání
: - poslední příkazový řádek
. - poslední vložený text
- - poslední smazání (méně než řádek)
= - expression register
_ - black hole register

Značky a pozice

  • :marks - seznam značek
  • ma - nastavit aktuální pozici pro značku A
  • `a - skok na pozici značky A
  • y`a - yank text na pozici značky A
  • `0 - přejít na pozici, kde byl Vim předtím ukončen
  • `" - přejít na pozici při poslední úpravě tohoto souboru
  • `. - přejít na pozici poslední změny v tomto souboru
  • `` - přejít na pozici před posledním skokem
  • :ju[mps] - seznam skoků
  • Ctrl + i - přejít na novější pozici v seznamu skoků
  • Ctrl + o - přejít na starší pozici v seznamu skoků
  • :changes - seznam změn
  • g, - přejít na novější pozici v seznamu změn
  • g; - přejít na starší pozici v seznamu změn
  • Ctrl + ] - skok na značku pod kurzorem
Tip Chcete-li přejít na značku, můžete použít buď backtick (`) nebo apostrof ('). Pomocí apostrofu skočí na začátek (první neprázdný) řádku, na kterém je značka.

Makra

  • qa - záznam makra a
  • q - zastavit záznam makra
  • @a - spustit makro a
  • @@ - zopakovat poslední spuštěné makro

Vyjmout a vložit

  • yy - yank (zkopírovat) řádek
  • 2yy - yank (zkopírovat) 2 řádky
  • yw - yank (zkopírovat) znaky slova z pozice kurzoru na začátek dalšího slova
  • yiw - yank (zkopírovat) slovo pod kurzorem
  • yaw - yank (zkopírovat) slovo pod kurzorem a mezeru za ním nebo před ním
  • y$ or Y - yank (zkopírovat) na konec řádku
  • p - umístit (vložit) schránku za kurzor
  • P - umístit (vložit) před kurzor
  • gp - umístit (vložit) schránku za kurzor a ponechat kurzor za novým textem
  • gP - umístit (vložit) schránku před kurzor a ponechat kurzor za novým textem
  • dd - smazat (vyjmout) řádek
  • 2dd - smazat (vyjmout) 2 řádky
  • dw - smazat (vyjmout) znaky slova z pozice kurzoru na začátek dalšího slova
  • diw - smazat (vyjmout) slovo pod kurzorem
  • daw - smazat (vyjmout) slovo pod kurzorem a mezeru za ním nebo před ním
  • :3,5d - delete lines starting from 3 to 5
Tip You can also use the following characters to specify the range:
e.g.

:.,$d - From the current line to the end of the file
:.,1d - From the current line to the beginning of the file
:10,1d - From the 10th line to the beginning of the file

  • :g/{pattern}/d - delete all lines containing pattern
  • :g!/{pattern}/d - delete all lines not containing pattern
  • d$ or D - smazat (vyjmout) na konec řádku
  • x - smazat (vyjmout) znak

Odsazení textu

  • >> - odsadit (přesunout doprava) řádek o šířku jednoho posunu
  • << - zrušit odsazení (přesunout doleva) řádek o šířku jednoho posunu
  • >% - odsadit blok s () nebo {} (kurzor na závorce)
  • <% - de-indent a block with () or {} (cursor on brace)
  • >ib - odsadit vnitřní blok s ()
  • >at - odsadit blok s <> značkami
  • 3== - znovu odsadit 3 řádky
  • =% - znovu odsadit blok s () nebo {} (kurzor na závorce)
  • =iB - znovu odsadit vnitřní blok s {}
  • gg=G - znovu odsadit celou vyrovnávací paměť
  • ]p - vložit a upravit odsazení aktuálního řádku

Konec

  • :w - zapsat (uložit) soubor, ale neukončovat
  • :w !sudo tee % - uložit aktuální soubor pomocí sudo
  • :wq or :x or ZZ - uložit a ukončit
  • :q - ukončit (selže, pokud existují neuložené změny)
  • :q! or ZQ - ukončit a zahodit neuložené změny
  • :wqa - uložit a ukončit na všech záložkách

Hledat a nahradit

  • /pattern - hledat vzor
  • ?pattern - hledat vzor dozadu
  • \vpattern - „velmi kouzelný“ vzor: nealfanumerické znaky jsou interpretovány jako speciální symboly regulárních výrazů (není potřeba escapování)
  • n - opakovat hledání stejným směrem
  • N - opakovat hledání v opačném směru
  • :%s/old/new/g - nahradit všechny "old" s "new" v celém souboru
  • :%s/old/new/gc - nahradit všechny "old" s "new" v celém souboru s potvrzeními
  • :noh[lsearch] - odstranit zvýraznění shod vyhledávání

Vyhledávání ve více souborech

  • :vim[grep] /pattern/ {`{file}`} - hledat vzor ve více souborech
e.g. :vim[grep] /foo/ **/*
  • :cn[ext] - skok na další shodu
  • :cp[revious] - skok na předchozí shodu
  • :cope[n] - otevřít okno se seznamem shod
  • :ccl[ose] - zavřít okno rychlé opravy

Záložky

  • :tabnew or :tabnew {page.words.file} - otevřít soubor v nové záložce
  • Ctrl + wT - přesunout aktuální rozdělené okno na vlastní záložku
  • gt or :tabn[ext] - přejít na další záložku
  • gT or :tabp[revious] - přejít na předchozí záložku
  • #gt - přejít na záložku číslo #
  • :tabm[ove] # - přesunout aktuální záložku na #-tou pozici (indexováno od 0)
  • :tabc[lose] - zavřít aktuální záložku a všechna její okna
  • :tabo[nly] - zavřít všechny záložky kromě aktuální
  • :tabdo command - spustit command na všech záožkách (např. :tabdo q - zavře všechny otevřené záložky)

Práce s více soubory

  • :e[dit] soubor - upravit soubor v novém bufferu
  • :bn[ext] - přejít do dalšího bufferu
  • :bp[revious] - přejít do předchozího bufferu
  • :bd[elete] - smazat buffer (zavřít soubor)
  • :b[uffer]# - přejít do bufferu podle indexu #
  • :b[uffer] file - přejít do bufferu podle souboru
  • :ls or :buffers - vypsat všechny otevřené buffery
  • :sp[lit] soubor - otevřít soubor v novém bufferu a rozdělit okno
  • :vs[plit] soubor - otevřít soubor v novém bufferu a vertikálně rozdělit okno
  • :vert[ical] ba[ll] - editovat všechny buffery jako vertikální okna
  • :tab ba[ll] - editovat všechny buffery jako záložky
  • Ctrl + ws - rozdělit okno
  • Ctrl + wv - rozdělit okno vertikálně
  • Ctrl + ww - přepnout okna
  • Ctrl + wq - opustit okno
  • Ctrl + wx - vyměnit aktuální okno za následující
  • Ctrl + w= - všechna okna stejně vysoká a široká
  • Ctrl + wh - přesunout kurzor do levého okna (vertikální rozdělení)
  • Ctrl + wl - přesunout kurzor do pravého okna (vertikální rozdělení)
  • Ctrl + wj - přesunout kurzor do okna níže (horizontální rozdělení)
  • Ctrl + wk - přesunout kurzor do okna výše (horizontální rozdělení)
  • Ctrl + wH - nastavit aktuální okno na plnou výšku zcela vlevo (svislé okno úplně vlevo)
  • Ctrl + wL - nastavit aktuální okno na plnou výšku úplně vpravo (svislé okno úplně vpravo)
  • Ctrl + wJ - nastavit aktuální okno na plnou šířku úplně dole (nejspodnější vodorovné okno)
  • Ctrl + wK - nastavit aktuální okno na plnou šířku úplně nahoře (horní vodorovné okno)

Rozdíly

  • zf - ručně nastavit rozbalení/sbalení
  • zd - smazat rozbalení/sbalení pod kurzorem
  • za - přepnout rozbalení/sbalení pod kurzorem
  • zo - rozbalit pod kurzorem
  • zc - sbalit pod kurzorem
  • zr - rozbalit vše o jednu úroveň
  • zm - sbalit vše o jednu úroveň
  • zi - přepnout funkci rozbalení/sbalení
  • ]c - skok na začátek další změny
  • [c - skok na začátek předchozí změny
  • do or :diffg[et] - získat rozdíl (z jiného bufferu)
  • dp or :diffpu[t] - vložit rozdíl (do jiného bufferu)
  • :diffthis - udělat z aktuálního okna část diff
  • :dif[fupdate] - aktualizovat rozdíly
  • :diffo[ff] - vypnout režim rozdílu pro aktuální okno
Tip Příkazy pro rozbalení/sbalení (např. za) fungují na jedné úrovni. Chcete-li pracovat na všech úrovních, používejte velká písmena (např. zA).
Tip Chcete-li zobrazit rozdíly mezi soubory, můžete přímo spustit Vim v režimu diff spuštěním vimdiff v terminálu. Lze dokonce nastavit jako git difftool.