☰ menu
Pavel Satrapa

Skripty a pluginy

Vim nabízí několik možností, jak rozšiřovat jeho funkce. Tou základní je interní programovací jazyk Vim scipt, který má k dispozici řadu funkcí zpřístupňujících vnitřnosti editoru. Ve verzi 9 prodělal dost zásadní změnu a přiblížil se běžným programovacím jazykům. Kromě specializovaného Vim scriptu lze používat i různé jiné jazyky, jako je Python nebo Lua.

Tvorba vlastních pluginů jde nad rámec tohoto textu, většina uživatelů to nikdy zkoušet nebude. Nicméně pokud byste měli tyto ambice, odkážu vás na článek Tvorba vlastního pluginu pro textový editor Vim, kde Pavel Tišnovský popisuje, co a jak.

Já se omezím na konstatování, že existuje pidlion pluginů, díky nimž můžete vim naučit různé nové kousky. Možnosti jsou značné – od úprav vzhledu přes doplňování kódu a vazbu na různé externí programy až po správu souborů. Přehled pluginů najdete na oficiálním webu vim. Velmi oblíbený je také server Vim Awesome, který se věnuje této problematice.

Ruční instalace

Od verze 8 nabízí vim rozumně použitelné nástroje pro ruční správu pluginů. Slouží k tomu adresář ~/.vim/pack. Pokud nepracujete v Linuxu, jméno vhodného adresáře místo ~/.vim vám prozradí příkaz :set runtimepath?.

V něm můžete vytvářet libovolně pojmenované podadresáře a do nich umisťovat pluginy. V jejich podadresářích start a opt bude vim vyhledávat soubory s příponou .vim ke spuštění. Rozdíl je v tom, že soubory pod start spustí automaticky při startu, zatímco soubory pod opt až po zadání příkazu :packadd jméno. Konkrétně bude spouštět soubory ~/.vim/pack/*/opt/jméno/plugin/**/*.vim.

Tímto způsobem můžete celkem snadno vytvořit pro každý plugin samostatný adresář pod pack a v něm udržovat jeho soubory. Nepoužíváte-li jich mnoho, může to být docela schůdná cesta, která nepotřebuje nic navíc.

Manažery

Ve starších verzích nebyla správa pluginů pro slabší povahy. Adresář pack neexistoval, jejich soubory se míchaly mezi sebou ve stejných adresářích a udržet v nich přehled dokázali jen ti nejdisciplinovanější z nás. Proto vznikly manažery pluginů aneb pluginy pro správu pluginů.

Smysl mají i dnes. Snadno se používají, některé pluginy s nimi automaticky počítají v návodech pro instalaci a výrazně usnadňují aktualizaci pluginů. Zejména pokud jich používáte větší množství, ušetří vám vhodný manažer nemálo námahy.

Existuje několik populárních managerů. V prvním z krátké série článků Užitečné skripty a pluginy pro textový editor Vim popisuje Pavel Tišnovský Pathogen, manažer ze staré gardy. Já se zaměřím na vim-plug, který se v současnosti těší asi největší uživatelské přízni.

Pluginy udržuje v samostatném adresáři, který mu zadáte v konfiguraci. Sám si jej plní a sám si v něm organizuje jejich soubory. Autor zdůrazňuje, že se nemá jednat o některý z adresářů, kde vim při startu hledá spustitelné soubory. Zavedenou konvencí je ~/.vim/plugged, které se budu držet i já.

Instalace, jejíž popis najdete na výše odkazované stránce vim-plug, je velmi snadná. Stáhnete si soubor plug.vim a umístíte jej do adresáře ~/.vim/autoload/.

Vše podstatné manažeru sdělíte ve standardním konfiguračním souboru .vimrc. Jeho sekce začíná příkazem call plug#begin('adresář'), jemuž jako parametr uvedete cestu k adresáři, kde si má spravovat soubory pluginů. Končí pak příkazem call plug#end().

Mezi dvojicí příkazů jsou na jednotlivých řádcích uvedeny pluginy, které má manažer obhospodařovat. Jsou tvořeny příkazy Plug 'plugin'. Jako identifikátory pluginů nejčastěji slouží cesty z GitHubu ve tvaru autor/plugin. Můžete ale zadat libovolné platné URL pro Git. Řekněme, že chci používat pluginy Fugitive a vim-airline. Do .vimrc bych vložil:

call plug#begin('~/.vim/plugged')
Plug 'tpope/vim-fugitive'
Plug 'vim-airline/vim-airline'
call plug#end()

Pak stačí spustit vim a zadat příkaz :PlugInstall. vim-plug stáhne z GitHubu potřebné soubory, uloží je do zadaného adresáře a vše připraví, aby při příštím spuštění vim byly pluginy k dispozici. Pokud později nějaký plugin přidáte, jednoduše spustíte znovu :PlugInstall. Chová se inteligentně a bude instalovat jen ty pluginy, které dosud nemáte.

O aktualizaci se kdykoli postará :PlugUpdate. Porovná verze na GitHubu s lokálními a najde-li novější, daný plugin aktualizuje.

Pro odstranění pluginu jej smažte z .vimrc, spusťte vim a použijte příkaz :PlugClean.

Díky vim-plug si snadno přenesete své prostředí na jiný stroj. Stačí zkopírovat .vimrc, nainstalovat plug.vim a po jednom :PlugInstall máte vše připraveno.

Příkazy Plug pro vkládání pluginů mohou být rafinovanější. Například jim lze přidat podmínky, aby se plugin aktivoval, jen pokud je potřeba. Tyto dodatečné instrukce se oddělují čárkou a uzavírají do složených závorek. Nejčastějšími podmínkami jsou for pro určitý typ souboru a on, který plugin aktivuje až po zadání příkazu. Například

Plug 'preservim/nerdtree', { 'on': 'NERDTreeToggle' }
Plug 'sukima/xmledit', { 'for': 'xml' }

říká, že se má plugin NERD Tree aktivovat až použitím příkazu :NERDTreeToggle a plugin xmledit má být použit jen pro editaci XML souborů.