Hlavní navigace

Užitečné skripty a pluginy pro textový editor Vim (4.část)

Pavel Tišnovský 7. 4. 2015

V dalším článku o užitečných skriptech a pluginech rozšiřujících schopnosti editoru Vim se budeme zabývat převážně moduly, které zpříjemní život vývojářům. Některé dále popsané pluginy, například NERD Commenter, jsou takřka univerzální, další pluginy (javacomplete) jsou již zaměřeny na jednotlivé programovací jazyky.

Obsah

1. Užitečné skripty a pluginy pro textový editor Vim (4.část)

2. Nastavení interní proměnné mapleader

3. Plugin NERD Commenter

   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. Plugin JavaBrowser

   5.1 Popis pluginu JavaBrowser

   5.2 Instalace pluginu JavaBrowser

   5.3 Použití pluginu JavaBrowser

6. Problematika technologie automatického doplňování ve Vimu

7. Plugin javacomplete

   7.1 Popis pluginu javacomplete

   7.2 Instalace pluginu javacomplete

   7.3 Použití pluginu javacomplete

8. Předchozí části článku

9. Odkazy na Internetu

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/slova
Rež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/scrip­t.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

  1. Užitečné skripty a pluginy pro textový editor Vim
    http://www.root.cz/clanky/uzitecne-skripty-a-pluginy-pro-textovy-editor-vim/
  2. 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/
  3. 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

  1. The NERD Commenter : A plugin that allows for easy commenting of code for many filetypes.
    http://www.vim.org/scripts/scrip­t.php?script_id=1218
  2. NERD Commenter na GitHubu
    https://github.com/scroolo­ose/nerdcommenter
  3. luarefvim : Lua reference manual
    http://www.vim.org/scripts/scrip­t.php?script_id=1291
  4. lua.vim : Lua file type plug-in for the Vim text editor
    http://www.vim.org/scripts/scrip­t.php?script_id=3625
  5. vim-lua-ftplugin
    https://github.com/xolox/vim-lua-ftplugin
  6. Vi Improved
    https://wiki.python.org/moin/Vim
  7. javacomplete : Omni Completion for JAVA
    http://www.vim.org/scripts/scrip­t.php?script_id=1785
  8. SearchComplete
    http://www.vim.org/scripts/scrip­t.php?script_id=474
  9. ShowMarks
    http://www.vim.org/scripts/scrip­t.php?script_id=152
  10. ctrlp.vim
    https://github.com/kien/ctrlp.vim
  11. ctrlp.vim
    http://kien.github.io/ctrlp.vim/
  12. vim-signature
    https://github.com/kshenoy/vim-signature
  13. Supertab
    http://www.vim.org/scripts/scrip­t.php?script_id=1643
  14. Supertab (GitHub)
    https://github.com/ervandew/supertab
  15. Vim Essential Plugin: NERD Tree
    http://code.tutsplus.com/tutorials/vim-essential-plugin-nerdtree–net-19692
  16. The NERD tree : A tree explorer plugin for navigating the filesystem
    http://vim.sourceforge.net/scrip­ts/script.php?script_id=1658
  17. NERD Tree Guide
    http://usevim.com/2012/07/18/ner­dtree/
  18. vcscommand.vim : CVS/SVN/SVK/git/hg/bzr integration plugin
    http://www.vim.org/scripts/scrip­t.php?script_id=90
  19. vcscommand na GitHubu
    https://github.com/vim-scripts/vcscommand.vim
  20. Popis skriptu Vim Pathogen
    http://www.vim.org/scripts/scrip­t.php?script_id=2332
  21. Poslední verze skriptu Vim Pathogen
    https://tpo.pe/pathogen.vim
  22. Nejlepší pluginy pro Vim
    http://vimawesome.com/
  23. Nejlepší pluginy pro Vim
    http://www.vim.org/scripts/scrip­t_search_results.php?order_by=ra­ting
  24. Vim-airline na GitHubu
    https://github.com/bling/vim-airline
  25. Vim-airline na www.vim.org
    http://www.vim.org/scripts/dow­nload_script.php?src_id=22726
  26. Vim-fugitive na GitHubu
    https://github.com/tpope/vim-fugitive
  27. Vim-fugitive na www.vim.org
    http://www.vim.org/scripts/scrip­t.php?script_id=2975
  28. Textový editor Vim jako IDE (seriál)
    http://www.root.cz/clanky/textovy-editor-vim-jako-ide/
  29. Building Vim
    http://vim.wikia.com/wiki/Bu­ilding_Vim
  30. Getting the Vim source with Mercurial
    http://vim.wikia.com/wiki/Get­ting_the_Vim_source_with_Mer­curial
  31. Vim Perl Interface
    http://vim.dindinx.net/vim7/html/if_per­l.txt.php
  32. Vim Perl Support
    http://www.softpanorama.or­g/Editors/Vimorama/vim_per­l_support.shtml
  33. VIM as Python IDE
    http://blog.dispatched.ch/2009/05/24/vim-as-python-ide/
  34. Stack Overflow: VIM: Perl interface: passing a variable to Perl and reading a vim variable from Perl
    http://stackoverflow.com/qu­estions/4999902/vim-perl-interface-passing-a-variable-to-perl-and-reading-a-vim-variable-from
  35. Stack Overflow: Getting started with vim scripting with Perl
    http://stackoverflow.com/qu­estions/2208618/getting-started-with-vim-scripting-with-perl
  36. Python with a modular IDE (Vim)
    http://www.sontek.net/python-with-a-modular-ide-vim
  37. Getting to VIM's Python interface
    http://zerokspot.com/weblog/2009/02/21/get­ting-to-know-vims-python-interface/
  38. Pretty-formatting XML
    http://vim.wikia.com/wiki/Pretty-formatting_XML
  39. Delete a pair of XML/HTML tags
    http://vim.wikia.com/wiki/De­lete_a_pair_of_XML/HTML_tags
  40. Vim as XML Editor
    http://www.pinkjuice.com/how­to/vimxml/
  41. xmledit: A filetype plugin to help edit XML, HTML, and SGML documents
    http://www.vim.org/scripts/scrip­t.php?script_id=301
  42. Poslední vývojová verze makra xmledit
    http://github.com/sukima/xmledit/
  43. vim.wikia: Display date-and-time on status line
    http://vim.wikia.com/wiki/Display_date-and-time_on_status_line
  44. vim.wikia: Writing a valid statusline
    http://vim.wikia.com/wiki/Wri­ting_a_valid_statusline
  45. vim.wikia: Statusline tab level ruler
    http://vim.wikia.com/wiki/Sta­tusline_tab_level_ruler
  46. vim.wikia: Switching between different statuslines
    http://vim.wikia.com/wiki/Swit­ching_between_different_sta­tuslines
  47. X Selections, Cut Buffers, and Kill Rings
    http://www.jwz.org/doc/x-cut-and-paste.html
  48. Accessing the system clipboard
    http://vim.wikia.com/wiki/Ac­cessing_the_system_clipbo­ard
  49. xcutsel(1) – Linux man page
    http://linux.die.net/man/1/xcutsel
  50. snipMate : TextMate-style snippets for Vim
    http://www.vim.org/scripts/scrip­t.php?script_id=2540
  51. msanders / snipmate.vim
    https://github.com/msander­s/snipmate.vim
  52. snipMate.vim Introductory Screencast
    http://vimeo.com/3535418
  53. Clewn home page
    http://clewn.sourceforge.net/
  54. How to connect vim with gdb – using clewn
    http://chunhao.net/blog/how-to-connect-vim-with-gdb-using-clewn
  55. yavdb : Yet Another (Generic) Vim Debugger Integration
    http://www.vim.org/scripts/scrip­t.php?script_id=1954
  56. Vim home page
    http://www.vim.org/
  57. vim (man page)
    http://www.linux-tutorial.info/modules.php?na­me=ManPage&sec=1&manpage=vim
  58. Tutorial: Make Vim as Your C/C++ IDE Using c.vim Plugin
    http://www.thegeekstuff.com/2009/01/tu­torial-make-vim-as-your-cc-ide-using-cvim-plugin/
  59. c.vim : C/C++ IDE
    http://vim.sourceforge.net/scrip­ts/script.php?script_id=213
  60. c.vim : C/C++ IDE key mappings
    http://lug.fh-swf.de/vim/vim-c/c-hotkeys.pdf
  61. Základní základy editoru Vim
    http://www.root.cz/clanky/zakladni-zaklady-editoru-vim/
  62. Jak si přizpůsobit Vim
    http://www.root.cz/serialy/jak-si-prizpusobit-vim/
  63. Taglist (plugin)
    http://www.vim.org/scripts/scrip­t.php?script_id=273
  64. The NERD tree: A tree explorer plugin for navigating the filesystem
    http://www.vim.org/scripts/scrip­t.php?script_id=1658
  65. JavaBrowser : Shows java file class, package in a tree as in IDEs. Java source browser.
    http://www.vim.org/scripts/scrip­t.php?script_id=588
  66. snippetsEmu : An attempt to emulate TextMate's snippet expansion
    http://www.vim.org/scripts/scrip­t.php?script_id=1318
Našli jste v článku chybu?
Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Lupa.cz: Slevové šílenství je tu. Kde nakoupit na Black Friday?

Slevové šílenství je tu. Kde nakoupit na Black Friday?

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Lupa.cz: Není sleva jako sleva. Jak obchodům nenaletět?

Není sleva jako sleva. Jak obchodům nenaletět?

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Lupa.cz: Babiš: E-shopů se EET možná nebude týkat

Babiš: E-shopů se EET možná nebude týkat

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Podnikatel.cz: EET zvládneme, budou horší zákony

EET zvládneme, budou horší zákony