☰ menu
Pavel Satrapa

Zvýrazňování syntaxe

vim dovede rozpoznávat syntaktické prvky v různých typech souborů a vizuálně (nejčastěji barevně) je odlišovat. Takže ve zdrojových textech programů budou odlišně zobrazena klíčová slova, identifikátory a třeba řetězce znaků. V HTML či textech pro TeX budou zvýrazněny příkazy, jejich parametry, komentáře a další prvky. Standardní barvy jsou sice těžce psychedelické, ale je to mimořádně praktické.

Pokud nechcete příliš přemýšlet a jen si užívat, použijte příkaz :syntax on. Měl by se vám naskytnout pohled podobný tomu, který vidíte na následujícím obrázku.

zvýrazňování syntaxe v HTML

Příkaz :syntax on načte tak zvaný syntaktický soubor. Jeho jméno určí podle přípony aktuálního souboru. Distribuce vim obsahuje syntaktické soubory pro celou řadu typů souborů (ve verzi 7.0 jich je bezmála 500). Najdete je v domácím adresáři editoru (v Unixu to je /usr/share/vim nebo /usr/local/share/vim), konkrétně v podadresáři syntax.

Syntaktický soubor obsahuje pravidla pro zvýrazňování daného typu souboru. Jestliže se vám nelíbí, můžete si je upravit buď přímo v něm (pokud k tomu máte oprávnění) nebo v lokální konfiguraci vim.

Zvýraznění je tvořeno dvěma složkami. Nejprve jsou definovány syntaktické položky a skupiny. V podstatě říkají, jaký text má být zařazen do které kategorie. Druhá složka pak určuje, jak mají být jednotlivé položky prezentovány.

Definice syntaktických položek

Pro tento krátký text je problematika definice syntaktických položek příliš obsáhlá. Je realizována sadou příkazů :syntax. Definují jednotlivé vzory, které mají být v textu vyhledávány a zařazují je do syntaktických skupin.

Existují tři typy vzorů. Klíčové slovo je tvořeno pouze „běžnými neprázdnými znaky“. Jejich výčet obsahuje volba iskeyword. Vzoru typu shoda může vyhovět libovolný řetězec, který splní vzorem stanovená pravidla. Posledním typem vzoru je oblast, u níž definujete, jak vypadá začátek a konec. Syntaktická položka pak bude uplatněna na celý text mezi nimi.

Chcete-li se o definování syntaktických položek dozvědět více, použijte :help syntax a prohlédněte si syntaktické soubory z distribuce editoru.

Zvýrazňování

Zatímco definice syntaktických kategorií je šamanismus poměrně hrubého zrna, do změn v jejich podobě může bez tragičtějších následků zasahovat i laik. Jeho základem je příkaz

:highlight <skupina> <režim>=<hodnota>

<skupina> je název syntakticé skupiny, které se zvýraznění týká. Ten musíte odhalit ze syntaktického souboru. Zde budu chování předvádět na skupině Normal, která reprezentuje běžný text a používá se pro ty znaky, které nebyly zařazeny do žádné jiné.

<režim> určuje, pro jaký režim zobrazení je zvýraznění určeno. vim rozlišuje tři: běžný terminál (term), barevný terminál (cterm) a grafické uživatelské rozhraní (gui).

Běžný terminál (term)

Zde se pro <hodnotu> nabízejí pouze nejzákladnější způsoby zvýraznění, jako je bold (tučně), underline (podtržení), reverse (inverzní zobrazení), italic (kurzíva) a NONE (všechno vypne). Navíc váš terminál nemusí ani všechny používat.

Doporučuji dávat si pozor na zvýraznění podtržením, protože splývá se znakem „podtržítko“ (_). Pokud v programech používáte identifikátory obsahující podtržítko, je to poměrně nepříjemné.

Barevný terminál (cterm)

Pro režim cterm můžete používat stejné hodnoty, jako u term. Navíc však máte k dispozici „režimy“ ctermfg pro stanovení barvy písma a ctermbg pro barvu pozadí.

Příklad:

Řekněme, že bych chtěl mít standardní text vyveden tučným žlutým písmem na tmavě modrém pozadí (já bych tedy nechtěl, mám své oči rád, ale vezměme to jako příklad). Použil bych příkaz :highlight Normal cterm=bold ctermfg=Yellow ctermbg=DarkBlue

Grafické uživatelské rozhraní (gui)

Režim gui se podobá předchozímu. Opět máte k dispozici hodnoty pro term a k definici barev slouží guifg a guibg. Tentokrát navíc můžete jako jejich hodnotu přímo definovat složení barvy konstrukcí „#rrggbb“, kde rr, gg a bb jsou dvojice šestnáctkových číslic udávajících postupně intenzitu červené, zelené a modré složky barvy.

Příklad:

Olivové písmo na lososově růžovém pozadí (fuj!) bych vyrobil příkazem :highlight Normal gui=bold guibg=#ff9999 guifg=#666600

K dispozici máte ještě „režim“ font, kterým můžete pro danou syntaktickou skupinu předepsat druh písma. Ovšem pozor! Všechna použitá písma musí mít stejnou velikost znaku. Jinak mohou být výsledky nepředvídatelné.

Barevná schémata

Nejjednodušší cestou ke změně barevného vzezření editoru je použít některé barevné schéma. Jedná se o ucelený soubor definic vzhledu jednotlivých syntaktických kategorií. Vyplatí se s nimi chvilku experimentovat – zpravidla si najdete mezi existujícími schématy takové, které vašim očím vyhovuje (případně po dílčích úpravách). Je to rozhodně rychlejší, než se snažit definovat barvy všech kategorií kompletně sami.

Barevné schéma změníte příkazem :colorscheme jméno. Je to ideální kandidát na umístění do konfiguračního souboru.

Několik schémat je distribuováno jako součást základní instalace vim. Najdete je v adresáři colors. Tato schémata můžete v grafické verzi editoru přepínat pomocí hlavního menu. Jeho položka Úpravy/Barevné schéma vám nabídne jejich seznam. Stačí si vybrat, což je ideální pro počáteční experimentování.

Jestliže vybíráte opravdu rádi, zkuste se podívat na vimcolors.com, kde jich jsou k dispozici stovky.