☰ menu
Pavel Satrapa

Automatické příkazy

Tato konstrukce vám umožňuje definovat činnosti, které mají být provedeny při každém výskytu určité události. Jejich prostřednictvím lze zajistit vhodné nastavení pro jednotlivé typy souborů. Hledáte-li pokročilejší příklad, v on-line dokumentaci najdete ukázku automatických příkazů, které umožňují editovat komprimované soubory. Před zahájením editace dojde k jejich rozbalení a po uložení na disk se opět zabalí. Zadejte :help gzip-example.

Definice

Automatický příkaz lze definovat příkazem

:autocmd <událost> <vzor> <příkaz>

<událost> vyjadřuje, při jaké příležitosti má být příkaz proveden. Události odpovídají různým významným milníkům v životě programu, jako je třeba načtení souboru, vstup do okna či ukončení editoru.

<vzor> určuje, na jaké soubory se tento automatický příkaz vztahuje. Můžete používat žolíkové znaky v obvyklých významech.

<příkaz> pak říká, co se vlastně má provést.

Příklad:

Hlídání pravého okraje ve vzdálenosti 78 znaků pro soubory s příponami .tex a .html by zajistil příkaz

:autocmd BufRead *.tex,*.html set textwidth=78

Příklad:

Kdykoli zahájíte editaci nového (dosud neexistujícího) souboru s příponou .html, editor má načíst šablonu empty.html, abyste nemuseli ručně vypisovat všechny „obalové“ značky. O takové chování se postará příkaz

:autocmd BufNewFile *.html r $VIM/empty.html

Pokud k příkazu :autocmd připojíte vykřičník, bude automatické příkazy naopak odstraňovat. Můžete jej použít v plném tvaru (s uvedením události, vzoru pro jméno souboru i příkazu) a pak odstraní jediný příkaz. Jestliže některou z částí vynecháte nebo místo události uvedete hvězdičku, odstraní všechny, které vyhovují ostatním podmínkám.

Příklad:

Všechny automatické příkazy pro soubory s příponou .html byste odstranili pomocí

:autocmd! * *.html

Naproti tomu všechny automatické příkazy pro událost BufRead by zlikvidoval příkaz

:autocmd! BufRead

Když příkazu :autocmd (bez vykřičníku) neuvedete příkaz nebo dokonce více informací, vypíše existující automatické příkazy, které vyhovují vašemu zadání. Samotné :autocmd pak zobrazí všechny existující automatické příkazy. Pokud máte zapnuto zvýrazňování syntaxe, budete jejich množstvím překvapeni.

Události

vim nabízí široký sortiment událostí. Většinou jsou spojeny s vyrovnávací pamětí, souborem, oknem či samotným editorem. V následující tabulce uvádím přehled těch, které považuji za nejčastěji používané.

BufNewFile zahajuje se editace dosud neexistujícího souboru
BufReadPre před načtením editovaného souboru
BufRead, BufReadPost po načtení editovaného souboru
BufWrite, BufWritePre před uložením editovaného souboru
BufWritePost po uložení editovaného souboru
BufEnter po vstupu do vyrovnávací paměti
BufLeave před opuštěním vyrovnávací paměti
WinEnter po vstupu do okna
WinLeave před opuštěním okna