Linux: Kniha kouzel, 2.15 (1. března 2025)
Veškerá moc příkazové řádky/příkazového řádku přehledně, pro začátečníky i pokročilé

28. Vim

Vývoj vanilkové příchuti Linuxu: Knihy kouzel byl 1. března 2025 ukončen. Tento text je zachován jako historický, ale chyby již nejsou opravovány. Odnože projektu pod kompatibilní licencí jsou vítány.

1. Úvod

Tato kapitola se věnuje editoru Vim. Vim je textový editor (původně terminálový, ale nabízí v samostatném balíčku také GUI), práce s nímž je založena na přepínání mezi řadou režimů, z nichž nejdůležitější jsou základní režim, ve kterém se zadávají příkazy, kterými uživatel ovládá editor, a vkládací režim, v němž uživatel píše text.

Tato verze kapitoly se nevěnuje stylu „práce s objekty“ a vyhýbá se funkcím, jejichž činnost závisí na konkrétní syntaxi editovaného textu (např. skok na deklaraci proměnné pod kurzorem). Rovněž nepokrývá doplňování s našeptáváním (autocomplete), skládání (folding), režim srovávání „vimdiff“, specifika GUI varianty (gvim) a zásuvné moduly (plug-ins). Nedostatečně pokrývá příkaz „g//“.

2. Definice

2/1 Režimy editoru Vim

  • Základní režim (také „normální mód“, „command mode“) je výchozí po spuštění programu. Každé zaklínadlo v této kapitole, není-li uvedeno jinak, předpokládá zadání v základním režimu. Z každého jiného režimu se můžete vrátit zpět do základního režimu jedním nebo více stisky klávesy Esc.
  • Režim vkládání je režim, ve kterém se zapsané znaky vkládají do editovaného textu. Jeho variantou je režim přepisování, kdy zapsané znaky přepisují stávající znaky textu.
  • režimu příkazové řádky místo textu otevřeného souboru upravujete příkaz, který bude vykonán teprve po potvrzení klávesou Enter. Do tohoto režimu vstoupíte ze základního režimu klávesou „:“.
  • režimu výběru posouváním kurzoru vytváříte výběr, tedy úsek textu, na který pak aplikujete nějakou operaci. Pokud to váš terminál podporuje a zapnete ovládání myší, budete moci výběr vytvářet i pomocí myši.

Další režimy můžete najít v dokumentaci, ale pravděpodobně o nich nyní nepotřebujete vědět.

2/2 Další pojmy

  • Kurzor je značka označující jednoznačnou pozici v upravovaném textu, k níž se budou vztahovat prováděné operace.
  • Aktuální řádek je řádek upravovaného textu, na kterém se nachází kurzor.
  • Pohled je výřez z upravovaného textu zobrazený uživateli; vždy zahrnuje aktuální řádek. Normálně okno editoru obsahuje pouze jeden panel a ten obsahuje pouze jeden pohled. Příslušnými příkazy však lze panel rozdělit na více pohledů a lze také otevřít další panely a ty také rozdělit. Nicméně uzavřením posledního pohledu z panelu se vždy uzavře i panel a uzavřením posledního panelu se uzavře celý editor.
  • Vim má 26 schránek, označených písmeny anglické abecedy „a“ až „z“. Do těchto schránek se ukládají vyjmuté texty (které můžete později vložit na jiné místo souboru) a makra (která můžete později spustit). Při zápisu do schránky můžete její označení uvést malým písmenem (pak se stávající obsah přepíše) nebo velkým písmenem (pak se nový obsah připojí za stávající).
  • Registr je schránka označená písmenem (malým či velkým), nebo zvláštní registr označený číslicí či speciálním znakem.

3. Zaklínadla: Posuny kurzoru a pohledu, záložky

3/1 Posun kurzoru jen v rámci řádky

@vlevo/vpravo o 1 znak#1
@vlevo/vpravo o N znaků#2
N
N
@na začátek/konec řádky#3
Home
End
@na následující/předchozí výskyt určitého znaku#4
[počet-opakování]fznak
[počet-opakování]Fznak
@před následující/předchozí výskyt určitého znaku#5
[počet-opakování]tznak
[počet-opakování]Tznak
@zopakovat poslední zadaný příkaz „f“, „F“, „t“ či „T“#6
[počet-opakování];
@na první nebílý znak řádky#7
^
@do konkrétního sloupce (logického od 1/znakového od 0)#8 (1)
číslo-sloupce|
Homečíslo-sloupce

3/2 Posun kurzoru na jinou řádku

PNZ = první nebílý znak

@nahoru/dolů o 1 řádek#1
@nahoru/dolů o N řádek#2 (2)
N
N
@řádek číslo N, PNZ (alternativy)#3
NG
:NEnter
@na začátek/střed/konec pohledu, PNZ#4
H
M
L
@na první/poslední řádku souboru, PNZ#5
gg
G
@na N-tý řádek pohledu, PNZ#6
NH
@na následující/předchozí řádku, PNZ#7
Enter
^
@na následující prázdný/neprázdný řádek#8
[počet-opakování]/^$Enter
[počet-opakování]/^.Enter

3/3 Vyhledávání

\c = ignorovat velikost písmen; /e = kurzor nastavit na poslední znak shody (jinak na první).

@najít následující/předchozí výskyt podřetězce#1 (3)
/[\c]\Vpodřetězec[/e]Enter
?[\c]\Vpodřetězec[/e]Enter
@najít následující/předchozí shodu s regulárním výrazem#2 (4)
/[\c][\v]regulární výraz[/e]Enter
?[\c][\v]regulární výraz[/e]Enter
@zopakovat poslední vyhledávání stejným/opačným směrem#3
n
N

3/4 Záložky

@nastavit záložku na pozici kurzoru#1 (5)
mpísmeno
@přejít kurzorem na pozici záložky#2
`písmeno
@vypsat nastavené (a systémové) záložky#3
:marksEnter

3/5 Ostatní posuny

@posun na znak, který je zobrazený nad/pod aktuálním#1
[počet-opakování]gk
[počet-opakování]gj
@skok na odpovídající párovou závorku#2 (6)
%
@skok na poslední upravenou pozici#3
g;

3/6 Posuny po slovech

Programátorské slovo“ je sekvence jakýchkoliv nebílých znaků; „standardních slovo“ je sekvence nebílých znaků, které jsou buď alfanumerické, nebo tvoří interpunkci. To znamená, že např. „a1a;;;B2B“ je jedno programátorské slovo, ale tři standardní! (Podobně „Ahoj, světe!“ jsou dvě programátorská slova, ale čtyři standardní.)

@o jedno/N „programátorských slov“ vpřed#1
W
NW
@o jedno/N „programátorských slov“ vzad#2
B
NB
@na poslední znak programátorského/standardního slova#3
E
e
@o jedno „standardní slovo“ vpřed/vzad#4 (7)
Shift+
Shift+
@o N „standardních slov“ vpřed/vzad#5
Nw
Nb

4. Zaklínadla: Základní

4/1 Psaní textu (vkládání a přepisování)

@psát text, počínaje znakem pod kurzorem/následujícím znakem/koncem řádky/začátkem řádky#1
i(režim vkládání)
a(režim vkládání)
A(režim vkládání)
0i(režim vkládání)
@vložit novou prázdnou řádku před/za aktuální a psát na ní text#2
O(režim vkládání)
o(režim vkládání)
@přepisovat text, počínaje znakem pod kurzorem#3 (8)
R(režim přepisování)
@přepnout vkládání na přepisování/přepisování na vkládání#4
(režim vkládání)Insert(režim přepisování)
(režim přepisování)Insert(režim vkládání)
@vložit text opakovaně#5
počet-opakováníitextEsc

4/2 Soubory, adresáře a aktivní pohled

@uložit změny a zavřít pohled (alternativy)#1
ZZ
:wqEnter
@zavřít pohled (opatrně/zahodit změny)#2
:qEnter
:q!Enter
@otevřít soubor (opatrně/zahodit změny)#3
:e cestaEnter
:e! cestaEnter
@uložit změny (v aktuálním pohledu/ve všech pohledech)#4 (9)
:wEnter
:waEnter
@znovu načíst otevřený soubor (zahodit změny)#5 (10)
:e!Enter
@vypsat/změnit aktuální adresář editoru#6
:pwdEnter
:cd cestaEnter
@vytvořit adresář#7
:!mkdir [-p] cestaEnter
@zapsat kopii souboru#8
:w cílová/cestaEnter
@zapsat rozsah řádek do souboru (obecně/příklad)#9
:první-zapsaná,poslední-zapsanáw cílová/cestaEnter
:3,17w prehledy/radky.txtEnter
@načíst soubor a vložit za aktuální řádek#10
:r cesta/k/souboruEnter
@otevřít soubor jen pro čtení#11
:e[!] cestaEnter:set roEnter
@ukončit editor (uložit změny/opatrně/zahodit změny)#12
:wqaEnter
:qaEnter
:qa!Enter

4/3 Kopírování, mazání a schránky

Tip: jako výchozí používejte schránku „p“.

@aktuální řádka (smazat/vyjmout/zkopírovat/nahradit textem)#1
dd
"schránkadd
"schránkayy
["schránka]cctextEsc
@znak pod kurzorem (smazat/vyjmout/zkopírovat/nahradit znakem/nahradit textem)#2
x
"schránkax
"schránkayl
rznak
["schránka]cltextEsc
@znaky do konce aktuální řádky (smazat/vyjmout/zkopírovat/nahradit textem)#3
dEnd
"schránkadEnd
"schránkayEnd
["schránka]cEndtextEsc
@znaky od začátku aktuální řádky před kurzor (smazat/vyjmout/zkopírovat/nahradit textem)#4
dHome
"schránkadHome
"schránkayHome
["schránka]cHometextEsc
@aktuální řádek a všechny následující neprázdné (smazat/vyjmout/zkopírovat/nahradit textem)#5
d/^$Enter
"schránkad/^$Enter
"schránkay/^$Enter
["schránka]c/^$Entertext
@N řádků počínaje aktuálním (smazat/vyjmout/zkopírovat/nahradit textem)#6
Ndd
"schránkaNdd
"schránkaNyy
["schránka]NcctextEsc

4/4 Vložit, spojit, duplikovat

@vložit obsah schránky (za aktuální pozici/před ni)#1
"schránka][počet-opakování]p
"schránka][počet-opakování]P
@vložit poslední smazaný či nahrazený text (za akt. pozici/před ni)#2
[počet-opakování]p
[počet-opakování]P
@spojit řádky (viz poznámku)#3 (11)
J
@duplikovat aktuální řádek#4
yypočet-opakováníp

4/5 Externí příkazy a spolupráce s bashem

@ukončit editor bez uložení změn (opatrně/zahodit změny/uložit změny)#1
:qaEnter
:qa!Enter
:qwaEnter
@odsunout editor na pozadí#2 (12)
Ctrl+Z
@spustit externí příkaz#3
:!příkazEnter
@otevřít interpret příkazové řádky (obvykle bash)#4
:shellEnter
@vykonat externí příkaz a vložit jeho standardní výstup za aktuální řádek (obecně/příklad)#5
:r !příkaz [parametry]Enter
:r !ls -lhEnter
@zamrznout na N sekund#6 (13)
Ngs

4/6 Nahradit text (příkaz „:s“)

Poznámka: parametr „kde“ u příkazu „:s“ může být: prázdný řetězec pro nahrazování v aktuální řádce; znak % pro nahrazování v celém souboru; číselný rozsah řádků (např. „5,25“) pro nahrazování na řádcích v uvedeném rozsahu „včetně“.

@nahradit první výskyt podřetězce/všechny výskyty#1 (14)(15)
:kdes/\Vpodřetězec/čím nahradit/Enter
:kdes/\Vpodřetězec/čím nahradit/g[c]Enter
@nahradit první shodu s reg. výrazem/všechny shody#2 (16)
:kdes/\vregulární výraz/čím nahradit/Enter
:kdes/\vregulární výraz/čím nahradit/g[c]Enter

4/7 Odsazení

@nastavit šířku jedné úrovně odsazení#1 (17)
:set shiftwidth=počet-mezerEnter
@zvětšit odsazení řádek (alternativy)#2
[počet-řádků]>>
(režim výběru)[počet-úrovní]>
@zmenšit odsazení řádek (alternativy)#3
[počet-řádků]<<
(režim výběru)[počet-úrovní]<
@odstranit odsazení z výběru#4 (18)
(režim výběru)999<
@odstranit odsazení z aktuálního řádku#5 (19)
V999<

4/8 Velikost písmen

@písmeno pod kurzorem (přepnout/malé/velké)#1
~
vu
vU
@N písmen na aktuálním řádku, počínaje kurzorem (přepnout/malé/velké)#2
N~
vN-1lu
vN-1lU
@řádka na malá písmena#3
Vu
@řádka na velká písmena#4
VU
@každé první písmeno slova velké, ostatní malá#5

4/9 Pokročilé úpravy

@odstranit každý řádek vyhovující/nevyhovující regulárnímu výrazu#1
:g/[\v]regulární výraz/d [_]Enter
:v/[\v]regulární výraz/d [_]Enter

5. Zaklínadla: Režim výběru

5/1 Režim výběru

@výběr po znacích (normální)#1
v(režim výběru)
@výběr po celých řádkách (řádkový)#2
V(režim výběru)
@sloupcový výběr#3
Ctrl+V(režim výběru)
@obnovit poslední výběr#4 (20)
gv(režim výběru)
@přepnout na opačný konec výběru#5
(režim výběru)o(režim výběru)
@ve sloupcovém výběru přepnout do opačného rohu na stejném řádku#6
(režim výběru)O(režim výběru)

5/2 Operace nad jakýmkoliv výběrem

@smazat#1
(režim výběru)d
@vyjmout/zkopírovat#2
(režim výběru)"schránkad
(režim výběru)"schránkay
@celý výběr na malá/velká písmena/přepnout velikost písmen#3
(režim výběru)u
(režim výběru)U
(režim výběru)~
@nahradit (jen normální a řádkový výběr!)#4
(režim výběru)c(režim vkládání)
@nahradit všechny znaky určitým znakem#5
(režim výběru)rznak

5/3 Operace nad řádkovým výběrem

@spojit řádky#1
(režim výběru)J
@profiltrovat externím příkazem#2
(režim výběru)!příkaz s parametryEnter
@zvětšit/zmenšit odsazení#3
(režim výběru)[počet]>
(režim výběru)[počet]<
@automaticky přeformátovat řádky na šířku okna#4
(režim výběru)gq
@nahradit text#5 (21)
(režim výběru):s/co/čím/[parametry]Enter

5/4 Operace nad sloupcovým výběrem

@před/za každý řádek výběru vložit text#1
(režim výběru)ItextEsc
(režim výběru)AtextEsc
@nahradit každou řádku výběru textem#2
(režim výběru)ctextEsc
@před/za každý řádek vložit obsah schránky#3 (22)
(režim výběru)"schránkaP
(režim výběru)"schránkap

6. Zaklínadla: Ostatní

6/1 Historie změn

@zopakovat poslední provedenou změnu na aktuální pozici#1
[počet-opakování].
@vrátit poslední změnu (zpět)#2
u
@znovu provést vrácenou změnu (znovu)#3
Ctrl+R
@vrátit poslední upravovaný řádek do původního stavu#4 (23)
U

6/2 Makra

Tip: jako výchozí schránku pro makra používejte schránku „q“.

@nahrávat prováděné stisky kláves jako makro#1 (24)
qschránkastisky klávesq
@spustit makro#2
[kolikrát]@schránka
@znovu spustit poslední spuštěné makro#3
[kolikrát]@@

6/3 Správce souborů

@otevřít správce souborů (v pohledu nad/pod/vlevo/vpravo/na novém panelu)#1
:SexEnter
:HexEnter
:VexEnter
:Vex!Enter
:TexEnter
@otevřít soubor/adresář ze správce souborů#2
Nastavte kurzor na název souboru.
Enter
@přejít o adresář výš#3
(ve správci souborů)-
@zavřít správce souborů (alternativy)#4
(ve správci souborů)ZZ
(ve správci souborů):q

6/4 Zvýraznění syntaxe

@zapnout/vypnout zvýraznění syntaxe#1
:syntax onEnter
:syntax offEnter
@ručně nastavit syntaxi#2
:setfiletype syntaxeEnter
@vypsat seznam podporovaných syntaxí#3
:setfiletypeSpace
Ctrl+D
@zvýrazňovat klíčové slovo jako klíčové slovo/identifikátor/funkci/operátor#4
:syntax keyword Keyword slovoEnter
:syntax keyword Identifier slovoEnter
:syntax keyword Function slovoEnter
:syntax keyword Operator slovoEnter
@vypsat platná pravidla zvýrazňování syntaxe (není pro začátečníky)#5
:syntax listEnter

6/5 Ostatní

@zobrazit kódovou (číselnou) hodnotu znaku pod kurzorem#1
ga⊨ <ž> 382, Hex 017e, Octal 576
@inkrementovat/dekrementovat celé číslo pod kurzorem#2
Ctrl+A
Ctrl+X
@vložit název otevřeného souboru před/za kurzor#3
"%P⊨ test.txt
"%p

7. Zaklínadla: Pohledy a panely

7/1 Posun pohledu

@o stránku nahoru/dolů#1
PageUp
PageDown
@aktuální řádku doprostřed pohledu#2
zz
@o půl okna nahoru/dolů#3
Ctrl+U
Ctrl+D
@o řádek nahoru/dolů#4
Ctrl+Y
Ctrl+E
@na začátek/konec souboru#5
gg
G
@aktuální řádek na horní/dolní okraj pohledu#6
zt
zb
@o N znaků vlevo/vpravo (jen při vypnutém zalamování)#7
Nzh
Nzl

7/2 Práce s rozděleným panelem

@rozdělit panel a v novém pohledu (nad stávajícím/vlevo od stávajícího) otevřít jiný soubor#1
:split cesta/k/souboruEnter
:vsplit cesta/k/souboruEnter
@přepnout zaměření o pohled nahoru/dolu/doleva/doprava#2
Ctrl+W
Ctrl+W
Ctrl+W
Ctrl+W
@rozdělit panel na pohledy nad sebou/vedle sebe#3
:splitEnter
:vsplitEnter
@otevřít nový prázdný pohled nad aktivním/vlevo od aktivního#4
:newEnter
:vnewEnter
@nastavit výšku aktivního pohledu#5
:res počet-řádekEnter
@nastavit všechna rozdělení rovnoměrně#6
Ctrl+W=
@nahradit aktivní pohled novým terminálem#7 (25)
:term ++curwin
@rotovat pohledy#8
Ctrl+WR

7/3 Práce s více panely

@otevřít nový panel (prázdný/se stejným souborem jako v aktivním pohledu/s jiným souborem)#1
:tabnewEnter
:tabnew %Enter
:tabnew cesta/k/souboruEnter
@přepnout se na další/předchozí panel#2
gt
gT
@zavřít panel#3 (26)
:tabcloseEnter

8. Zaklínadla: Nastavení

8/1 Obecně

@nastavit volbu typu „ano/ne“ (zapnout/vypnout/přepnout)#1
:set volbaEnter
:set novolbaEnter
:set invvolbaEnter
@nastavit číselnou či textovou volbu#2 (27)
:set volba=hodnotaEnter
@zjistit hodnotu volby#3
:set volba?Enter
@vypsat hodnoty všech voleb#4
:set allEnter

8/2 Vzhled

@před každou řádkou zobrazit její číslo (v rámci souboru/relativní)#1
:set numberEnter
:set relativenumberEnter
@podtrhnout aktuální řádek#2
:set cursorlineEnter
@vypnout zalamování řádků při zobrazení#3
:set nowrapEnter
@zvýrazňovat nezlomitelné mezery (alternativy)#4 (28)
:set list listchars=tab:\ \ ,nbsp:_Enter
:set list listchars=tab:\ \ ,nbsp:Ctrl+Vu23b5Enter
@zvýrazňovat tabulátory a nezlomitelné mezery (alternativy)#5 (29)
:set list listchars=tab:>\ ,nbsp:_Enter
:set list listchars=tab:Ctrl+Vu27eb\ ,nbsp:Ctrl+Vu23b5Enter
@zvýrazňovat všechny bílé znaky#6
:set list listchars=tab:Ctrl+Vu27eb\ ,nbsp:Ctrl+Vu23b5,space:Ctrl+Vu00b7Enter
@zvýraznit sloupec s kurzorem#7
:set cursorcolumnEnter
@zvýraznit konkrétní sloupce#8
:set cc=číslo-sloupce[,další-číslo-sloupce]Enter
@skrýt informace o aktuální pozici ve stavové řádce (nedoporučuji)#9
:set norulerEnter
@skrýt název aktivního režimu ve stavové řádce (nedoporučuji)#10
:set noshowmodeEnter

8/3 Chování

@vypnout automatické zalamování při psaní#1
:set textwidth=0Enter
@při vyhledávání ignorovat velikost písmen#2
:set ignorecaseEnter
@vypnout a smazat dočasný odkládací soubor/nastavit, kam ho uložit#3
:set noswapfileEnter
:set dir=cesta[,další/cesta]Enter
@zapnout automatické odsazování#4
:set autoindentEnter
@místo tabulátorů vkládat odpovídající počet mezer#5
:set expandtabEnter
@zapnout automatické znovunačtení po změně souboru mimo Vim#6
:set autoreadEnter
@nechat vim nastavit titulek emulátoru terminálu (je-li to možné)#7
:set titleEnter

8/4 Ostatní

@zapnout/vypnout ovládání myší (doporučuji zapnout)#1
:set mouse=aEnter
:set mouse=Enter
@dovolit posun kurzoru mimo řádek při blokovém výběru (doporučuji)#2
:set virtualedit=blockEnter
@kódová stránka souboru#3 (30)
:set fileencoding=kódováníEnter

8/5 Příznaky

@zakázat jakoukoliv změnu textu/zápis do souboru bez !/jakýkoliv zápis do souboru#1
:set nomodifiableEnter
:set roEnter
:set nowriteEnter
@vypnout příznak, že soubor byl změněn#2
:set nomodifiedEnter

9. Parametry příkazů

vim [parametry] [--] soubor [další-soubor]
view [parametry] [--] soubor [další-soubor]
○ -o ○ -O ○ -pJe-li zadáno více souborů, otevře je: v pohledech nad sebou (shora)/v pohledech vedle sebe (zleva)/v panelech. Výchozí chování: Je-li zadáno více souborů, otevře se pouze první a ostatní jsou otevřeny skrytě a uživatel se na ně musí přepnout příkazem „:n“.
"+příkaz"Po otevření vykoná příkaz v režimu příkazové řádky (+ se nahradí „:“). Tento parametr lze zadat opakovaně, ale maximální počet je omezen. Nejčastější použití je s číslem řádky (např. „+12“).
☐ -nVypne použití odkládacího souboru, vše udržuje jen v paměti.
☐ -u vimrcMísto běžných konfiguračních souborů (vimrc) použije uvedený.

Příkaz „view“ otevře soubor v režimu „jen pro čtení“, „vim“ ho otevře pro úpravy.

10. Instalace na Ubuntu

Editor Vim lze na Ubuntu doinstalovat tímto příkazem:

sudo apt-get install vim

Místo „vim“ si můžete nainstalovat balíček „neovim“, což je nová, víceméně kompatibilní implementace téhož editoru. Podle mé zkušenosti se z uživatelského hlediska liší prakticky jen odlišným výchozím nastavením.

Základní součástí Ubuntu (a mnoha jiných distribucí) je editor „vi“, což je předchůdce Vimu. V něm však většina zaklínadel z této kapitoly není použitelná.

11. Tipy a zkušenosti

  • Doporučuji komukoliv (bez ohledu na úroveň zkušeností) si alespoň jednou projít „kurz“, který spustíte příkazem „vimtutor“ (příkaz zadávejte v bashi, ne ve vimu).
  • Příkaz „c“ je velmi efektivní v kombinaci s opakováním příkazem „.“ a opakováním vyhledávání příkazem „n“.
  • Každá schránka si spolu s textem zachovává i „režim“: znakový, řádkový či sloupcový. Je-li schránka ve znakovém režimu, „p“ vloží její obsah za kurzor; je-li v řádkovém režimu, „p“ vloží její obsah za aktuální řádku; je-li ve sloupcovém režimu (což znamená, že vznikla ze sloupcového výběru), „p“ vloží její první řádku za kurzor a následující řádky na odpovídající pozice následujících řádků textu.
  • Klávesové zkratky editoru Vim jsou optimalizované pro anglickou klávesnici; proto doporučuji s tímto editorem používat rozložení kláves kompatibilní s anglickým.
  • Doporučuji nastavit si „:set number“ a „:set cursorline“. Editor s nimi podle mě vypadá podstatně lépe.
  • Většina uživatelů Vimu intenzivně používá příkazy „y“ a „p“ bez uvedení schránky; to se ovšem vyplácí jen tehdy, pokud chcete zkopírovaný text okamžitě někam vložit a pak už ho nebudete potřebovat. V ostatních případech totiž brzy narazíte na problém, že skoro jakákoliv další úprava vám „poslední smazaný text“ přepíše. Doporučuji proto si zvyknout jakékoliv úseky, které si chcete udržet delší dobu, ukládat do schránky „p“ (příkaz bude vypadat např. „"pdd“). Alternativním řešením je směrovat ostatní příkazy mazání a náhrad do zvláštního registru „_“ (např. „"_dd“).
  • Nastavení provedená příkazem „:set“ z editoru jsou platná jen do ukončení procesu. Pro trvalé nastavení pro nově otevírané instance editoru zapište příkazy „:set“ do souboru „~/.vimrc“ nebo do „/etc/vim/vimrc.local“.
  • Jeden editovaný soubor může být otevřen ve více pohledech, dokonce i na různých panelech. V těchto případech má ovšem každý pohled svůj kurzor, čehož lze někdy chytře využít.

12. Další zdroje informací

V začátcích je nejlepším zdrojem informací „Vim Reference: Quick Reference Guide“ a rozhodně doporučuji manuál Pavla Satrapy, nicméně pokud s editorem Vim nemáte dřívější zkušenosti, určitě si nejprve vyzkoušejte kurz spouštěný příkazem „vimtutor“.

K referenční příručce můžete získat přístup také přímo v editoru Vim příkazem „:help“, ale vzhledem k tomu, že Vim se téměř nevyvíjí, neměl by být problém použít online referenční příručku i s velmi starou verzí Vimu (ne však s „vi“).

13. Zákulisí kapitoly

V této verzi kapitoly chybí:

  • nic

Tato kapitola záměrně nepokrývá:

  • nic
1 V případě logických sloupců se tabulátor počítá jako 1 či více sloupců podle své šířky; v případě znakových sloupců se počítá vždy jako jeden znak.
2 K posunu kurzoru nahoru či dolů po řádkách obrazovky místo po řádkách souboru slouží příkazy „gk“ a „gj“.
3 V podřetězci je nutno odzvláštnit zpětná lomítka!
4 Poznámka: vim používá vlastní syntaxi regulárních výrazů, která je nejpodobnější základním regulárním výrazům. Při použití této funkce buďte opatrní a očekávajte problémy se složitějšími výrazy.
5 Jako označení záložky můžete použít malá písmena anglické abecedy („a“ až „z“.)
6 Tento příkaz funguje (za předpokladu správného spárování závorek) přinejmenším pro závorky (), [] a {}.
7 Funguje i v režimu vkládání.
8 Stisknete-li v režimu přepisování klávesu Backspace, obnoví se tím původně přepsaný znak.
9 Pokud nemáte otevřený žádný soubor, k prvnímu uložení textu musíte použít příkaz „:w“ s cestou, jinak skončíte s chybou „Žádný název souboru“.
10 Tip: účinky tohoto příkazu můžete zrušit okamžitým provedením příkazu „u“.
11 Připojí následující řádku na konec aktuální. Pokud aktuální řádka končí znakem, který není mezera, před připojením tam mezeru vloží. Prázdný řádek nekončí žádným znakem, proto za něj mezeru nevkládá.
12 Zpět na popředí obnovíte editor příkazem „fg“.
13 Zamrznutí můžete předčasně ukončit kombinací kláves Ctrl+C.
14 V podřetězci je nutno odzvláštnit znaky „\“ a „/“!
15 „c“ se před každým nahrazením zeptá a umožní vám nechtěné náhrady přeskočit.
16 „c“ se před každým nahrazením zeptá a umožní vám nechtěné náhrady přeskočit.
17 Výchozí hodnota je 8. Toto nastavení nezmění text, má vliv až na další operace.
18 Funguje jen tehdy, pokud je každá řádka výběru odsazená o méně než 999 úrovní (což je pro typické textové soubory splněno).
19 Funguje jen tehdy, pokud je aktuální řádka odsazená o méně než 999 úrovní (což je pro typické textové soubory splněno).
20 Např. po nechtěném stisknutí Esc.
21 Pro význam částí „co“ a „čím“ viz zaklínadla týkající se nahrazování textu. Tato varianta se od obyčejného příkazu „:s“ liší jen tím, že místo nad aktuálním řádkem pracuje nad řádky výběru.
22 Pozor! Toto funguje jen tehdy, pokud je obsah schránky ve „znakovém“ režimu; schránka tedy nesmí obsahovat celé řádky ani textový blok!
23 Poznámka: Pozor! Tento příkaz je sám o sobě změnou; k jeho odvolání použijte příkaz „u“, nikoliv Ctrl+R!
24 Zadáte-li schránku velkým písmenem, nahrané stisky kláves se připojí ke stávajícímu obsahu daného makra.
25 Zdá se, že jediný způsob, jak se z pohledu terminálu dostat, je klávesová zkratka „Ctrl+WW“, jiné kombinace v něm nefungují.
26 Obvykle panel uzavřete uzavřením posledního pohledu v něm příkazem „:q“.
27 Hodnota může být prázdná. Pokud textová hodnota obsahuje bílé či speciální znaky (kromě tečky a čárky), musíte je odzvláštnit zpětným lomítkem; použití uvozovek vim, zdá se, nepodporuje..
28 Při použití v konfiguračním souboru „.vimrc“ nahraďte kombinace klávesy s „u“ a čtyřmi hexadecimálními číslicemi odpovídajícím znakem v kódování UTF-8.
29 Při použití v konfiguračním souboru „.vimrc“ nahraďte kombinace klávesy s „u“ a čtyřmi hexadecimálními číslicemi odpovídajícím znakem v kódování UTF-8.
30 Tuto vlastnost jsem příliš nezkoušel/a. Pokud s ní nemáte zkušenosti, doporučuji překódování raději provádět příkazem „iconv“ mimo vim.
[BY-SA]

Veškerý obsah této stránky (text, obrázky, zdrojový kód) je možno upravovat a šířit pod podmínkami licence Creative Commons Attribution-ShareAlike 4.0 International. Upozorňuji, že uvedená licence vyžaduje uvedení seznamu autorů, licence a zdroje a poskytnutí stejné či kompatibilní licence k provedeným změnám, jsou-li nějaké. Příslušné údaje jsou dostupné na stránce „Přehled autorů“. Šíření obsahu bez těchto údajů nebo šíření upravené verze bez poskytnutí adekvátní licence k provedeným úpravám je pravděpodobně porušení licenčních podmínek a může být postihováno. Poskytování zdrojového kódu při šíření není touto licencí vyžadováno.

Pro nové verze, další informace, aktuální zdrojový kód a možnost se zapojit do projektu „Linux: Kniha kouzel“ navštivte jeho repozitář na GitHubu.