Obsah
1. Užitečné skripty a pluginy pro textový editor Vim (7.část)
3.2 Instalace pluginu fakeclip
4.1 Popis pluginu Multiple Cursors
4.2 Instalace pluginu Multiple Cursors
4.3 Použití pluginu Multiple Cursors
5.2 Instalace pluginu Vim Slime
6. Odkazy na předchozí části článku
1. Užitečné skripty a pluginy pro textový editor Vim (7.část)
V již sedmé části článku o pluginech naprogramovaných pro textový editor Vim si popíšeme další čtyři rozšiřující moduly. První modul se jmenuje DirDiff a jak již jeho název napovídá, slouží tento plugin pro zjištění rozdílů mezi soubory umístěnými ve dvou adresářích s možností prohlédnutí rozdílů mezi vybranými soubory a taktéž aplikováním změn. Druhý modul nazvaný fakeclip může pomoci uživatelům, kteří Vim spouští v terminálu, protože tento modul zpřístupňuje systémovou schránku (clipboard). Třetí modul se jmenuje Multiple Cursors a nabízí právě tuto funkci – možnost vybrat několik slov či částí textu a provést s nimi stejnou operaci – smazání, přepis či přidání textu (insert, append). Poslední skript, který se jmenuje Vim Slime, je možné použít pro ovládání smyčky REPL přímo z Vimu, přičemž tento skript může pracovat s jakýmkoli programovacím jazykem, který nabízí smyčku REPL, tj. interaktivní shell.
2. Plugin DirDiff
2.1 Popis pluginu DirDiff
Prvním pluginem, s nímž se v dnešním článku seznámíme, je přídavný modul nazvaný DirDiff. Jméno tohoto pluginu poměrně přesně vystihuje jeho činnost, neboť se skutečně jedná o modul, jenž je možné použít pro porovnání obsahu dvou adresářů, přesněji řečeno souborů uložených v těchto adresářích. Důležitý a užitečný je fakt, že se porovnání provádí rekurzivně, tj. zpracovány jsou i případné podadresáře. To se může hodit v mnoha situacích, například ve chvíli, kdy má uživatel na disku uložen pracovní adresář a na jiném médiu zálohu tohoto adresáře a potřebuje zjistit, které soubory se od poslední zálohy změnily (lze kombinovat například i s příkazem rsync). Pokud se nějaké soubory změnily, lze si prohlédnout jednotlivé rozdíly, podobně jako při volání vim -d soubor1 soubor2 (takzvaný režim vim diff) a navíc má uživatel k dispozici několik příkazů určených pro synchronizaci souborů v obou porovnávaných adresářích.
Obrázek 1: Nápověda k pluginu DirDiff.
Obrázek 2: Tímto příkazem se zahájí porovnání dvou adresářů.
2.2 Instalace pluginu DirDiff
Instalace tohoto pluginu je velmi jednoduchá, neboť je možné si do adresáře ~/.vim/bundle naklonovat celý repositář s tímto modulem:
cd ~/.vim/bundle git clone https://github.com/will133/vim-dirdiff Cloning into 'vim-dirdiff'... remote: Counting objects: 36, done. remote: Total 36 (delta 0), reused 0 (delta 0), pack-reused 36 Unpacking objects: 100% (36/36), done. Checking connectivity... done.
Struktura adresáře ~/.vim by měla být následující (pokud budeme ignorovat již dříve nainstalované moduly):
├── autoload ├── bundle │ └── vim-dirdiff │ ├── doc │ └── plugin ├── doc ├── plugin └── spell
Obrázek 3: Výsledek porovnání souborů umístěných ve dvou adresářích.
Obrázek 4: Přechod na vybraný soubor se zvýrazněnými rozdíly.
2.3 Použití pluginu DirDiff
Použití pluginu DirDiff je ve skutečnosti velmi jednoduché. Po spuštění textového editoru Vim stačí v normálním režimu použít příkaz:
:DirDiff cesta_k_prvnímu_adresáři cesta_ke_druhému_adresáři
Po spuštění tohoto příkazu se okno textového editoru Vim rozdělí na několik částí. V části spodní je zobrazen seznam porovnávaných souborů a v části horní pak výsledky porovnání (vim diff) vybraného souboru ve verzi získané z prvního adresáře i z adresáře druhého. Navíc je přepsán význam některých klávesových zkratek:
# | Zkratka | Význam |
---|---|---|
1 | Enter | zobrazí se rozdíl pro vybraný soubor (na němž se nachází kurzor) |
2 | o | stejný význam jako předchozí zkratka |
3 | s | provedení synchronizace s výběrem vhodné metody (kopie z prvního adresáře atd.) |
4 | u | má stejný význam jako příkaz :diffupdate |
5 | q | ukončení režimu DirDiff |
Obrázek 5: Výběr operace použité pro synchronizaci souborů.
Obrázek 6: Dokončení synchronizace.
3. Plugin fakeclip
3.1 Popis pluginu fakeclip
Při popisu základních vlastností textového editoru Vim jsme si mj. popsali i takzvané registry, do nichž je možné ukládat bloky textu, popř. příkazy spouštěné jako makra. Tyto příkazy jsou samozřejmě taktéž reprezentovány textovými bloky, o čemž se můžete snadno přesvědčit po záznamu makra pomocí příkazu qx, kde x je jméno zvoleného registru. Význam těch nejdůležitějších a nejčastěji využívaných registrů je vypsán v následující tabulce:
Registr | Význam |
---|---|
a-z | registry, které je možné přímo měnit uživatelem |
0–9 | registry naplňované automaticky příkazy d a y |
% | registr obsahující jméno právě editovaného souboru |
: | registr obsahující poslední příkaz, vhodné při vyvolání tohoto příkazu jako makra |
= | pseudoregistr používaný pro výpočet matematických a „řetězcových“ výrazů |
/ | registr obsahující posledně vyhledávaný řetězec (resp. text odpovídající regulárnímu výrazu) |
" | implicitní registr pro operace c, d, s nebo y |
– | implicitní registr pro operace, které mění menší část textu, než je jeden textový řádek |
. | registr obsahující poslední text zapsaný ve vkládacím režimu |
~ | registr obsahující text, který byl do Vimu přenesen pomocí technologie drag and drop |
* | registr reflektující obsah výběru nazvaného PRIMARY (viz další text) |
+ | registr reflektující obsah výběru nazvaného CLIPBOARD (viz další text) |
Obrázek 7: Stručná nápověda k pluginu fakeclip.
Poslední dvojice registrů vypsaná v tabulce zobrazené v předchozím odstavci má speciální význam, protože slouží mj. i k přenosu textů z jiných aplikací do Vimu a samozřejmě i opačným směrem. Tyto registry mají název „*“ (hvězdička) a „+“ (plus). Z jakého důvodu jsou však použity dva registry, když by teoreticky měl dostačovat registr jediný? V X Window Systemu jsou totiž pro přenos textů, popř. i dalších dat, používány hned tři konceptuálně zcela odlišné metody. První metoda spočívá v přenosu textů s využitím pojmenovaných výběrů (selection) [1] [2]. Druhá metoda využívá přenosu textů přes takzvané cut-buffery [3] [4] a metoda třetí využívá technologii drag and drop.
Obrázek 8: Některé rezervované klávesové zkratky.
Na moderních systémech s grafickým uživatelským rozhraním je převážně používaný přenos textů přes výběry, ovšem textový editor Vim dokáže za určitých okolností pracovat i s cut-buffery. V X Window Systemu si může každá aplikace vytvořit libovolný počet výběrů (selection), z nichž každý je pojmenován, tj. je jednoznačně identifikován řetězcem (jedná se o vlastnost/property přiřazenou k oknu). Většina aplikací pracuje, podobně jako Vim, s dvojicí výběrů nazvaných PRIMARY a CLIPBOARD. V případě cut-bufferů, což jsou vlastnosti vytvořené v kořenovém okně, se většinou používají jména CUT_BUFFER0 až CUT_BUFFER7, přičemž Vim pracuje pouze s CUT_BUFFER0 (ostatně i mnohé další aplikace se spokojí s jediným cut bufferem, i když jich je možné využívat větší množství). Zatímco s využitím výběrů je možné obecně přenášet různé typy dat (texty, rastrové obrázky, vektorové obrázky atd.), u cut-bufferů je přenos omezen pouze na texty, což souvisí s tím, že aplikace do cut bufferu zapíše data a posléze se již o obsah bufferu nestará (může být dokonce ukončena).
Obrázek 9: GUI varianta Vimu nabízí nativní podporu pro přístup do schránky.
Práce s registry + a * je plně podporována ve variantě Vimu přeloženého s podporou grafického uživatelského rozhraní (Gvim, Kvim) a některé operace budou k dispozici i ve chvíli, kdy jsou použity ve Vimu spuštěném v terminálu, ovšem pouze za předpokladu, že byl Vim přeložen s volbami +clipboard a +xterm_clipboard. Alternativně je však možné i pro „hloupý“ Vim spuštěný na běžném terminálu schránku používat, a to po instalaci pluginu fakeclip, který využívá externí příkaz xclip (ten musí být dostupný po instalaci popsané v navazující podkapitole).
Obrázek 10: V závislosti na překladu Vimu je zajištěn přístup do schránky přes Xterm.
3.2 Instalace pluginu fakeclip
Instalace se skládá ze dvou kroků. V prvním kroku se naklonuje repositář projektu fakeclip, a to nám již velmi dobře známým způsobem:
cd ~/.vim/bundle git clone https://github.com/kana/vim-fakeclip Cloning into 'vim-fakeclip'... remote: Counting objects: 544, done. remote: Total 544 (delta 0), reused 0 (delta 0), pack-reused 544 Receiving objects: 100% (544/544), 72.14 KiB | 0 bytes/s, done. Resolving deltas: 100% (209/209), done. Checking connectivity... done.
Struktura adresáře ~/.vim by měla být následující:
. ├── autoload ├── bundle │ ├── vim-dirdiff │ │ ├── doc │ │ └── plugin │ └── vim-fakeclip │ ├── autoload │ ├── doc │ ├── plugin │ └── t ├── doc ├── plugin └── spell
V kroku druhém je zapotřebí nainstalovat balíček xclip. Na systémech používajících dpkg je instalace provedena následovně:
sudo apt-get install xclip Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: xclip 0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded. Need to get 17,0 kB of archives. After this operation, 72,7 kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu/ trusty/universe xclip amd64 0.12+svn84-4 [17,0 kB] Fetched 17,0 kB in 0s (40,7 kB/s) Selecting previously unselected package xclip. (Reading database ... 157816 files and directories currently installed.) Preparing to unpack .../xclip_0.12+svn84-4_amd64.deb ... Unpacking xclip (0.12+svn84-4) ... Processing triggers for man-db (2.6.7.1-1ubuntu1) ... Setting up xclip (0.12+svn84-4) ...
Nyní by již mělo být možné plugin fakeclip začít používat.
3.3 Použití pluginu fakeclip
Práce s pluginem fakeclip je ve skutečnosti velmi jednoduchá, protože tento modul po své inicializaci do Vimu přidává další speciální registr nazvaný & (ampersand). Pokud se do tohoto registru příkazem yank, delete apod. uloží nějaký text, je automaticky přenesen do systémové schránky, jejíž obsah je možné v reálném čase sledovat například s využitím nástroje xclipboard. Grafické uživatelské rozhraní této aplikace je sice z historických důvodů hrozné (móda zakulacených tlačítek zobrazených bez použití antialiasingu již dávno odezněla, což je jen dobře), to však nic nemění na její použitelnosti :-). Uživatel si samozřejmě může provést namapování různých klávesových zkratek (Ctrl+C) takovým způsobem, aby automaticky využívaly zmíněný speciální registr &. Podívejme se na dva jednoduché příklady:
:vnoremap <C-C> "&y :vnoremap <C-X> "&x
Znak " slouží k výběru registru, následuje jméno registru a jeden z příkazů: y-yank či x-delete.
Obrázek 11: Přenos textu do schránky.
4. Plugin Multiple Cursors
4.1 Popis pluginu Multiple Cursors
Velmi zajímavým a současně i užitečným pluginem se pro mnoho uživatelů může stát rozšiřující modul nazvaný Multiple Cursors. Cílem tohoto pluginu je přinést do Vimu jednu vlastnost, kterou se může chlubit konkurenční textový editor Sublime Text: možnost vytvoření několika výběrů (selection) s následným provedením vybrané operace nad všemi výběry. To vlastně znamená, jakoby se kurzor nacházel na všech výběrech současně, protože převážná část vimovských operací se vztahuje k pozici kurzoru. Operace mohou být různé, od vymazání textu, přes jeho změnu až po přidání znaků před či naopak za vybraný řetězec. Modul Multiple Cursors není jediným pluginem pro Vim, který přináší podobnou funkcionalitu, ovšem podle mého názoru je nejjednodušeji použitelný, protože si uživatel musí pamatovat pouze jedinou klávesovou zkratku – Ctrl+N. Po provedení výběru je již možné použít klasické a důvěrně známé vimovské příkazy typu c (change) s (substitute), i (insert) apod.
Obrázek 12: Nápověda k pluginu Multiple Cursors.
Obrázek 13: Odstavec popisující princip ovládání pluginu Multiple Cursors.
4.2 Instalace pluginu Multiple Cursors
Instalaci přídavného modulu Multiple Cursors není zapotřebí dopodrobna popisovat, neboť se znovu využije Git a repositář připravený na GitHubu:
cd ~/.vim/bundle git clone https://github.com/terryma/vim-multiple-cursors Cloning into 'vim-multiple-cursors'... remote: Counting objects: 561, done. remote: Total 561 (delta 0), reused 0 (delta 0), pack-reused 561 Receiving objects: 100% (561/561), 1.17 MiB | 752.00 KiB/s, done. Resolving deltas: 100% (263/263), done. Checking connectivity... done.
Pro jistotu si opět ukážeme strukturu adresáře .vim:
. ├── autoload ├── bundle │ └── vim-multiple-cursors │ ├── assets │ ├── autoload │ ├── doc │ ├── plugin │ └── spec ├── doc ├── plugin └── spell
Obrázek 14: Zdrojový kód, který se bude upravovat. Kurzor je umístěn na prvním příkazu print.
Obrázek 15: Několikerý stisk klávesové zkratky Ctrl+N vedl k výběru všech příkazů print.
Obrázek 16: Příkazem c (change) se změnily všechny označené příkazy print na logger.output.
Obrázek 17: Pokračování práce s editorem.
4.3 Použití pluginu Multiple Cursors
Činnost modulu Multiple Cursors je zahájena ve chvíli, kdy uživatel stiskne klávesovou zkratku Ctrl+N, čímž dojde k výběru slova, na němž se v daný okamžik nachází textový kurzor. Opětovným stiskem této klávesové zkratky je možné vybrat další stejná slova zapsaná dále v textu, tuto zkratku je samozřejmě možné libovolně opakovat. Následovat může buď přepnutí z režimu výběru do normálního režimu klávesou v popř. je možné přímo zadat některý z editačních příkazů typu c (change) či d (delete). Po provedení tohoto příkazu dojde ke změně všech vybraných slov a důležité taktéž je, že změna je prováděna vizuálně na všech vybraných místech v textu.
Obrázek 18: Příkaz s má ve vícekurzorovém režimu podobný význam jako c.
Obrázek 19: Zakomentování pomocí příkazů v a I, po nichž následuje zápis dvojice znaků –.
Obrázek 20: Multikurzor je možné přesouvat kurzorovými klávesami…
Obrázek 21: … a na vhodném místě zadat příkaz a či i.
5. Plugin Vim Slime
5.1 Popis pluginu Vim Slime
V předchozích částech tohoto článku jsme se již několikrát setkali s pluginy, které byly určeny pro zjednodušení práce programátorů používajících jazyky s interaktivní smyčkou REPL, tj. s takovými jazyky, které je možné spustit v interaktivním režimu. Pro Vim však existuje minimálně jeden univerzální plugin použitelný pro prakticky všechny jazyky s REPL. Tento plugin využívá vlastností dvou oblíbených terminálových aplikací – screen a tmux. Tyto aplikace totiž nejenom že umožní rozdělení plochy terminálu na prakticky libovolné množství virtuálních oken, ale taktéž podporují přenos textu, který je do terminálu (resp. do aplikace běžící v terminálu) poslán stejným způsobem, jako by ho uživatel napsal na klávesnici. Uživatel musí provést tři operace – spustit screen či tmux, následně spustit interpret svého oblíbeného programovacího jazyka (Clojure, Python, Perl, BASH atd.) v interaktivním režimu a posléze ovládat REPL přímo z Vimu spuštěného například z GUI.
Obrázek 22: Nápověda k pluginu Vim Slime.
5.2 Instalace pluginu Vim Slime
Instalace tohoto přídavného modulu je stejně jednoduchá, jako tomu bylo u všech tří předchozích pluginů, protože zdrojové kódy jsou opět nabízeny na GitHubu:
cd ~/.vim/bundle git clone git://github.com/jpalardy/vim-slime.git Cloning into 'vim-slime'... remote: Counting objects: 441, done. remote: Total 441 (delta 0), reused 0 (delta 0), pack-reused 441 Receiving objects: 100% (441/441), 69.35 KiB | 0 bytes/s, done. Resolving deltas: 100% (157/157), done. Checking connectivity... done.
Pro jistotu si opět ukážeme strukturu adresáře .vim:
├── autoload ├── bundle │ ├── vim-dirdiff │ │ ├── doc │ │ └── plugin │ ├── vim-fakeclip │ │ ├── autoload │ │ ├── doc │ │ ├── plugin │ │ └── t │ ├── vim-multiple-cursors │ │ ├── assets │ │ ├── autoload │ │ ├── doc │ │ ├── plugin │ │ └── spec │ └── vim-slime │ ├── doc │ ├── ftplugin │ │ ├── coffee │ │ ├── fsharp │ │ ├── haskell │ │ ├── lhaskell │ │ ├── ocaml │ │ ├── python │ │ └── scala │ └── plugin ├── doc ├── plugin └── spell
Pokud preferujete použití nástroje tmux namísto screen (což ostatně doporučuji kvůli zbytečné prodlevě, kterou poslední verze utility screen vkládají za každou zprávu), je nutné do konfiguračního souboru .vimrc vložit tento řádek:
let g:slime_target = "tmux"
Obrázek 23: Poslání příkazu z Vimu do BASHe běžícího v jiném terminálu s Tmuxem.
Obrázek 24: Příkaz se skutečně přenesl a spustil.
5.3 Použití pluginu Vim Slime
Pokud je již smyčka REPL zvoleného programovacího jazyka spuštěna v session pojmenované například „repl“, lze v jiném okně či v jiném terminálu spustit samotný editor Vim a s využitím příkazu :SlimeConfig načíst a spustit plugin Vim Slime, který se dotáže na způsob připojení a taktéž na jméno session. Pokud je tento plugin úspěšně načten, je možné v jakémkoli okamžiku stisknout klávesovou zkratku Ctrl+C Ctrl+C. Skript se (pokud ještě nebyla provedena konfigurace) při prvním stisku této zkratky zeptá na jméno session a na okno – většinou jsou nabízené hodnoty správné, takže se jen potvrdí Enterem.
Obrázek 25: Textový editor Vim spuštěný v jiném terminálu (či v jiném okně nástroje screen). Přímo z Vimu je načten a proveden (spuštěn) skript slime.vim (při instalaci s využitím Pathogenu to není nutné).
Poté se již zcela automaticky celý odstavec vloží do vizuálního bloku (sekvence příkazů vip), vizuální blok se vloží do pojmenovaného registru y (sekvence příkazů "ry a nakonec se obsah tohoto registru přenese do okna, v němž běží REPL vybraného jazyka (tam se hned vyhodnotí, protože součástí přenášeného bloku je i koncový Enter).
Obrázek 26: Po prvním stisku Ctrl+C Ctrl+C se skript zeptá na jméno session (lze pouze potvrdit Enterem). Platí při použití Screen.
Celý postup možná vypadá poněkud složitě, ve skutečnosti si však na tento nástroj velmi rychle zvyknete. Je ho samozřejmě možné upravovat a rozšiřovat, například využít klávesovou zkratku K (hledání slova pod kurzorem v manuálových stránkách) k tomu, aby se do REPL poslal příkaz pro zobrazení dokumentace atd.
Obrázek 27: Dále se zeptá na jméno okna (lze taktéž pouze potvrdit Enterem). Opět platí při použití Screen.
Obrázek 28: Vybraná část programu je „magicky“ přenesena do REPL a tam vykonána.
Obrázek 29: Další příklad – stlačení Ctrl+C Ctrl+C nad formou/výrazem (range 0 10) – nyní se vše provede bez dalších dotazů.
6. Odkazy na 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/ - Užitečné skripty a pluginy pro textový editor Vim (4.část)
http://www.root.cz/clanky/uzitecne-skripty-a-pluginy-pro-textovy-editor-vim-4-cast/ - Užitečné skripty a pluginy pro textový editor Vim (5.část)
http://www.root.cz/clanky/uzitecne-skripty-a-pluginy-pro-textovy-editor-vim-5-cast/ - Užitečné skripty a pluginy pro textový editor Vim (6.část)
http://www.root.cz/clanky/uzitecne-skripty-a-pluginy-pro-textovy-editor-vim-6-cast-cestovani-v-case/
7. Odkazy na Internetu
- DirDiff.vim : A plugin to diff and merge two directories recursively.
http://www.vim.org/scripts/script.php?script_id=102 - vim-dirdiff na GitHubu
https://github.com/will133/vim-dirdiff - fakeclip : pseudo clipboard register for non-GUI version of Vim
http://www.vim.org/scripts/script.php?script_id=2098 - vim-fakeclip na GitHubu
https://github.com/kana/vim-fakeclip - vim-fakeclip: Dokumentace
http://kana.github.io/config/vim/fakeclip.html - Vim Multiple Cursors na GitHubu
https://github.com/terryma/vim-multiple-cursors - SLIME (Wikipedia)
http://en.wikipedia.org/wiki/SLIME - vim-slime na GitHubu
https://github.com/jpalardy/vim-slime - vi Editor Commands
http://www.cs.rit.edu/~cslab/vi.html#A1.4 - vi Manual
http://www.cs.fsu.edu/general/vimanual.html - Mastering the Vi Editor
http://www.susnet.uk/mastering-the-vi-editor - Using undo branches
http://vim.wikia.com/wiki/Using_undo_branches - Gundo
http://sjl.bitbucket.org/gundo.vim/ - Vim as a Python IDE, or Python IDE as Vim
http://blog.jetbrains.com/pycharm/2013/06/vim-as-a-python-ide-or-python-ide-as-vim/ - histwin na GitHubu
https://github.com/chrisbra/histwin.vim - histwin.vim : Browse the undo tree
http://www.vim.org/scripts/script.php?script_id=2932 - undotree.vim : Display your undo history in a graph
http://www.vim.org/scripts/script.php?script_id=4177 - Surround
http://www.bestofvim.com/plugin/surround/ - SnipMate
http://www.bestofvim.com/plugin/snipmate/ - Getting a Clojure REPL in Vim With VimClojure, Nailgun, and Leiningen
http://naleid.com/blog/2011/12/19/getting-a-clojure-repl-in-vim-with-vimclojure-nailgun-and-leiningen/ - 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 - Vim plugins for developers
http://www.linuxtoday.com/upload/vim-plugins-for-developers-140619094010.html