Obsah
1. Atributy používané u příkazu :highlight
2. Změna způsobu obarvení zdrojových kódů a test možností použitého terminálu
3. Tvorba vlastních syntaktických kategorií
4. Syntaktická kategorie zadaná výčtem klíčových slov
5. Syntaktická kategorie zadaná regulárním výrazem
6. Malý trénink: regulární výrazy pro rozpoznání IP adresy
7. Použití regulárních výrazů pro zvýraznění syntaktických kategorií v praxi
8. Syntaktická kategorie zadaná ve formě oblasti (regionu)
1. Atributy používané u příkazu :highlight
Na konci čtvrté části seriálu o textovém editoru Vim jsme si ukázali, jakým způsobem je možné nastavit barvu pozadí a popředí editovaných textů, popř. i styl písma pro jednotlivé syntaktické kategorie (komentář, konstanta, výraz, jméno funkce, …) definované v externích souborech dodávaných přímo s Vimem. Ovšem možnosti jednotlivých typů terminálů (přesněji řečeno jejich emulátorů) se od sebe v mnoha ohledech odlišují. Některé emulátory terminálů, popř. pouze nesprávně nastavené emulátory (což je častější případ) například nedokážou změnit barvu textu nebo barvu pozadí, jiné terminály jsou omezeny na 8 nebo 16 základních barev a naproti tomu Vim přeložený s podporou GUI a spuštěný příkazem gvim nebo vim -g dokáže většinou rozlišit až 16 milionů barev a současně i měnit styl písma (kurzíva, tučné písmo, podtržené písmo, podtržení vlnovkami, což je mimochodem relativní novinka atd.). Připomeňme si, že pro nastavení zvýraznění určité syntaktické kategorie se používá příkaz :highlight, nebo taktéž jeho zkrácená verze :hi:
:highlight syntaktická_kategorie atributy
popř:
:hi syntaktická_kategorie atributy
Obrázek 1: Textový editor Vim nepodporující práci s GUI, který je spuštěný v emulátoru terminálu (urxvt). Informaci, zda daná varianta Vimu práci s GUI podporuje, lze získat pomocí příkazu :ver nebo :version.
V případě syntaktické kategorie se může jednat například o obecná jména používaná u mnoha typů programovacích jazyků, například Normal, Comment, Constant, popř. o jména používaná pouze pro jeden konkrétní jazyk/typ souboru (cOctalZero, cPreCondit) atd. – viz též další kapitoly s podrobnějším popisem vytváření nových syntaktických kategorií. Atributem je v případě příkazu :highlight myšlena dvojice sestavená z názvu atributu a jeho hodnoty (mezi názvem atributu a hodnotou je znak rovnítka). Názvem atributu může být:
Název atributu | Význam |
---|---|
term | nastavení zvýraznění oblasti textu pro běžné terminály (ovšem zdaleka neplatí, že všechny možnosti musí daný terminál umět zobrazit, týká se to například tučného písma či podtržení, které je většinou nahrazeno pouze změnou intenzity textu) |
cterm | nastavení pro terminály podporující práci s barvou (color-xterm, rxvt/urxvt, gnome-terminal a mnoho dalších), jinak stejné parametry jako pro term |
ctermbg | barva pozadí textu pro terminály podporující práci s barvou |
ctermfg | barva popředí textu pro terminály podporující práci s barvou |
gui | použitelné, pokud je Vim zkompilován s podporou GUI, hodnoty stejné, jako u atributů term a cterm |
guibg | barva pozadí textu pro Vim zkompilovaný s podporou GUI |
guifg | barva popředí textu pro Vim zkompilovaný s podporou GUI |
guisp | barva podtržení textů pro Vim zkompilovaný s podporou GUI |
Obrázek 2: Textový editor Vim, který byl přeložen s podporou běhu v GUI.
2. Změna způsobu obarvení zdrojových kódů a test možností použitého terminálu
Atribut term by měl, alespoň v minimální míře, pracovat s jakýmkoli typem terminálu. Hodnota tohoto atributu může být:
term= | Význam |
---|---|
NONE | používáno pro nastavení původního významu (reset předchozího nastavení) |
standout | normální font i zvýraznění |
bold | tučné písmo (popř. změna intenzity či barvy) |
italic | kurzíva (popř. změna intenzity či barvy) |
underline | podtržené písmo |
undercurl | podtržení textu vlnovkami |
reverse | inverzní zobrazení textu |
inverse | inverzní zobrazení textu |
Obrázek 3: Skript colortest.vim spuštěný ve Vimu, jenž byl přeložen s podporou běhu v GUI.
Shodné hodnoty je možné zadávat i u atributů cterm (terminály s podporou barev) a gui (Vim přeložený s podporou GUI). Důvod, proč existují pro nastavení té samé vlastnosti tři různé atributy je jednoduchý – v mnoha případech potřebujeme, aby se nějaká syntaktická kategorie zobrazovala na různém typu terminálu různým způsobem, například aby se slovo s překlepem v GUI zobrazilo s červeným podtržením, zatímco v terminálu odlišnou barvou písma. U atributů ctermfg (barva popředí) a ctermbg (barva pozadí) lze jako jejich hodnotu zadat buď číslo barvy v rozmezí 0 až 15, popř. jméno barvy. Ve skutečnosti se však například u mnoha emulátorů terminálů pracujících v systému X provádí ještě jedno mapování mezi číslem/názvem barvy a skutečnou barvou, ovšem tuto skutečnost již Vim nemůže nijak ovlivnit (což je ostatně správné, protože uživatelé nemusí chtít zobrazit určité nečitelné barvové kombinace).
Obrázek 4: Skript colortest.vim spuštěný ve Vimu, jenž nebyl přeložen s podporou běhu v GUI (Vim je spuštěn v emulátoru terminálu urxvt).
Toto mapování se nastavuje buď v souboru .Xdefaults (platí kromě xtermu například i pro (u)rxvt), nebo lze aktuálně používané mapování změnit v konfiguračním dialogu, což je případ gnome-terminalu a dalších těžkotonážních :-) terminálových emulátorů. Dobrou zprávou je, že možnosti terminálu lze poměrně jednoduše otestovat, a to přímo z textového editoru Vim. Součástí instalace tohoto textového editoru je totiž i soubor colortest.vim, který je možné pro tyto účely využít. Jedná se o skript napsaný v interním skriptovacím jazyce Vimu, jehož popisem se budeme zabývat v závěru tohoto článku. Vzhledem k tomu, že se jedná o skript, spouští se obsah tohoto souboru příkazem :source, popř. jeho zkrácenou verzí :so následujícím způsobem:
:source $VIMRUNTIME/syntax/colortest.vim
nebo pouze:
:so $VIMRUNTIME/syntax/colortest.vim
Poznámka: $VIMRUNTIME je proměnná prostředí, která je většinou nastavovaná přímo Vimem při svém spouštění. Pokud napíšete pouze:
:so $VIMRUNTIME/<Tab>
tak se tato proměnná nahradí svou hodnotou, tj. cestou k runtime souborům.
Obrázek 5: Skript colortest.vim spuštěný ve Vimu, jenž nebyl přeložen s podporou běhu v GUI (Vim je spuštěn ve známém emulátoru terminálu gnome-terminal).
3. Tvorba vlastních syntaktických kategorií
Společně s textovým editorem Vim je dodáváno několik stovek (více než 500) konfiguračních souborů obsahujících syntaktická pravidla pro různé programovací jazyky, značkovací jazyky (HTML, XML, TeX) i některé typy konfiguračních souborů. I přes velké úsilí, které mnoho programátorů do tvorby konfiguračních souborů se syntaktickými pravidly vkládá, se však může stát, že je nutné vytvořit nová pravidla a/nebo zcela nový konfigurační soubor. I když se zpočátku možná může zdát, že je tvorba nových pravidel složitá, je možné pro mnoho typů strukturovaných souborů ve skutečnosti vytvořit pravidla poměrně jednoduchým způsobem. Začněme od těch nejjednodušších příkladů. Veškeré vytváření, nastavení či mazání syntaktických pravidel se provádí pomocí příkazu :syntax, jenž se obvykle zkracuje na :syn nebo méně často na :sy. Pokud je tento příkaz pouze spuštěn bez dalších parametrů, vypíše právě aktivní syntaktická pravidla, která se samozřejmě liší podle toho, jaký soubor je právě editován.
Obrázek 6: Změna původně světle zelené barvy na barvu fialovou v konfiguračním dialogu emulátoru terminálu gnome-terminal.
Za příkazem :syntax lze uvést poměrně velké množství dalších modifikátorů a atributů, nás však budou v tomto článku zajímat pouze čtyři modifikátory, které jsou vypsány v následující tabulce:
Příkaz | Význam |
---|---|
:syntax clear | vymazání všech syntaktických kategorií |
:syntax clear kategorie | vymazání jedné syntaktické kategorie (užitečné především při postupném ladění různých možností) |
:syntax keyword kategorie … | vytvoření nové syntaktické kategorie obsahující klíčová slova |
:syntax match kategorie … | vytvoření nové syntaktické kategorie zadané regulárním výrazem |
:syntax region kategorie … | vytvoření nové syntaktické kategorie zadané regulárním výrazem označujícím začátek kategorie a druhým výrazem označujícím její konec |
V následujících kapitolách si podrobněji popíšeme možnosti definice nových klíčových slov, specifikace syntaktické kategorie pomocí regulárního výrazu i specifikace oblasti (regionu) pomocí dvojice regulárních výrazů.
Obrázek 7: Po změně konfigurace gnome-terminalu (viz předchozí snímek) se barva ve Vimu skutečně změní, i když si Vim (či libovolný jiný terminálový program) stále myslí, že zobrazuje zelenou barvu.
4. Syntaktická kategorie zadaná výčtem klíčových slov
Nejsnazší je vytvoření nové syntaktické kategorie definované výčtem klíčových slov. Pro vytvoření této kategorie se používá následující formát příkazu :syntax:
:syntax keyword kategorie slovo slovo slovo...
Podívejme se na příklad z praxe. Jedná se o část obsahu konfiguračního souboru určeného pro „obarvení“ zdrojových kódů napsaných v Javě (aby k obarvení skutečně došlo, je samozřejmě nutné k dané syntaktické kategorii, například ke kategorii nazvané javaConditional, nadefinovat pomocí příkazu :highlight barvu textu či barvu pozadí):
:syntax keyword javaConditional if else switch :syntax keyword javaRepeat while for do :syntax keyword javaBoolean true false :syntax keyword javaConstant null :syntax keyword javaTypedef this super :syntax keyword javaOperator new instanceof :syntax keyword javaType boolean char byte short int long float double :syntax keyword javaType void :syntax keyword javaStatement return :syntax keyword javaStorageClass static synchronized transient volatile final strictfp serializable :syntax keyword javaExceptions throw try catch finally :syntax keyword javaAssert assert :syntax keyword javaMethodDecl synchronized throws :syntax keyword javaClassDecl extends implements interface :syntax keyword javaClassDecl enum :syntax keyword javaBranch break continue nextgroup=javaUserLabelRef skipwhite :syntax keyword javaScopeDecl public protected private abstract
Obrázek 8: Ukázka konfiguračního souboru obsahujícího některá klíčová slova používaná v programovacím jazyku Java.
Naproti tomu, že pro prakticky jakýkoli v současnosti používaný programovací jazyk je již k němu příslušný soubor s definicí syntaxe vytvořen a odladěn, mohou se jednoduché definice syntaktických kategorií založené pouze na klíčových slovech uplatnit i u zdánlivě nestrukturovaných typů souborů. Osobně si například zapisuji různé poznámky do souboru s koncovkou .cal. Jedná se o běžný textový soubor, v němž se však po čase začala ukazovat jistá struktura se slovy, která by se vyplatilo mít zvýrazněná. Řešením byly následující řádky zapsané do konfiguračního souboru .vimrc, který se načítá při každém spuštění Vimu. Tyto řádky zajistí, že se příkazy syntax spustí vždy, když se začne editovat soubor s koncovkou .cal (ve skutečnosti by bylo možné tyto definice uložit do samostatných souborů, ovšem mít veškerou osobní konfiguraci v jediném souboru .vimrc se ukázalo být při přechodech mezi různými počítači jako nejvíce vyhovující řešení):
highlight Days ctermfg=cyan guifg=#aaffff highlight Todo ctermfg=red guifg=#ffaaaa highlight Ok ctermfg=green guifg=#aaffaa augroup __calendar__ au! au BufRead,BufNewFile *.cal syntax keyword Days Mon Tue Wed Thu Fri Sat Sun au BufRead,BufNewFile *.cal syntax keyword Todo TODO au BufRead,BufNewFile *.cal syntax keyword OK OK augroup END
Příkazy augroup __calendar__ a augroup END tvoří blok obsahující další automatické příkazy. Pomocí au! jsou staré automatické příkazy smazány. Díky této struktuře je zaručeno korektní chování i v případě, že je soubor .vimrc spuštěn vícekrát (protože tento soubor není ve skutečnosti nic jiného, než skript vytvořený v interním skriptovacím jazyce Vimu).
Obrázek 9: Ukázka konfiguračního souboru obsahujícího některá klíčová slova používaná v PL/SQL.
5. Syntaktická kategorie zadaná regulárním výrazem
U velkého množství strukturovaných souborů si s pouhým přiřazením barev jednotlivým klíčovým slovům nevystačíme. V tomto případě přichází na řadu další možnost definice syntaktických kategorií – použití regulárních výrazů s využitím příkazu :syntax match. Již v úvodních částech tohoto seriálu jsme si bez dalšího podrobnějšího vysvětlení ukázali, jakým způsobem je možné ve zdrojových textech zvýraznit znaky tabulátoru, popř. barevně odlišit větší množství znaků tabulátoru napsaných ihned za sebou (v případech, kdy použití příkazu :set list pro zvýraznění řídicích znaků není vhodné či čitelné). Jedno z možných řešení tohoto problému vypadalo následovně:
:highlight Tab1 ctermbg=lightgreen guibg=#e0ffe0 :highlight Tab2 ctermbg=lightred guibg=#ffe0e0 :highlight Tab3 ctermbg=lightblue guibg=#e0e0ff :highlight Tab4 ctermbg=lightcyan guibg=#ffffe0 :syntax match Tab1 "\t" :syntax match Tab2 "\t\t" :syntax match Tab3 "\t\t\t" :syntax match Tab4 "\t\t\t\t"
Obrázek 10: Zvýraznění tabulátorů pomocí změny barvy pozadí.
Význam prvních čtyř příkazů je zřejmý – nastavuje se barva pozadí textu pro čtyři nové syntaktické kategorie nazvané Tab1, Tab2, Tab3 a Tab4. Následuje čtveřice příkazů začínajících na :syntax match, kde jsou jednotlivé syntaktické kategorie definovány pomocí jednoduchých regulárních výrazů. Povšimněte si, že celý regulární výraz je umístěn mezi dvojici stejných znaků. Většinou se používají lomítka, ale lze použít i jiné znaky, například uvozovky apod. Vim se následně snaží v textu jednotlivé výrazy rozpoznat a následně přiřadit textům, které výrazu odpovídají, příslušné barevné zvýraznění. Jak je u regulárních výrazů zvykem, hledá se vždy nejdelší možný výskyt (regulární výraz je „žravý“).
6. Malý trénink: regulární výrazy pro rozpoznání IP adresy
Následuje ukázka poněkud složitějšího regulárního výrazu sloužícího pro barevné odlišení IPv4 adres. Přesněji řečeno se jedná o značně zjednodušenou verzi regulárního výrazu, který rozpoznává a následně obarví jakoukoli čtveřici čísel oddělených tečkou, tedy například i řetězec "0.9999999.256.256:
:highlight def IP_Address ctermfg=darkred :syntax clear IP_Address :syntax match IP_Address /[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+/
Příkazem :syntax clear se pro jistotu vymaže předchozí definice syntaktické kategorie, protože v opačném případě by se nová definice pouze přidala k definici starší (to nemusí být vždy na škodu, ovšem v našem případě se tohoto chování Vimu raději zbavíme). Vzhledem k tomu, že předchozí regulární výraz rozpoznal jakoukoli čtveřici kladných čísel, můžeme se pokusit o jeho vylepšení a zpřesnění. Následující verze obsahuje test pouze na čísla mající trojici číslic. Pro tento účel lze využít omezení na minimální a maximální počet znaků. Tato omezení se zapisují ve složených závorkách, které je nutné uvodit zpětným lomítkem, podobně jako tečku:
:highlight def IP_Address ctermfg=darkred :syntax clear IP_Address :syntax match IP_Address /[0-9]\{1,3}\.[0-9]\{1,3}\.[0-9]\{1,3}\.[0-9]\{1,3}/
Regulární výraz rozpoznávající skutečně jen čtveřice čísel v rozsahu 0..255 (a nikoli v rozsahu 0..999) je ještě poněkud delší a – jak bývá zvykem – i méně čitelný:
:highlight def IP_Address ctermbg=yellow ctermfg=black guibg=yellow guifg=black :syn clear IP_Address :syn match IP_Address /\(25[0-5]\|2[0-4][0-9]\|[01]\?[0-9][0-9]\?\)\.\(25[0-5]\|2[0-4][0-9]\|[01]\?[0-9][0-9]\?\)\.\(25[0-5]\|2[0-4][0-9]\|[01]\?[0-9][0-9]\?\)\.\(25[0-5]\|2[0-4][0-9]\|[01]\?[0-9][0-9]\?\)/
Obrázek 11: Soubor obsahující syntaktické pravidlo pro IP adresu a testovací soubor obarvený pomocí tohoto pravidla.
Jako už nikoli triviální úkol si můžete sami vyzkoušet, jak by vypadal regulární výraz rozpoznávající korektně všechny možné formy IPv6 adres (přiznám se, že jsem neměl trpělivost vytvořit skutečně funkční řešení se všemi možnými zápisy).
7. Použití regulárních výrazů pro zvýraznění syntaktických kategorií v praxi
V regulárních výrazech je možné pomocí znaků ^ a $ označit i začátek a konec textu na jednom textovém řádku, takže například zvýraznění správného odsazení o 4 znaky v souborech XML či XSL lze docílit pomocí následujících příkazů vložených do konfiguračního souboru .vimrc (pod pojmem „správné odsazení“ je zde myšleno odsazení definované nějakou štábní kulturou, protože jinak je odsazení v XML soubor spíše záležitostí čitelnosti pro lidské čtenáře):
au BufRead,BufNewFile *.xml,*.xsl set expandtab tabstop=4 encoding=utf-8 au BufRead,BufNewFile *.xml,*.xsl syntax match Indent1 "^ " au BufRead,BufNewFile *.xml,*.xsl syntax match Indent2 "^ " au BufRead,BufNewFile *.xml,*.xsl syntax match Indent3 "^ " au BufRead,BufNewFile *.xml,*.xsl syntax match Indent4 "^ " au BufRead,BufNewFile *.xml,*.xsl syntax match Indent5 "^ " au BufRead,BufNewFile *.xml,*.xsl syntax match Indent6 "^ " au BufRead,BufNewFile *.xml,*.xsl syntax match Indent7 "^ " au BufRead,BufNewFile *.xml,*.xsl highlight Indent1 ctermbg=lightgreen guibg=#f0fff0 au BufRead,BufNewFile *.xml,*.xsl highlight Indent2 ctermbg=lightred guibg=#fff0f0 au BufRead,BufNewFile *.xml,*.xsl highlight Indent3 ctermbg=lightblue guibg=#f4f4ff au BufRead,BufNewFile *.xml,*.xsl highlight Indent4 ctermbg=lightcyan guibg=#ffffe8 au BufRead,BufNewFile *.xml,*.xsl highlight Indent5 ctermbg=lightyellow guibg=#f0ffff au BufRead,BufNewFile *.xml,*.xsl highlight Indent6 ctermbg=lightcyan guibg=#ffe8ff au BufRead,BufNewFile *.xml,*.xsl highlight Indent7 ctermbg=lightred guibg=#f0fff0
Obrázek 12: Zvýraznění odsazení v souborech typu XML.
Jako další příklad si uveďme způsob zvýraznění číselných hodnot o různých základech na základě podobných pravidel, která platí pro většinu programovacích jazyků založených na céčku (C, C++, Java, JavaScript):
:highlight NumericConstantOctal ctermfg=red guifg=red :highlight NumericConstantBinary ctermfg=green guifg=green :highlight NumericConstantHex ctermfg=blue guifg=blue :highlight NumericConstantDecimal ctermfg=cyan guifg=cyan :highlight NumericConstantFloat ctermfg=yellow guifg=yellow :syntax match NumericConstantOctal "0[0-7_]*\>" :syntax match NumericConstantBinary "0[bB][01_]*\>" :syntax match NumericConstantHex "0[xX][0-9a-fA-F_]*\>" :syntax match NumericConstantDecimal "[1-9_][0-9_]*\>" :syntax match NumericConstantFloat "[0-9_]*\.[0-9_]*\([eE][+-]\=[0-9_]*\)\=\>"
Znak > na konci regulárních výrazů znamená ukončení slova. Jedná se vlastně o atom, podobně jako je tomu u dalších znaků se speciálním významem, například již zmíněných ^ nebo $. Otestování těchto příkladů je jednoduché. Postačuje zkopírovat výše uvedenou sekvenci příkazů a uložit ji do nového souboru, například po názvem numeric_test.vim (přípona zaručí, že Vim správně zvýrazní příkazy i jejich parametry). Posléze je možné otevřít soubor obsahující čísla o různém základu a zadat příkaz:
:source numeric_test.vim
nebo pouze:
:so numeric_test.vim
Obrázek 13: Soubor obsahující syntaktická pravidla pro různé typy čísel a testovací soubor obarvený pomocí těchto pravidel.
8. Syntaktická kategorie zadaná ve formě oblasti (regionu)
Ovšem ani definice syntaktické kategorie s využitím regulárního výrazu nemusí ve všech případech dostačovat. Jedná se například o případy, kdy se ve zdrojovém kódu vyskytují nějaké vnořené bloky. Nemusí se přitom jednat jen o příkazové bloky, ale o jakékoli bloky s jasně určeným začátkem a koncem, v nichž se vyskytuje další text, který je vhodné mnohdy taktéž zvýraznit. Začněme opět jednoduchým příkladem – zvýrazněním komentářů, které mohou být zapisovány ve stylu C99, tj. může se jednat jak o jednořádkové komentáře začínající dvojicí lomítek, tak i o víceřádkové komentáře začínající znaky /* a končící znaky */. Jednodušší je definice syntaktické kategorie pro jednořádkové komentáře, protože zde si vystačíme s regulárním výrazem, který zachytí jakýkoli text od dvojitého lomítka až do konce řádku:
:syntax match oneLineComment "//.*"
Obrázek 14: Definice třech syntaktických kategorií – čísel, komentářů a příkazového bloku, ovšem uvnitř bloku se nerozpoznávají ani čísla ani komentáře (horní buffer).
U víceřádkového komentáře je situace složitější, ovšem v tomto případě je možné použít třetí typ definice syntaktické kategorie – určení takzvaného regionu. Pomocí dvou regulárních výrazů se určí začátek regionu i jeho konec, přičemž Vim dokáže správně začátky a konce regionů „spárovat“ (pokud toto chování z nějakého důvodu nevyhovuje, lze použít modifikátor keepend):
:syntax region multiLineComment start="/\*" end="\*/"
Zpětná lomítka jsou u obou regulárních výrazů atributů start a end použita z toho důvodu, aby se zrušil speciální význam hvězdičky.
Obrázek 15: Modifikace syntaktické kategorie bloku tak, aby se uvnitř jeho těla rozpoznávaly komentáře.
Podobně by bylo možné definovat i příkazový blok, který taktéž vychází ze syntaxe programovacího jazyka C:
:syntax region commandBlock start="{" end="}"
Ve skutečnosti však je však situace s bloky trošku složitější, protože většinou potřebujeme uvnitř bloků zvýraznit i další syntaktické kategorie. Podívejme se na následující příklad:
:hi CodeBlock guifg=cyan :hi Numbers guifg=yellow :hi Comment guifg=gray :syn clear CodeBlock :syn clear Numbers :syn clear Comment :syn region CodeBlock start="{" end="}" :syn match Numbers /[0-9]\+/ :syn match Comment "//.*"
Při spuštění tohoto skriptu sice dojde ke zvýraznění čísel i komentářů, ovšem pouze mimo blok umístěný mezi složenými závorkami. Aby došlo k rozeznávání čísel a komentářů i uvnitř bloků, je nutné použít modifikátor contained obsahující buď hodnotu ALL (blok může obsahovat všechny další syntaktické kategorie), nebo pouze seznam kategorií, které se uvnitř bloku mohou vyskytovat:
:hi CodeBlock guifg=cyan :hi Numbers guifg=yellow :hi Comment guifg=gray :syn clear CodeBlock :syn clear Numbers :syn clear Comment :syn region CodeBlock start="{" end="}" contains=Numbers,Comment :syn match Numbers /[0-9]\+/ :syn match Comment "//.*"
Obrázek 16: Blok může obsahovat jak komentáře, tak i čísla.
9. Odkazy na Internetu
- Clewn home page
http://clewn.sourceforge.net/ - How to connect vim with gdb – using clewn
http://chunhao.net/blog/how-to-connect-vim-with-gdb-using-clewn - yavdb : Yet Another (Generic) Vim Debugger Integration
http://www.vim.org/scripts/script.php?script_id=1954 - Vim home page
http://www.vim.org/ - Exuberant ctags
http://ctags.sourceforge.net/ - xxd (man page)
http://www.linux-tutorial.info/modules.php?name=ManPage&sec=1&manpage=xxd - vim (man page)
http://www.linux-tutorial.info/modules.php?name=ManPage&sec=1&manpage=vim - ctags (man page)
http://www.linux-tutorial.info/modules.php?name=ManPage&sec=1&manpage=ctags - cscope (man page)
http://www.linux-tutorial.info/modules.php?name=ManPage&sec=1&manpage=cscope - Tutorial: Make Vim as Your C/C++ IDE Using c.vim Plugin
http://www.thegeekstuff.com/2009/01/tutorial-make-vim-as-your-cc-ide-using-cvim-plugin/ - c.vim : C/C++ IDE
http://vim.sourceforge.net/scripts/script.php?script_id=213 - c.vim : C/C++ IDE key mappings
http://lug.fh-swf.de/vim/vim-c/c-hotkeys.pdf - Základní základy editoru Vim
http://www.root.cz/clanky/zakladni-zaklady-editoru-vim/ - Jak si přizpůsobit Vim
http://www.root.cz/serialy/jak-si-prizpusobit-vim/ - Novinky ve VIM 7: Úvodní část – speller
http://www.root.cz/vim-sedm-prvni-cast/ - Novinky ve VIM 7: Skriptovací jazyk
http://www.root.cz/vim-sedm-druha-cast/ - vim2elvis: Přednosti a nedostaky Elvise v porovnání s Vimem
http://www.root.cz/clanky/vim2elvis-1/ - vim2elvis: Shodné znaky mezi Elvisem a Vimem, nastaveníeditoru
http://www.root.cz/clanky/vim2elvis-2/ - Nej… VIM pluginy (1)
http://www.root.cz/clanky/nej-vim-pluginy/ - Taglist (plugin)
http://www.vim.org/scripts/script.php?script_id=273 - The NERD tree: A tree explorer plugin for navigating the filesystem
http://www.vim.org/scripts/script.php?script_id=1658 - JavaBrowser : Shows java file class, package in a tree as in IDEs. Java source browser.
http://www.vim.org/scripts/script.php?script_id=588 - snippetsEmu : An attempt to emulate TextMate's snippet expansion
http://www.vim.org/scripts/script.php?script_id=1318 - Scroll Lock (Necyklopedie)
http://necyklopedie.wikia.com/wiki/Scroll_lock - Caps Lock (Necyklopedie)
http://necyklopedie.wikia.com/wiki/Caps_Lock - Avoid the escape key
http://vim.wikia.com/wiki/Avoid_the_escape_key - Map caps lock to escape in XWindows
http://vim.wikia.com/wiki/VimTip166