Vi IMproved
© 2012 Martin Bruchanov, bruxy@regnet.cz
Základní ovládání a konvence
- Kombinace kláves – několik kláves stisknutých současně, např. Ctrl+AE ve skutečnosti znamená Ctrl+Shift+aE.
- Sekvence kláves – několik kláves či kombinací stisknutých po sobě, např. Ctrl+wwE znamená stisk kombinace Ctrl+w a poté ještě klávesy w.
- Pracovní režim – u kláves je zobrazen vlevo dole:
- ■ C – základní příkazový režim, EscE,
- ■ E – vkládací, pro psaní textu InsC, iC,
- ■ V – vizuální, označování bloků textu vC/VC,
- ■ ex – ovládání na příkazovém řádku (ex-mode) :C.
- Opakovat příkaz n× lze napsáním čísla před příkazem, např. 5xC vymaže 5 znaků od pozice kurzoru. Volba set showcmd ukazuje příkazovou sekvence vpravo dole.
- Nápověda: help téma, doplňování příkazů pomocí Tab.
- Podobné příkazy používají stejné klávesy, např. fC / FC,
tC / TC (viz dále). Liší se směrem nebo rozsahem působení.
- Opakování posledního: příkazu .C, makra @@C
- O krok zpět: uC ≈ undo, vrátit Ctrl+rC / redo
- Zapínání a vypínání určité volby umožňuje set volba a set no{\emvolba}. Příkaz set zobrazí aktuální volby.
- Zkrácený zápis: set ignorecase ≈ se ic
- Adresování řádků ex-příkazů lze nastavit pomocí:
- xpříkaz provede na řádku x
- x,ypříkaz od řádku x do řádku y
- .,\$příkaz od aktuální pozice do konce
- %příkaz ≈ 1,\$příkaz pro celý soubor
- .,+xpřík ≈ xpřík od akt. pozice po dalších x řád.
- .,$–x od aktuální pozice do x. řádku od konce
- /vzor1/,/vzor2/ od prvního výskytu řádky s vzor1 do prvního výskytu vzor2
- Více ex-příkazů najednou: příkaz1 | příkaz2
- Porovnání dvou souborů: vimdiff soubor1 soubor2
Editování a ukládání
- Editovat: edit soubor
- Vytvoř prázdný soubor: enew
- Vložit soubor na pozici kurzoru: read soubor
- Vlož výpis systémového příkazu: read !příkaz
- Ulož/připoj soubor: write název / w >> název
- Ulož/připoj řádky n až m: n,mw název / n,mw>> název
- Uložení a odchod: wq, vynucené wq!
- Odchod bez uložení: q! ≈ ZQC
- Odchod a uložení pokud byla změna: x ≈ ZZC
- Otevři soubor pod kurzorem: gfC
- Změnit jméno právě editovaného souboru: f jméno
- Psát před/za: znak iC / aC, řádek IC / AC
- Začni nový řádek nad/pod kurzorem: OC / oC
- Přepiš: znak rC, slovo cwC, řádek ccC, text RC ≈ InsInsC
- Smaž znak/řádek a pokračuj v editaci:sC / SC
Pohyb v souboru
- Otevři soubor na 23. řádku: vim soubor +23
- Kurzor: →C ≈ lC, ←C ≈ hC, ↑C ≈ kC, ↓C ≈ jC
- Stránkování: Ctrl+fC ≈ PageUpE / Ctrl+bC ≈ PageDownE
- Poloviční stránkování nahoru/dolu: Ctrl+uC / Ctrl+dC
- Skok na n-tý řádek: n ≈ nGC , na poslední \$ ≈ GC
- Skok na procentuální řádkovou pozici: n%C
- Zobraz aktuální číslo řádku: Ctrl+gC, set number
- Zobraz počet řádků souboru: =
- Skok na Bytovou pozici: goto n
- Skok v řádku před znak a vpřed/vzad: taC / TaC
- Skok v řádku na znak a vpřed/vzad: faC / FaC
- Zopakuj poslední řádkové hledání vpřed/vzad: ;C / ,C
- Jdi na začátek dalšího/předchozího slova: wC / bC
- Jdi na konec slova: eC, zahrne interpunkce EC
- Jdi na deklaraci: gdC
- Jdi na začátek/konec odstavce: \ / \CC{\C}, bloku: [\ / \CC{]\C}
- Jdi na začátek/konec řádku: HomeC ≈ ^C / EndC ≈ \$C
- Skoč na další/předchozí větu: )C / (C
- Jdi na další/předchozí řádek: EndC ≈ +C / -C
- Jdi na sloupec: první 0C ≈ |C; n-tý n|C
- Skoč na párovou závorku: %C
- Vypiš pozici a celkové počty řádků, znaků, atd.: gCtrl+gC
Značení pozice
- Vlož neviditelnou značku a: maC
- Skoč na značku a: 'aC
- Vypiš značky: marks
- Vymaž značku a: delmarks a
- Zpracuj text od značky a do b: 'a,'b příkaz, např. 'a,'b !sort setřídí text externím příkazem
Mazání, přesuny a kopírování textu
- Mazání ukládá automaticky do schránky (pro přesunování)
- Vymaž: znak xC ≈ DelC; předchozí znak XC ≈ d←C ≈ dhC, Ctrl+hE ≈ BackSpaceE; slovo dwC ≈ Ctrl+wE; řádek ddC
- Vymaž až k párové závorce: d%C
- Vymaž do konce/začátku věty: d)C/d(C
- Vymaž zbytek řádku/souboru: DC ≈ d$C / dGC
- Vymaž od pozice kurzoru na začátek: d0C ≈ d^C
- Spojení řádků: JC přidá mezeru, gJC bez mezery
- Kopíruj do schránky: celý řádek YC ≈ yyC, slovo ywC
- Kopíruj do začátku/konce řádku: y0C / y$C
- Více schránek: stisk "k…C před příkazem uloží text do schránky k. Např. "kyyC uloží řádek do k
- Vlož obsah poslední použité schránky nebo poslední vymazaný text: za pC, před PC kurzor, "kppC vloží schránku k
- Speciální schránky: "% – právě editovaný soubor, "/ – poslední hledaný text,…
- Zobraz obsah schránek: register schránka
- Prohoď dva následující znaky/řádky: xpC / ddpC
- ex-režim: mazání d, přesun m, kopírování co ≈ t
- 10,20m0 – přesun řádky 10–20 na začátek (0)
- .,+5d a – vymaž následujících 5 řádek a ulož je do reg. a
Formátování
- Nastavení šířky řádku: set textwidth=n
- Nastavení zalamování: set wrap
- Zarovnání: ce střed, ri pravo, le levo
- Zformátuj řádek: gqqC
- Zformátuj odstavec: gqapC (kurzor dá na konec), gwapC (kurzor stojí)
- Obrátí velikost písmene: ~C, celé řádky g~~C
- Celý řádek na velká/malá: gUUC / VuC ≈ guuC / VUC
- Celý soubor na velká/malá pismena: gggUGC / ggguGC
- Celý řádek/soubor zakóduje ROT13: g??C / ggg?GC
Odsazování
- Odsaď řádek: >>C, Ctrl+tE o set shiftwidth=n
- Zmenši odsazení řádku: <<C, Ctrl+dE
- Tabulátor: TabE ≈ Ctrl+iE
- Odsaď řádek jako předchozí: ==C
- Odsaď blok relativně k umístění: \CC{=a\
- Předělej odsazení celého souboru: gg=GC
Doplňování
- Editované slovo před/za kurzorem: Ctrl+pE / Ctrl+nE
- Název souboru v pracovním adresáři: Ctrl+x Ctrl+fE
- Název adresáře: Ctrl+x Ctrl+dE
- Celý řádek: Ctrl+x Ctrl+lE
- Slovo ze slovníku: Ctrl+x Ctrl+kE
- Systémový příkaz (čte $PATH): Ctrl+x Ctrl+vE
- Zvětší/zmenší číslo pod kurzorem: Ctrl+aC / Ctrl+xC
- Jméno právě editovaného souboru: Ctrl+r%E
Doplňování na ex-příkazový řádek
- Vlož obsah schránky a: Ctrl+ra
- Vlož slovo pod kurzorem: Ctrl+r Ctrl+a
- Zruš příkaz: Ctrl+u
Vkládání zvláštních znaků
- Zobrazení netisknutelných znaků: set list
- Vlož ASCII znak: Ctrl+v kód EndE
- Zobraz ASCII/UTF-8 znaku pod kurzorem: gaC / g8C
- Potlač řídící znak, např. Tab (^I): Ctrl+v TabE
- Tabulka dvojkódů Unicode znaků: digraphs
- Vlož dvojkód:Ctrl+k K1 K2E
- Dvojkódy: ± +- ° DG × *X ÷ -: – -N — -M „ :9 “ :6
- Definuj dvojkód .3 pro „…“ (U+2026): dig .3 8230
Hledání a nahrazení
- Ignorovat velikost: set ignorecase, opak set noic
- Hledat vpřed/vzad: /slovoC / ?slovoC
- Opakuj poslední hledání: /C / ?C
- Ignoruje velikost písmen: /\cslovoC
- Skok na další výskyt nálezu: nC vpřed, NC vzad
- Nalezení slova pod kurzorem: #C vzad, *C vpřed
- Hledej podle kódu ASCII „M“: %d77, %x4d, %o0115
- Vyhledej Unicode znak „α“ (U+03B1): %u03b1
- Nahrazení: substitute/from/to/příznaky, zkr. s
- Opakuj poslední nahrazení: s ≈ s//~/
- Oddělovač / může být libovolný jiný znak kromě \, " a |
- Příznaky: c – potvrzení, g – v celém řádku, p – vypisuj, bez příznaku nahrazuje pouze první výskyt
- Zruší zvýraznění: nohlsearch
- Prohledání více souborů: vimgrep /vzor/g s_1 s_2 … s_n
- Proveď příkaz na řádku s výskytem: global/vzor/příkaz
- Proveď příkaz, tam kde není vzor: g!/vzor/příkaz
Regulární výrazy
- Začátek/konec: řádku ^ / $, slova \< / \>, souboru %^ / %$
- Předchozí hledaný výraz/náhrada: & / ~
- Zástupný symbol za jeden znak: . (tečka)
- Nebo/zároveň : | / \&
- Potlačí následující speciál. symbol: \., \&, $, \^, \\, \*
- Atom: \(vzorek\)
- N-tý podvýraz: \N, první \(vzorek\) = \1
- Rozsah: [abcd] ≈ [a-d], [a-zA-Z] ≈ ≈ , [0-9] ≈ \d
- Ignorované znaky: [^abcd] ≈ [^a-d]
- Žádný nebo násobný výskyt z: z* ≈ z\{0,\}
- Jeden nebo násobný výskyt z: z\+ ≈ z\{1,\}
- Jednou nebo nulakrát: z\? ≈ z\{0,1\}
- Opakování z: z\{n\} přesně n×, z\{n,\} minimálně n výskytů, z\{n,m\} min. n a max. m výskytů
Sbalování částí textu (help folding)
- Sbal text: zfC, označený zfV
- Jdi na začátek/konec foldu: [zC / ]zC
- Rozbal pod kurzorem: zoC, rekurzivně zOC
- Rozbal/zavři všechny: zRC / zMC
- Přepínání sbal-rozbal: zaC, rekurzivně zAC
- Zvýraznění sbalených částí: set foldcolumn=5
Editace více souborů, okna a záložky
Více souborů (editačních bufferů)
- Spuštění: vim soubor1 soubor2…
- Vypiš buffery: ls ≈ files (jsou označeny čísly)
- Přepni na další/předchozí soubor: next / prev
- Přepni na první/poslední soubor: rewind ≈ first / last
- Proveď hromadně příkaz pro všechny soubory: bufdo příkaz
Okna
- Nové okno: new ≈ Ctrl+wnC
- Rozpůlí okno: split ≈ Ctrl+wsC
- Rozpůlí okno vertikálně: vsplit ≈ Ctrl+wvC
- Zavře okno: close ≈ Ctrl+wcC
- Zavře vše až na aktivní: only ≈ Ctrl+woC
- Přeskočí do dalšího okna: Ctrl+wwC
- Zmenší/zvětší okno o n řádků: Ctrl+wn-C / Ctrl+wn+C
- Zmenší/zvětší okno o n sloupců: Ctrl+wn<C / Ctrl+wn>C
- Srovná rozměr všech oken: Ctrl+w=C
- Hromadný: zápis wall, odchod qall, wqall
- Proveď hromadně příkaz pro všechna okna: windo příkaz
- Otevři soubor pod kurzorem v novém okně: Ctrl+wfC
Pohyb v okně
- Skok na řádek okna: horní HC, střed MC, dolní LC
- Skok na n. řádek shora/zdola: nHC/nLC
- Nastav aktuální řádek: nahoru zEndC, střed z.C, dolu z-C
- Posuň okno nahoru/dolu: o řádek Ctrl+eC / Ctrl+yC, stránku Ctrl+bC / Ctrl+fC, půlstránku Ctrl+uC / Ctrl+dC
- Překresli okno bez skrolování: Ctrl+lC
Záložky
- Příkaz: vim -p s1, s2 … otevře dané soubory v záložkách
- Vytvoř/zavři záložku: tabnew / tabc
- Zavři vše, kromě aktivní: tabo
- Přepni na další/předchozí: tabn ≈ Ctrl+PageDownE / tabp ≈ Ctrl+PageUpE
- Přesuň za záložku n: tabm n
- Proveď hromadný příkaz: tabdo příkaz
- Vzhled záložek: set tabline
- Otevři soubor pod kurzorem v nové záložce: Ctrl+wgfC
Vizuální režim
- Výběr: znaků vC, řádky VC, kurzorem se označí rozsah
- Blokový výběr textu: Ctrl+VC
- Převod na velká/malá písmena: UV / uV
- Označ: slovo awV, ()/{} blok abV / aBV, bez závorek ibV / iBV; XML blok se značkami atV, jen uvnitř itV
- Proveď příkaz v označeném rozsahu: '<,'> příkaz
Zkratky, mapování kláves a makra
- Definuj zkratku: abreviate zkratka rozvoj
- Zkratky pro editační/ex-režim: iabbrev / cabbrev
- Vylistuj/vymaž zkratky: ab / unab zkratka
- Mapuj klávesu x: map x příkazy
- Mapování dle režimu: map imap cmap nmap vmap
- Mapuj kl. pro vkládací režim: map! x příkazy
- Vylistuj mapování: map/map!
- Vymaž mapování: unmap x/unmap! x
- Zapiš makro do registru a: qaC
- Ukončení definice makra: qC
- Proveď makro v registru a: @aC
- Proveď poslední volané makro: @@C
- Spusť makro a jako ex-příkaz: @a
Kontrola pravopisu
- Zapnutí slovníku: set spell spelllang=cs,en
- Najdi další/předchozí překlep: ]sC / [sC
- Přidej do slovníku slov pod kurzorem: zgC
- Přidej dočasně do slovníku: zGC
- Označ slovo jako špatné: zwC, dočasně zWC
- Nabídne slovo k překlepu: z=C
- Nahraď slovo první variantou: 1z=C
Podpora programátorů
- Spustí make: make
- Skoč na další/předchozí chybu: cprevious / cnext
- Vypiš všechny chyby: clist
- Přidej okno se seznamem chyb: copen
Ostatní
- Spusť shell: shell
- Otevři man. stránku slova pod kurzorem: KC
- Ulož HTML barev. syntaxí: runtime! syntax/2html.vim
- Zástupný znak editovaného souboru %, např. !context % přeloží právě editovaný soubor ConTeXt