Obsah
1. Užitečné skripty a pluginy pro textový editor Vim (4.část)
2. Nastavení interní proměnné mapleader
3.1 Popis pluginu NERD Commenter
3.2 Instalace pluginu NERD Commenter
3.3 Použití pluginu NERD Commenter
4. Plugin Lua Reference Manual
4.1 Popis pluginu Lua Reference Manual
4.2 Instalace pluginu Lua Reference Manual
4.3 Použití pluginu Lua Reference Manual
5.2 Instalace pluginu JavaBrowser
5.3 Použití pluginu JavaBrowser
6. Problematika technologie automatického doplňování ve Vimu
7.1 Popis pluginu javacomplete
7.2 Instalace pluginu javacomplete
7.3 Použití pluginu javacomplete
1. Užitečné skripty a pluginy pro textový editor Vim (4.část)
V předchozí části článku o užitečných skriptech a pluginech zpříjemňujících a taktéž zrychlujících práci s textovým editorem Vim jsme se zabývali přídavnými moduly využitelnými jak programátory, tak i administrátory ale i všemi dalšími skupinami uživatelů pracujících s běžnými dokumenty (a nikoli „pouze“ se strukturovanými zdrojovými kódy). Dnes si naopak popíšeme několik pluginů určených převážně pro vývojáře. Některé z dále popsaných přídavných modulů, například NERD Commenter, mohou využít vývojáři v prakticky všech programovacích jazycích, další pluginy (Lua Reference Manual, JavaBrowser, javacomplete) jsou již specializované na jeden vybraný programovací jazyk. Vzhledem k velkému rozsahu tohoto tématu i prakticky nepřebernému množství dostupných pluginů se dnes budeme soustředit spíše na jednodušší pluginy a ty složitější moduly budou popsány v navazujících částech tohoto článku.
2. Nastavení interní proměnné mapleader
U některých dále popsaných pluginů jsou deklarovány nové klávesové zkratky začínající „klávesou“ nazvanou Leader. Vzhledem k tomu, že se nejedná o žádnou reálnou klávesu, je na místě se zeptat, co se vlastně pod tímto označením skrývá. Textový editor Vim umožňuje na Leader nadeklarovat prakticky libovolnou klávesu (přesněji řečeno znak), a to velmi jednoduše – nastavením globální proměnné mapleader:
let mapleader=","
Podobně lze nadeklarovat podobnou klávesu, ovšem lokálně pouze pro aktuálně používaný buffer:
let maplocalleader=","
Mezi vývojáři pluginů existuje dohoda, že nové příkazy budou jako prefix používat právě hodnotu Leader, a to z toho důvodu, aby se minimalizovala možnost interference se základními klávesovými zkratkami popř. s uživatelem deklarovanými klávesovými zkratkami. Leader je nastavený na znak zpětného lomítka, ovšem většina uživatelů si ho nastavuje na čárku (čímž ovšem dojde ke zrušení původního významu tohoto znaku):
let mapleader="," let maplocalleader=","
Osobně mi přijde výhodnější nastavit Leader na mezeru, protože tuto klávesu lze stlačit libovolnou rukou a původní význam mezery lze nahradit klávesou l:
let mapleader=" " let maplocalleader=" "
3. Plugin NERD Commenter
3.1 Popis pluginu NERD Commenter
Prvním pluginem, s nímž se v dnešním článku seznámíme, je přídavný modul nazvaný NERD Commenter. Funkce tohoto pluginu je zdánlivě velmi jednoduchá – zakomentování popř. odkomentování aktuálního řádku či vybraných řádků zdrojového kódu. Ve skutečnosti je však přídavný modul NERD Commenter poměrně sofistikovaný, protože dokáže pracovat s velkým množstvím programovacích jazyků (cca 300) a dalších strukturovaných souborů, přičemž každý jazyk má obecně jiný způsob zápisu komentářů. Modul NERD Commenter dokáže pracovat i se zanořenými komentáři a při dodržení určitých pravidel je možné zakomentovat či odkomentovat i blok programového kódu, který již komentáře obsahuje, a to dokonce i v těch programovacích jazycích, které vnoření značek pro komentáře nepodporují (příkladem může být ANSI C, resp. přesněji řečeno C89). U některých programovacích jazyků jsou podporovány dva styly zakomentování většího množství řádků: komentářové značky mohou být vloženy na každý řádek či na začátek a konec celého bloku (příklady jsou ukázány na přiložených screenshotech).
Obrázek 1: Nápověda k modulu NERD Commenter.
Obrázek 2: Vizuální označení bloku textu (céčkovský zdrojový kód).
Obrázek 3: Zakomentování bloku textu s využitím modulu NERD Commenter.
3.2 Instalace pluginu NERD Commenter
Pro instalaci tohoto modulu lze jednoduše použít Git, protože zdrojové kódy jsou uloženy na GitHubu (podobně jako tomu bylo u mnoha pluginů popsaných minule):
cd ~/.vim/bundle git clone https://github.com/scrooloose/nerdcommenter Cloning into 'nerdcommenter'... remote: Counting objects: 1277, done. remote: Total 1277 (delta 0), reused 0 (delta 0), pack-reused 1277 Receiving objects: 100% (1277/1277), 320.12 KiB | 471.00 KiB/s, done. Resolving deltas: 100% (424/424), done.
Výsledná struktura adresáře ~/.vim/ by nyní měla vypadat následovně (s přihlédnutím k tomu, že už můžete mít nainstalovány i další pluginy):
├── autoload ├── bundle │ └── nerdcommenter │ ├── doc │ └── plugin ├── plugin └── spell
Žádnou další konfiguraci není nutné provést.
Obrázek 4: Alternativní způsob zakomentování, který je více „sexy“.
Obrázek 5: Vytvoření nového komentáře na konci řádku a vložení kurzoru na místo vzniku komentáře.
Obrázek 6: Zakomentování bloku v Pythonu.
3.3 Použití pluginu NERD Commenter
Po instalaci pluginu NERD Commenter a po opětovném spuštění textového editoru Vim přibude uživatelům k dispozici několik nových příkazů, které jsou popsány v nápovědě zobrazené příkazem :help NERDcommenter. Základní příkazy využitelné ve velké části programovacích jazyků, jsou vypsány v následující tabulce:
# | Příkaz | Význam příkazu |
---|---|---|
1 | [leader]cc | zakomentování řádku či vybraného textu |
2 | počet[leader]cc | zakomentování zadaného počtu řádků |
3 | [leader]cn | zakomentování, v úvahu se bere i zanoření komentářů |
4 | počet[leader]cn | zakomentování zadaného počtu řádků |
5 | [leader]c[mezera] | přidání či naopak odebrání komentářů (přepínání mezi dvěma stavy bloku) |
6 | počet [leader]c[mezera] | dtto jako předchozí příkaz, ovšem platí pro zadaný počet řádků |
7 | [leader]cs | zakomentování, které je ovšem více „sexy“ :-) [viz screenshoty] |
8 | [leader]cA | přidá komentář na konec řádku, umístí kurzor na místo komentáře a umožní vložit komentář |
Obrázek 7: Zakomentování bloku v Clojure.
Obrázek 8: Program v jazyku Lua před zakomentováním.
Obrázek 9: Zakomentování bloku v jazyku Lua.
Obrázek 10: Zakomentování bloku v jazyku Lua s využitím „sexy“ komentářů.
4. Plugin Lua Reference Manual
4.1 Popis pluginu Lua Reference Manual
Druhý přídavný modul, o němž se dnes zmíníme, již není tak univerzální jako byl modul předchozí. Popisovaný modul se jmenuje Lua Reference Manual for Vim, zkráceně pak luarefvim. Tento přídavný modul se skládá ze dvou částí. První část je tvořena jednoduchým skriptem obsahujícím jedinou funkci nazvanou LookUp, která je zavolána po zadání jednoho ze tří nových příkazů, které jsou taktéž deklarovány ve stejném skriptu. Druhá část tohoto pluginu je mnohem rozsáhlejší, protože obsahuje úplnou referenční příručku programovacího jazyka Lua, a to jak pro starší verzi 5.0, tak i pro novější verzi 5.1 (k dispozici jsou i novější verze jazyka Lua, které však alespoň prozatím nejsou v tomto pluginu plně podporovány). Referenční příručka je v průběhu instalace doplněna o soubor s tagy, takže je plně indexovatelná a především pak přístupná po stisku některé klávesové zkratky deklarované ve skriptu. Výsledkem je, že textový editor Vim je díky tomuto skriptu rozšířen o plnohodnotnou nápovědu k jazyku Lua i k jeho knihovnám, což může poměrně značným způsobem urychlit práci programátorů – určitě je jednodušší jediným příkazem vyvolat nápovědu k určité funkci, než se přepínat do webového prohlížeče.
Obrázek 11: Nápověda k pluginu Lua Reference Manual.
4.2 Instalace pluginu Lua Reference Manual
Instalace pluginu Lua Reference Manual je nepatrně složitější, než je tomu u ostatních dnes popisovaných pluginů. V případě instalace manuálu pro verzi Lua 5.1 lze postupovat následovně:
cd ~/.vim/bundle/ wget -O luarefvim.zip http://www.vim.org/scripts/download_script.php?src_id=6470 unzip luarefvim.zip cd luarefvim mkdir doc mkdir plugin mkdir syntax rm lua50refvim.txt mv lua51refvim.txt doc mv help.vim syntax mv luarefvim.vim plugin cd doc vim -c ":helptags ."
Výsledná struktura adresáře ~/.vim by měla vypadat přibližně takto:
. ├── autoload ├── bundle │ ├── luarefvim │ │ ├── doc │ │ ├── plugin │ │ └── syntax │ └── nerdcommenter │ ├── doc │ └── plugin ├── plugin └── spell
Obrázek 12: Část referenční příručky programovacího jazyka Lua.
4.3 Použití pluginu Lua Reference Manual
Při editaci zdrojových kódů napsaných v programovacím jazyku Lua lze využít trojici nových klávesových zkratek popsaných v následující tabulce:
Zobrazení referenční příručky pro vybrané slovo/slovaRežim | Klávesová zkratka | Význam |
---|---|---|
normální | [leader]lc | Zobrazení první stránky referenční příručky |
normální | [leader]lr | Zobrazení referenční příručky pro slovo pod kurzorem |
výběr (vizuální) | [leader]lr |
Poslední příkaz se používá ve chvíli, kdy je nutné zjistit informace například o funkci io.open atd.
Poznámka: povšimněte si využití již ve druhé kapitole zmíněného termínu leader.
Obrázek 13: Nápověda k příkazu print.
Obrázek 14: Nápověda k příkazu for.
5. Plugin JavaBrowser
5.1 Popis pluginu JavaBrowser
Plugin popsaný v předchozí kapitole byl vyvinut pro usnadnění práce programátorů využívajících programovací jazyk Lua. Ovšem ani programátoři pracující Javou nemusí přijít zkrátka, protože pro tento jazyk vzniklo hned několik zajímavých pluginů, které sice z Vimu nedělají „těžkotonážní“ integrované vývojové prostředí ve stylu Netbeans či Eclipse, ovšem v mnoha případech mohou být velmi užitečné (například při práci s tak velkými projekty, které již nejsou efektivně v IDE zvládnutelné). První z těchto pluginů se jmenuje JavaBrowser. Tento modul je možné získat na adrese http://www.vim.org/scripts/script.php?script_id=588 a slouží pro zobrazení stromu obsahujícího třídy a jejich metody i atributy, samozřejmě s rozlišením přístupových práv k metodám i atributům (taktéž se rozlišuje, zda se jedná o statickou metodu=funkci či o atribut). Nad tímto stromem je možné provádět podobné základní operace, jaké jsou dostupné i v běžných integrovaných vývojových prostředích.
Obrázek 15: Plugin JavaBrowser dokáže využít i bublinovou nápovědu Gvimu.
5.2 Instalace pluginu JavaBrowser
Instalace pluginu JavaBrowser je nepatrně komplikovanější, než pouhé naklonování repositáře:
cd ~/.vim/bundle/ wget -O javabrowser.zip http://www.vim.org/scripts/download_script.php?src_id=6184 unzip -d javabrowser javabrowser.zip Archive: javabrowser.zip creating: javabrowser/vimfiles/plugin/ inflating: javabrowser/vimfiles/plugin/javabrowser.vim inflating: javabrowser/pixmaps/tagindicator.bmp inflating: javabrowser/pixmaps/tagindicator.xpm mv vimfiles/plugin ./
Žádná další ruční konfigurace není zapotřebí (i když plugin obsahuje některé konfigurační volby).
Obrázek 16: Klávesové zkratky pluginu JavaBrowser.
5.3 Použití pluginu JavaBrowser
JavaBrowser se vyvolává příkazem :JavaBrowser. Funkci pro zobrazení okna se stromem si je možné namapovat na libovolnou klávesovou zkratku, například následující sekvencí příkazů zapsanou do konfiguračního souboru .vimrc:
augroup __java__ au! au BufRead,BufNewFile *.java noremap <F10> :JavaBrowser<CR> augroup END
V následující tabulce jsou vypsány některé důležité klávesové zkratky, které lze v zobrazeném stromu použít:
# | Příkaz | Operace |
---|---|---|
1 | Enter | přeskok kurzoru na definici metody/atributu |
2 | o | dtto, ale otevře se nové okno |
3 | Space | zobrazení prototypu |
4 | + | rozbalení podstromu |
5 | – | zabalení podstromu |
6 | * | rozbalení celého stromu (včetně všech podstromů) |
7 | x | skrytí či zobrazení okna se zdrojovým kódem |
8 | q | uzavření okna |
Přídavné moduly je (většinou) možné vzájemně kombinovat, což například znamená, že lze mít v jednom okamžiku zobrazený modul NERD Tree společně s JavaBrowserem – záleží jen na preferencích uživatele a velikosti jeho monitoru :-).
Obrázek 17: Přechod na vybraný atribut deklarovaný ve třídě.
6. Problematika technologie automatického doplňování ve Vimu
Další velmi užitečnou vlastností textového editoru Vim, kterou se dnes budeme zabývat, je technologie nazvaná „omni completion“. Tato technologie, která se ve Vimu objevila až v jeho sedmé verzi, rozšiřuje možnosti automatického doplňování kódu o externí nástroje. Připomeňme si, že Vim nabízí ve vkládacím a přepisovacím režimu klávesovou zkratku Ctrl+P (previous) pro nalezení a doplnění slova nacházejícího se před kurzorem a taktéž zkratku Ctrl+N (next), která slouží ke stejnému účelu, ovšem hledá slovo pro doplnění v textu za kurzorem (pokud je k dispozici více možností, zobrazí se v kontextovém menu).
Obrázek 18: Doplňování kódu pomocí příkazů CTRL+P a CTRL+N.
Ovšem možnosti automatického doplňování kódu jsou ve skutečnosti daleko větší, textový editor Vim pro ně dokonce nabízí samostatný režim vyvolávaný z vkládacího či přepisovacího režimu klávesovou zkratkou Ctrl+X. Po stlačení této klávesové zkratky se v příkazové řádce objeví řádkové menu s příkazy platnými pro režim doplňování. Všechny dostupné příkazy jsou vypsány v tabulce níže:
# | Příkaz | Význam |
---|---|---|
1 | Ctrl+X Ctrl+L | nalezení a doplnění celého (shodného) řádku, užitečné především v případě editace některých typů konfiguračních souborů |
2 | Ctrl+X Ctrl+N | doplnění slova, které se nalézá v aktuálně editovaném souboru |
3 | Ctrl+X Ctrl+K | podobné Ctrl+N, ovšem slova se hledají v souborech specifikovaných pomocí konfiguračního parametru dictionary (jedná se o běžný textový soubor se seznamem slov) |
4 | Ctrl+X Ctrl+T | podobné Ctrl+T, ovšem slova se hledají v souborech specifikovaných pomocí konfiguračního parametru thesaurus |
5 | Ctrl+X Ctrl+I | podobné Ctrl+N, ovšem prohledávají se i všechny vkládané (included) soubory |
6 | Ctrl+X Ctrl+] | vyhledávání v seznamu značek |
7 | Ctrl+X Ctrl+F | doplnění názvu souboru a/nebo cesty, postačuje například zadat text ~/ za nímž následuje klávesová zkratka Ctrl+X Ctrl+F a zobrazí se výpis souborů v domácím adresáři |
8 | Ctrl+X Ctrl+D | vyhledání definice makra a doplnění jména tohoto makra |
9 | Ctrl+X Ctrl+U | zavolání funkce zadané v konfiguračním parametru completefunc, které se předá právě editovaný text |
10 | Ctrl+X Ctrl+O | vyvolání omni completion (dostupné od Vimu 7) |
Obrázek 19: Doplnění názvu souboru v pracovním adresáři pomocí příkazu CTRL+X CTRL+F.
V předchozím odstavci jsme si řekli, že pomocí klávesové zkratky Ctrl+X Ctrl+O lze ve vkládacím a přepisovacím režimu zavolat technologii „omni completion“. Tuto technologii lze využít pro (pseudo)inteligentní doplňování textů založeném na analýze zdrojových kódů. Podobnou funkci můžeme najít v nejrůznějších integrovaných vývojových prostředích (Eclipse, Netbeans, Visual Studio), v nichž lze doplňovat například jména prvků ve strukturách či uniích, atributů objektů, metod objektů či tříd, jmen balíčků atd. Textový editor Vim při doplňování používá kombinaci externích nástrojů (například ctags v případě céčkových programů) a skriptů..
Obrázek 20: Využití technologie omni completion při práci s céčkovským zdrojovým kódem.
Technologie omni completion je založena na funkci zavolané ve chvíli, kdy uživatel v režimu vkládání (insert mode) či v režimu přepisu (replace mode) použije klávesovou zkratku Ctrl+X Ctrl+O. Tato funkce je ve skutečnosti zavolána dvakrát – poprvé pro nalezení začátku textu, který se má zkompletovat a podruhé pro zjištění a vrácení všech řetězců, kterými může být text doplněn (těchto řetězců samozřejmě může být větší množství – uživateli jsou všechny nabídnuty ve formě menu). Zmíněná funkce je taktéž zavolána ve chvíli stlačení klávesové zkratky Ctrl+P (find previous) a Ctrl+N (find next), ovšem pouze v režimu omni completion. Funkce, která se má ve všech těchto případech zavolat, je specifikována v konfigurační volbě omnifunc. Aktuální nastavení této volby lze získat velmi snadno:
:set omnifunc?
Obrázek 21: Využití technologie omni completion při editaci HTML stránky.
Prozatím nemáme k dispozici všechny znalosti potřebné pro vytvoření vlastní funkce provádějící automatické doplňování textu, to nám však nemusí vadit, protože programátoři Vimovských pluginů tuto práci udělali za nás, takže dnes existuje poměrně velké množství přídavných modulů pro Vim, které omni completion implementují. Mimochodem – klávesová zkratka Ctrl+X Ctrl+O zmíněná v předchozím odstavci se zadává poměrně složitě, osobně proto pro většinu zdrojových souborů preferuji spíše použití klávesy Tab (protože použití tabulátorů ve zdrojových textech je zlo :D). Přemapování Tab na Ctrl+X Ctrl+O je velmi snadné:
:imap <Tab> <C-X><C-O>
7. Plugin javacomplete
7.1 Popis pluginu javacomplete
Jedním z pluginů využívajících technologii omni completion je i přídavný modul nazvaný javacomplete. Účelem tohoto modulu je napodobit automatické doplňování názvů balíčků, atributů, metod, rozhraní atd. ve stylu, na jaký jsou uživatelé zvyklí z běžných integrovaných vývojových prostředí. Pro tento účel musí modul javacomplete alespoň v minimální míře porozumět javovskému zdrojovému kódu, k čemuž tomuto modulu slouží pomocná třída nazvaná Reflection, která je naprogramovaná přímo v Javě a v níž se pro „porozumění“ editovanému zdrojovému kódu do značné míry využívá reflexe.
Obrázek 22: Velmi podrobná nápověda k pluginu javacomplete.
7.2 Instalace pluginu javacomplete
Instalaci modulu javacomplete je možné provést následujícím způsobem:
cd ~/.vim/bunlde wget -O javacomplete.zip http://www.vim.org/scripts/download_script.php?src_id=14914 unzip -d javacomplete javacomplete.zip cd javacomplete/autoload javac Reflection.java
Povšimněte si posledního příkazu, kterým se přeloží třída používaná pluginem.
Pro povolení práce s pluginem je nutné zadat příkaz:
:setlocal omnifunc=javacomplete#Complete
(lze přidat i do konfiguračního souboru Vimu).
Obrázek 23: Doplnění názvu třídy patřící do balíčku java.util.
Obrázek 24: Doplnění názvu třídy patřící do balíčku java.io.
7.3 Použití pluginu javacomplete
Základní použití pluginu javacomplete je snadné, protože automatické doplňování je při otevření zdrojového kódu Javy řešeno přes omnifunc a tudíž i přes klávesovou zkratku Ctrl+X Ctrl+O. Doplňovat lze jména různých symbolů, což je ostatně patrné při pohledu na screeshoty. Mezi podporované typy symbolů patří statické i nestatické atributy, statické i nestatické metody, názvy balíčků a podbalíčků a taktéž doplnění názvů tagů generovaných utilitou ctags.
Obrázek 25: Doplnění názvu atributu či metody vlastní třídy.
Obrázek 26: Doplnění názvu atributu či metody u třídy patřící do standardní knihovny.
8. Předchozí části článku
- Užitečné skripty a pluginy pro textový editor Vim
http://www.root.cz/clanky/uzitecne-skripty-a-pluginy-pro-textovy-editor-vim/ - Užitečné skripty a pluginy pro textový editor Vim (2.část)
http://www.root.cz/clanky/uzitecne-skripty-a-pluginy-pro-textovy-editor-vim-2-cast/ - Užitečné skripty a pluginy pro textový editor Vim (3.část)
http://www.root.cz/clanky/uzitecne-skripty-a-pluginy-pro-textovy-editor-vim-3-cast/
9. Odkazy na Internetu
- The NERD Commenter : A plugin that allows for easy commenting of code for many filetypes.
http://www.vim.org/scripts/script.php?script_id=1218 - NERD Commenter na GitHubu
https://github.com/scrooloose/nerdcommenter - luarefvim : Lua reference manual
http://www.vim.org/scripts/script.php?script_id=1291 - lua.vim : Lua file type plug-in for the Vim text editor
http://www.vim.org/scripts/script.php?script_id=3625 - vim-lua-ftplugin
https://github.com/xolox/vim-lua-ftplugin - Vi Improved
https://wiki.python.org/moin/Vim - javacomplete : Omni Completion for JAVA
http://www.vim.org/scripts/script.php?script_id=1785 - 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