Obsah
1. Užitečné skripty a pluginy pro textový editor Vim (3.část)
2.2 Instalace pluginu Calendar
3.1 Popis pluginu Rainbow Parentheses
3.2 Instalace pluginu Rainbow Parentheses
3.3 Použití pluginu Rainbow Parentheses
4.1 Popis pluginu vim-signature
4.2 Instalace pluginu vim-signature
4.3 Použití pluginu vim-signature
5.1 Popis pluginu SearchComplete
5.2 Instalace pluginu SearchComplete
5.3 Použití pluginu SearchComplete
6.2 Instalace pluginu ctrlp.vim
1. Užitečné skripty a pluginy pro textový editor Vim (3.část)
Ve třetí části článku o užitečných skriptech a pluginech určených pro textový editor Vim se seznámíme s pěti přídavnými moduly. Některé z těchto modulů jsou vlastně velmi jednoduché (stále však zůstávají praktické), další moduly jsou již mnohem komplikovanější. Mezi jednoduché pluginy, s nimiž se dnes seznámíme, patří především přídavný modul nazvaný příznačně Calendar popsaný ve druhé kapitole a taktéž modul pojmenovaný Rainbow Parentheses, o němž se zmíníme v kapitole třetí. Nezapomeneme ani na plugin vim-signature a SearchComplete. Mezi složitější moduly lze počítat především plugin ctrlp.vim. Všechny dnes popisované přídavné moduly mají jednu společnou vlastnost – mohou je využít prakticky všichni uživatelé, ať již se jedná o programátory, administrátory či tvůrce různých textových dokumentů. Až v části navazující se zaměříme na pluginy určené pro jednotlivé programovací či značkovací jazyky.
Obrázek 1: Nápověda k pluginu Calendar popsaného v následující kapitole.
2. Plugin Calendar
2.1 Popis pluginu Calendar
První vimovský plugin, který si dnes popíšeme, se jmenuje jednoduše Calendar. Název tohoto pluginu velmi přesně popisuje jeho funkci, protože se skutečně jedná o kalendář, který je navíc doplněný o možnost psát (a samozřejmě i zobrazovat) poznámky přidané k jednotlivým dnům. Samotný kalendář se zobrazuje ve vyhrazeném okně Vimu a již při jeho vyvolání lze ovlivnit způsob zobrazení kalendáře – umístění měsíců vedle sebe nebo pod sebe (viz též přiložené screenshoty). Poznámky zapsané k jednotlivým dnům se ukládají do jednoduchých textových souborů (používá se zvýraznění syntaxe Markdown) umístěných v podadresářích uložených v adresáři ~/diary. Díky tomu, že je formát poznámek skutečně velmi jednoduchý, lze je snadno prohledávat například příkazem grep. Tento plugin je naprogramovaný čistě ve VimScriptu, což znamená, že je ho možné použít jak v Linuxu, tak i v Microsoft Windows. O této vlastnosti se zmiňuji především z toho důvodu, že existují i další implementace kalendáře, které však volají externí (unixový) příkaz cal.
Obrázek 2: Zobrazení kalendáře ve vertikálně rozděleném okně. Aktuální den je zvýrazněn barevně a navíc je u něj zobrazena hvězdička.
2.2 Instalace pluginu Calendar
Instalace pluginu Calendar je velmi jednoduchá: postačuje stáhnout archiv obsahující tento skript a rozbalit ho do podadresáře ~/.vim/bundle. Opět tedy předpokládáme, že je nainstalován skript/správce balíčků Pathogen, o němž jsme se zmínili v první části tohoto článku. Instalaci pluginu Calendar provedeme následující sekvencí příkazů:
wget -O calendar.zip http://www.vim.org/scripts/download_script.php?src_id=19707 mkdir ~/.vim/bundle/calendar unzip calendar.zip -d ~/.vim/bundle/calendar rm calendar.zip
Výsledná struktura adresáře ~/.vim/ by mohla vypadat následovně:
. ├── autoload ├── bundle │ ├── calendar │ │ ├── autoload │ │ ├── doc │ │ └── plugin │ └── vim-fugitive │ ├── doc │ └── plugin └── spell
Obrázek 3: Poznámka vytvořená k vybranému dni. Povšimněte si, že se díky použití jazyka Markdown nadpisy a další prvky poznámky barevně zvýrazňují.
2.3 Použití pluginu Calendar
V pluginu Calendar jsou definovány dva nové příkazy:
Příkaz | Význam |
---|---|
:Calendar | vertikální rozdělení okna a zobrazení kalendáře v novém okně nalevo |
:CalendarH | horizontální rozdělení okna a zobrazení kalendáře v novém okně dole |
V okně se zobrazeným kalendářem je možné použít následující klávesy:
Klávesa | Význam |
---|---|
šipka doleva | předchozí měsíc |
šipka doprava | následující měsíc |
šipka nahoru | předchozí rok |
šipka dolů | následující rok |
t | přechod na aktuální datum |
q | uzavření okna s kalendářem |
Enter | zobrazení/vytvoření poznámky pro vybraný den |
Struktura adresáře ~/diary, do níž se pro jednotlivé dny ukládají poznámky, je velmi jednoduchá:
diary └── 2015 └── 3 ├── 27.md └── 6.md
Obrázek 4: Zobrazení kalendáře v horizontálně rozděleném okně. Aktuální den je zvýrazněn barevně a navíc je u něj zobrazena hvězdička.
3. Plugin Rainbow Parentheses
3.1 Popis pluginu Rainbow Parentheses
Dalším jednoduchým, ovšem v praxi velmi užitečným pluginem, je přídavný modul nazvaný Rainbow Parenthesis. Tento plugin lze využít pro barevné odlišení párových závorek popř. taktéž – což může být pro mnoho uživatelů ještě zajímavější a užitečnější – k barevnému odlišení párových tagů, například vnořených značek <div> v HTML či XHTML. Tento plugin je zcela univerzální, čímž se odlišuje od podobně zaměřených pluginů, které jsou však specializované například pro programovací jazyk Lisp či Clojure (tj. pro jazyky, v nichž se párové závorky vyskytují s relativně vysokou frekvencí). Nejlépe si možnosti použití přídavného modulu Rainbow Parenthesis ukážeme na několika screenshotech, které jsou umístěny pod tímto odstavcem.
Obrázek 5: Zvýraznění párových závorek ve zdrojovém kódu programovacího jazyka Clojure.
Obrázek 6: Zvýraznění párových závorek ve zdrojovém kódu programovacího jazyka C.
3.2 Instalace pluginu Rainbow Parentheses
Pro instalaci tohoto modulu lze jednoduše použít Git, protože zdrojové kódy jsou uloženy na GitHubu:
cd ~/.vim/bundle git clone https://github.com/luochen1990/rainbow Cloning into 'rainbow'... remote: Counting objects: 308, done. remote: Total 308 (delta 0), reused 0 (delta 0), pack-reused 308 Receiving objects: 100% (308/308), 604.24 KiB | 628.00 KiB/s, done. Resolving deltas: 100% (113/113), done.
Výsledná struktura adresáře ~/.vim/ by nyní měla vypadat následovně:
. ├── autoload ├── bundle │ ├── calendar │ │ ├── autoload │ │ ├── doc │ │ └── plugin │ ├── rainbow │ │ └── plugin │ └── vim-fugitive │ ├── doc │ └── plugin └── spell
Dále je nutné do konfiguračního souboru .vimrc přidat tento řádek:
let g:rainbow_active = 1
Funkce pluginu Rainbow Parentheses se projeví po novém startu editoru.
3.3 Použití pluginu Rainbow Parentheses
Plugin Rainbow Parentheses pracuje zcela automaticky po otevření každého souboru, pro nějž je v modulu zadefinováno, které znaky či skupiny znaků se mají považovat za párové závorky. K dispozici je jeden příkaz pro zapnutí či vypnutí funkce tohoto pluginu:
Příkaz | Význam |
---|---|
:RainbowToggle | zapnutí či vypnutí barevného zvýraznění párových závorek |
Nastavení pluginu (lze změnit editací zdrojového skriptu):
Soubor | Párové závorky |
---|---|
* | () [] {} |
*.tex | () [] |
*.vim | () [] {} |
*.xml | <jméno-tagu </ |
*.xhtml | <jméno-tagu </ |
*.html | dtto kromě několika vybraných nepárových tagů typu <br> atd. |
Obrázek 7: Zvýraznění párových tagů v HTML dokumentu.
Obrázek 8: Zákaz zvýraznění párových tagů v HTML dokumentu příkazem :RainbowToggle.
4. Plugin vim-signature
V textovém editoru Vim se jak při běžné editaci, tak i při vytváření maker poměrně často pracuje s takzvanými značkami (marks). Nejedná se však o značky vytvářené externími nástroji a ukládané většinou do souboru pojmenovaného tags, ale o interní seznam pozic kurzoru (jakési „špendlíky“ zapíchnuté do důležitých míst) v souboru, na které se lze během editace vrátit, nebo na něž se lze odkazovat. Podobnou funkcionalitu nabízí i mnohé další programátorské textové editory, ovšem u nich se většinou jedná o maximálně deset značek, zatímco ve Vimu může být značek mnohem více, protože každé značce je přiřazeno jednopísmenné označení.
Obrázek 9: Příkaz :marks vypíše všechny platné značky pro právě aktivní buffer.
V rámci jednoho souboru lze lokálně používat značky pojmenované malými písmeny a až z, zatímco značky pojmenované velkými písmeny A až Z si „pamatují“ i jméno souboru, v němž jsou definovány, tudíž se jedná o značky globální. Speciální význam mají značky se jmény 0 až 9 (naplňované většinou při ukončování Vimu) a taktéž v některých případech velmi užitečná značka ". Významy některých jmen značek (ve skutečnosti jich je ještě mnohem více) jsou vypsány v následující tabulce:
Jméno značky | Definice značky | Význam |
---|---|---|
a-z | manuálně | značky lokální v rámci souboru |
A-Z | manuálně | značky globální, ke značce je připojeno i jméno souboru |
0–9 | automaticky | posledních deset pozic kurzoru při opuštění Vimu |
< | automaticky | začátek vybraného bloku |
> | automaticky | konec vybraného bloku |
" | automaticky | pozice kurzoru při zavření bloku |
^ | automaticky | pozice kurzoru, na níž se kurzor naposledy nacházel ve vkládacím režimu |
Obrázek 10: Příklad výstupu příkazu :marks v případě, že jsou definovány čtyři globální značky A, B, C a Z.
4.1 Popis pluginu vim-signature
Značky za běžných okolností nejsou v editovaných dokumentech nijak viditelné, což ovšem poněkud zmenšuje jejich význam, protože vlastně netvoří plnohodnotné „záložky“. Tento nedostatek editoru Vim napravuje plugin nazvaný vim-signature, jenž využívá první dva sloupce okna pro zobrazení jmen značek. Vzhledem k omezení na dva sloupce je možné u každého řádku zobrazit pouze dvě značky, i když jich může být definovaných mnohem více (ve většině případů však toto omezení není vůbec dramatické). Kromě toho tento plugin deklaruje nové příkazy, například velmi užitečné příkazy m, a m. popsané níže.
Obrázek 11: Nápověda k modulu vim-signature.
4.2 Instalace pluginu vim-signature
Po instalaci pluginu vim-signature opět využijeme Git, protože i tento plugin je uložen na GitHubu:
cd ~/.vim/bundle git clone https://github.com/kshenoy/vim-signature Cloning into 'vim-signature'... remote: Counting objects: 867, done. remote: Total 867 (delta 0), reused 0 (delta 0), pack-reused 867 Receiving objects: 100% (867/867), 832.85 KiB | 483.00 KiB/s, done. Resolving deltas: 100% (347/347), done. Checking connectivity... done.
Pro jistotu zkontrolujeme obsah adresáře ~/.vim/:
. ├── autoload ├── bundle │ ├── calendar │ │ ├── autoload │ │ ├── doc │ │ └── plugin │ ├── rainbow │ │ └── plugin │ ├── vim-fugitive │ │ ├── doc │ │ └── plugin │ └── vim-signature │ ├── doc │ └── plugin │ └── signature └── spell
Žádné další speciální nastavování ani povolování tento přídavný modul nevyžaduje!
4.3 Použití pluginu vim-signature
Práce se značkami je v mnoha ohledech velmi jednoduchá, ostatně všechny důležité příkazy najdete v následující tabulce:
Příkaz | Význam |
---|---|
:marks | výpis všech právě aktivních značek |
:marks značka | výpis vybrané značky |
ma – mz | definice lokální značky a-z |
dma – dmz | smazání lokální značky a-z (přidáno pluginem) |
mA – mZ | definice globální značky A-Z |
dmA – dmZ | smazání globální značky A-Z (přidáno pluginem) |
m, | vytvoření nové značky, automatická volba písmene (přidáno pluginem) |
m. | vytvoření nové značky, automatická volba písmene; pokud značka existuje, zruší se (přidáno pluginem) |
'a – 'z | skok na řádek, kde je značka definovaná (jedná se o příkaz pohybu kurzoru!) |
'A – 'Z | skok na soubor a řádek, kde je značka definovaná |
`a – `z | skok na přesné místo, kde je značka definovaná (jedná se o příkaz pohybu kurzoru!) |
'A – 'Z | skok na přesné místo (řádek i sloupec), kde je značka definovaná |
Další příkazy jsou uvedeny v nápovědě:
:help signature.txt
V předchozí tabulce bylo uvedeno, že příkazy ‚a – ‘z i a</strong> až <strong>
z jsou chápané jako příkazy pro pohyb kurzoru, což znamená, že tyto příkazy lze kombinovat například s editačními operátory d (delete), y (yank) a c (change). To je velmi užitečné, protože lze snadno vytvořit (lépe řečeno pouze označit) začátek „bloku“, například příkazem ma a posléze je možné kurzor přesunout na konec bloku a zvolit jeden z následujících příkazů (užitečnost ještě mnohem více stoupá při použití značek v makrech):
Příkaz | Význam |
---|---|
c`a | přepis části textu, jehož začátek je označený značkou a a konec je určený aktuální pozicí textového kurzoru |
d`a | výmaz části textu, jehož začátek je označený značkou a a konec je určený aktuální pozicí textového kurzoru |
y`a | vložení části textu, jehož začátek je označený značkou a a konec je určený aktuální pozicí textového kurzoru, do implicitního registru (bližší informace o registrech budou uvedeny v navazujícím textu) |
gu`a | změna na malá písmena |
gu`a | změna na velká písmena |
gq`a | zformátování bloku (jako textu) |
=`a | zformátování bloku (jako zdrojového kódu) |
Obrázek 12: Na třech řádcích byla vytvořena jedna lokální značka a, b, c, na dalším řádku pak dvě lokální značky d a e.
Obrázek 13: Použití globálních značek i speciálních značek platných pouze pro tento plugin.
5. Plugin SearchComplete
5.1 Popis pluginu SearchComplete
Plugin nazvaný SearchComplete je typickou ukázkou přídavného modulu, který sice svým uživatelům nabízí pouze jedinou funkci, která jim ovšem dokáže poměrně významným způsobem zpříjemnit život. Tento modul funguje následovně: po zadání příkazu /, kterým se zahajuje vyhledávání, je možné pomocí klávesy <Tab> automaticky doplňovat slova nalezená v editovaném souboru (resp. přesněji řečeno v editovaném bufferu). Žádnou další funkci tento plugin nenabízí, ovšem jeho používání se ukazuje být silně návykové :-). Relativně jednoduchou úpravou zdrojového kódu lze docílit toho, aby tento plugin správně reagoval i na příkaz ?, tj. na vyhledávání textu opačným směrem.
5.2 Instalace pluginu SearchComplete
Instalaci tohoto přídavného modulu provedeme přes Git:
cd ~/vim/bundle git clone https://github.com/vim-scripts/SearchComplete Cloning into 'SearchComplete'... remote: Counting objects: 11, done. remote: Total 11 (delta 0), reused 0 (delta 0), pack-reused 11 Unpacking objects: 100% (11/11), done. Checking connectivity... done.
Opět pro jistotu zkontrolujeme obsah adresáře ~/.vim/:
. ├── autoload ├── bundle │ ├── calendar │ │ ├── autoload │ │ ├── doc │ │ └── plugin │ ├── rainbow │ │ └── plugin │ ├── searchcomplete │ │ └── plugin │ ├── vim-fugitive │ │ ├── doc │ │ └── plugin │ └── vim-signature │ ├── doc │ └── plugin │ └── signature └── spell
Žádné další nastavení není zapotřebí provádět – plugin začne ihned fungovat.
5.3 Použití pluginu SearchComplete
Použití pluginu SearchComplete je velmi snadné a vlastně i automatické – po zahájení vyhledávání příkazem / (lomítko) je možné buď přímo stlačit klávesu [Tab] a procházet tak všemi symboly v editovaném souboru, nebo je možné napsat jen několik počátečních písmen symbolu a nechat si zbytek automaticky doplnit. Klávesou [Tab] lze přepínat mezi všemi nalezenými možnostmi.
6. Plugin ctrlp.vim
6.1 Popis pluginu ctrlp.vim
Pro mnoho uživatelů textového editoru Vim se stal velmi užitečným přídavným modulem plugin nazvaný ctrlp.vim. Po instalaci tohoto pluginu je možné přes klávesovou zkratku Ctrl-P, která modulu dala název, vyhledávat soubory, buffery atd., a to i s využitím regulárních výrazů. Podobně jako samotný Vim, i plugin ctrlp.vim se může nacházet v několika režimech, mezi nimiž se uživatel přepíná několika klávesovými zkratkami (každý režim je reprezentován jinou výzvou – prompt). Tento plugin taktéž dokáže vytvářet soubory i adresáře, otevřít větší množství souborů současně apod. Jedná se tedy o alternativu k minule popsanému pluginu NERD Tree, i když způsob ovládání NERT Tree se značně odlišuje od ovládání ctrlp.vim – každému uživateli bude vyhovovat něco jiného (druhý jmenovaný plugin má nepochybně větší množství příkazů, ovšem zpočátku je poněkud nepřehledný – tento problém však po několika použitích zmizí).
Obrázek 14: Nápověda k pluginu ctrlp.vim.
Obrázek 15: Výběr souborů pro editaci s využitím pluginu ctrlp.vim.
6.2 Instalace pluginu ctrlp.vim
Podobně jako tomu bylo u většiny pluginů popsaných v předchozích kapitolách, i v případě přídavného modulu ctrlp.vim použijeme Git pro naklonování Git repositáře obsahujícího celý plugin. Naklonování je nutné provést do adresáře ~/.vim/bundle, což zajistí následující dvojice příkazů:
cd ~/.vim/bundle git clone https://github.com/kien/ctrlp.vim Cloning into 'ctrlp.vim'... remote: Counting objects: 2721, done. remote: Total 2721 (delta 0), reused 0 (delta 0), pack-reused 2721 Receiving objects: 100% (2721/2721), 843.94 KiB | 660.00 KiB/s, done. Resolving deltas: 100% (947/947), done.
Nyní by mělo být lokálně (tj. pouze pro aktivně přihlášeného uživatele) nainstalováno všech pět dnes popsaných modulů:
. ├── autoload ├── bundle │ ├── calendar │ │ ├── autoload │ │ ├── doc │ │ └── plugin │ ├── ctrlp.vim │ │ ├── autoload │ │ │ └── ctrlp │ │ ├── doc │ │ └── plugin │ ├── rainbow │ │ └── plugin │ ├── SearchComplete │ │ └── plugin │ ├── vim-fugitive │ │ ├── doc │ │ └── plugin │ └── vim-signature │ ├── doc │ └── plugin │ └── signature └── spell
Obrázek 16: Výběr souborů pro editaci s využitím pluginu ctrlp.vim.
6.3 Použití pluginu ctrlp.vim
Plugin ctrlp.vim se vyvolá v normálním režimu klávesovou zkratkou Ctrl-P (kterou však je možné samozřejmě přemapovat). Po použití této zkratky se zobrazí nové horizontálně rozdělené okno se speciálně naformátovaným stavovým řádkem. Změní se i vstupní řádek, do něhož je možné začít zapisovat jméno souboru, resp. přesněji řečeno část jména – mnohdy postačuje zadat několik počátečních písmen či počáteční a koncové písmeno – ihned při psaní se seznam souborů zmenšuje či zvětšuje tak, aby odpovídal zadané masce. Soubory se vyhledávají jak v aktuálním adresáři, tak i v podadresářích, což je výhodné především ve chvíli, kdy uživatel pracuje na rozsáhlejším projektu. K dispozici je velké množství klávesových zkratek, zejména pak:
Klávesová zkratka | Význam |
---|---|
Ctrl+D | přepnutí mezi vyhledáváním ve jménech souborů či i ve jménech souborů a adresářů (výchozí) |
Ctrl+R | přepnutí mezi použitím regexpů či tzv. řetězcového režimu (výchozí) |
Ctrl+T | otevření vybraného souboru v novém tabu |
Ctrl+V | vertikální rozdělení okna a otevření vybraného souboru |
Ctrl+S | horizontální rozdělení okna a otevření vybraného souboru |
Ctrl+Z | označení souboru (vedle jména souboru se zobrazí značka) |
Ctrl+O | otevření všech označených souborů |
Tab | automatické doplnění názvu adresáře |
Esc | zavření okna pluginu ctrlp.vim |
V tabulce je mj. zmíněn tzv. řetězcový režim. Jedná se o způsob reprezentace masky bez explicitního použití regexpů. Po zadání řetězce „abc“ v řetězcovém režimu je tento řetězec interně chápán jako regulární výraz „a[^a]\{-}b[^b]\{-}c“, což sice vypadá poněkud složitě, nicméně řetězcový režim je v praxi dosti návykový :-)
Obrázek 17: Zvýraznění souborů na základě zapsané masky.
7. Odkazy na Internetu
- SearchComplete
http://www.vim.org/scripts/script.php?script_id=474 - ShowMarks
http://www.vim.org/scripts/script.php?script_id=152 - ctrlp.vim
https://github.com/kien/ctrlp.vim - ctrlp.vim
http://kien.github.io/ctrlp.vim/ - vim-signature
https://github.com/kshenoy/vim-signature - Supertab
http://www.vim.org/scripts/script.php?script_id=1643 - Supertab (GitHub)
https://github.com/ervandew/supertab - Vim Essential Plugin: NERD Tree
http://code.tutsplus.com/tutorials/vim-essential-plugin-nerdtree–net-19692 - The NERD tree : A tree explorer plugin for navigating the filesystem
http://vim.sourceforge.net/scripts/script.php?script_id=1658 - NERD Tree Guide
http://usevim.com/2012/07/18/nerdtree/ - vcscommand.vim : CVS/SVN/SVK/git/hg/bzr integration plugin
http://www.vim.org/scripts/script.php?script_id=90 - vcscommand na GitHubu
https://github.com/vim-scripts/vcscommand.vim - Popis skriptu Vim Pathogen
http://www.vim.org/scripts/script.php?script_id=2332 - Poslední verze skriptu Vim Pathogen
https://tpo.pe/pathogen.vim - Nejlepší pluginy pro Vim
http://vimawesome.com/ - Nejlepší pluginy pro Vim
http://www.vim.org/scripts/script_search_results.php?order_by=rating - Vim-airline na GitHubu
https://github.com/bling/vim-airline - Vim-airline na www.vim.org
http://www.vim.org/scripts/download_script.php?src_id=22726 - Vim-fugitive na GitHubu
https://github.com/tpope/vim-fugitive - Vim-fugitive na www.vim.org
http://www.vim.org/scripts/script.php?script_id=2975 - Textový editor Vim jako IDE (seriál)
http://www.root.cz/clanky/textovy-editor-vim-jako-ide/ - Building Vim
http://vim.wikia.com/wiki/Building_Vim - Getting the Vim source with Mercurial
http://vim.wikia.com/wiki/Getting_the_Vim_source_with_Mercurial - Vim Perl Interface
http://vim.dindinx.net/vim7/html/if_perl.txt.php - Vim Perl Support
http://www.softpanorama.org/Editors/Vimorama/vim_perl_support.shtml - VIM as Python IDE
http://blog.dispatched.ch/2009/05/24/vim-as-python-ide/ - Stack Overflow: VIM: Perl interface: passing a variable to Perl and reading a vim variable from Perl
http://stackoverflow.com/questions/4999902/vim-perl-interface-passing-a-variable-to-perl-and-reading-a-vim-variable-from - Stack Overflow: Getting started with vim scripting with Perl
http://stackoverflow.com/questions/2208618/getting-started-with-vim-scripting-with-perl - Python with a modular IDE (Vim)
http://www.sontek.net/python-with-a-modular-ide-vim - Getting to VIM's Python interface
http://zerokspot.com/weblog/2009/02/21/getting-to-know-vims-python-interface/ - Pretty-formatting XML
http://vim.wikia.com/wiki/Pretty-formatting_XML - Delete a pair of XML/HTML tags
http://vim.wikia.com/wiki/Delete_a_pair_of_XML/HTML_tags - Vim as XML Editor
http://www.pinkjuice.com/howto/vimxml/ - xmledit: A filetype plugin to help edit XML, HTML, and SGML documents
http://www.vim.org/scripts/script.php?script_id=301 - Poslední vývojová verze makra xmledit
http://github.com/sukima/xmledit/ - vim.wikia: Display date-and-time on status line
http://vim.wikia.com/wiki/Display_date-and-time_on_status_line - vim.wikia: Writing a valid statusline
http://vim.wikia.com/wiki/Writing_a_valid_statusline - vim.wikia: Statusline tab level ruler
http://vim.wikia.com/wiki/Statusline_tab_level_ruler - vim.wikia: Switching between different statuslines
http://vim.wikia.com/wiki/Switching_between_different_statuslines - X Selections, Cut Buffers, and Kill Rings
http://www.jwz.org/doc/x-cut-and-paste.html - Accessing the system clipboard
http://vim.wikia.com/wiki/Accessing_the_system_clipboard - xcutsel(1) – Linux man page
http://linux.die.net/man/1/xcutsel - snipMate : TextMate-style snippets for Vim
http://www.vim.org/scripts/script.php?script_id=2540 - msanders / snipmate.vim
https://github.com/msanders/snipmate.vim - snipMate.vim Introductory Screencast
http://vimeo.com/3535418 - 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/ - vim (man page)
http://www.linux-tutorial.info/modules.php?name=ManPage&sec=1&manpage=vim - 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/ - 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