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 šablonuempty.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 |
© 2016 Pavel Satrapa