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

7. 5. 2015
Doba čtení: 19 minut

Sdílet

V již sedmé části článku o přídavných modulech rozšiřujících možnosti textového editoru Vim si popíšeme pluginy DirDiff, fakeclip, Multiple Cursors a Vim Slime. Zajímavý je zejména modul Multiple Cursors, protože díky němu se do Vimu dostává další vlastnost známá ze služebně mladších textových editorů.

Obsah

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

2. Plugin DirDiff

   2.1 Popis pluginu DirDiff

   2.2 Instalace pluginu DirDiff

   2.3 Použití pluginu DirDiff

3. Plugin fakeclip

   3.1 Popis pluginu fakeclip

   3.2 Instalace pluginu fakeclip

   3.3 Použití pluginu fakeclip

4. Plugin Multiple Cursors

   4.1 Popis pluginu Multiple Cursors

   4.2 Instalace pluginu Multiple Cursors

   4.3 Použití pluginu Multiple Cursors

5. Plugin Vim Slime

   5.1 Popis pluginu Vim Slime

   5.2 Instalace pluginu Vim Slime

   5.3 Použití pluginu Vim Slime

6. Odkazy na předchozí části článku

7. Odkazy na Internetu

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 dy
% 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_BUFFER0CUT_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

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

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

Obrázek 27: Dále se zeptá na jméno okna (lze taktéž pouze potvrdit Enterem). Opět platí při použití Screen.

ict ve školství 24

obr

Obrázek 28: Vybraná část programu je „magicky“ přenesena do REPL a tam vykonána.

obr

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

  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/
  4. 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/
  5. 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/
  6. 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

  1. DirDiff.vim : A plugin to diff and merge two directories recursively.
    http://www.vim.org/scripts/scrip­t.php?script_id=102
  2. vim-dirdiff na GitHubu
    https://github.com/will133/vim-dirdiff
  3. fakeclip : pseudo clipboard register for non-GUI version of Vim
    http://www.vim.org/scripts/scrip­t.php?script_id=2098
  4. vim-fakeclip na GitHubu
    https://github.com/kana/vim-fakeclip
  5. vim-fakeclip: Dokumentace
    http://kana.github.io/con­fig/vim/fakeclip.html
  6. Vim Multiple Cursors na GitHubu
    https://github.com/terryma/vim-multiple-cursors
  7. SLIME (Wikipedia)
    http://en.wikipedia.org/wiki/SLIME
  8. vim-slime na GitHubu
    https://github.com/jpalardy/vim-slime
  9. vi Editor Commands
    http://www.cs.rit.edu/~cslab/vi­.html#A1.4
  10. vi Manual
    http://www.cs.fsu.edu/gene­ral/vimanual.html
  11. Mastering the Vi Editor
    http://www.susnet.uk/mastering-the-vi-editor
  12. Using undo branches
    http://vim.wikia.com/wiki/U­sing_undo_branches
  13. Gundo
    http://sjl.bitbucket.org/gundo.vim/
  14. Vim as a Python IDE, or Python IDE as Vim
    http://blog.jetbrains.com/pychar­m/2013/06/vim-as-a-python-ide-or-python-ide-as-vim/
  15. histwin na GitHubu
    https://github.com/chrisbra/his­twin.vim
  16. histwin.vim : Browse the undo tree
    http://www.vim.org/scripts/scrip­t.php?script_id=2932
  17. undotree.vim : Display your undo history in a graph
    http://www.vim.org/scripts/scrip­t.php?script_id=4177
  18. Surround
    http://www.bestofvim.com/plu­gin/surround/
  19. SnipMate
    http://www.bestofvim.com/plu­gin/snipmate/
  20. Getting a Clojure REPL in Vim With VimClojure, Nailgun, and Leiningen
    http://naleid.com/blog/2011/12/19/get­ting-a-clojure-repl-in-vim-with-vimclojure-nailgun-and-leiningen/
  21. 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
  22. NERD Commenter na GitHubu
    https://github.com/scroolo­ose/nerdcommenter
  23. luarefvim : Lua reference manual
    http://www.vim.org/scripts/scrip­t.php?script_id=1291
  24. lua.vim : Lua file type plug-in for the Vim text editor
    http://www.vim.org/scripts/scrip­t.php?script_id=3625
  25. vim-lua-ftplugin
    https://github.com/xolox/vim-lua-ftplugin
  26. Vi Improved
    https://wiki.python.org/moin/Vim
  27. javacomplete : Omni Completion for JAVA
    http://www.vim.org/scripts/scrip­t.php?script_id=1785
  28. SearchComplete
    http://www.vim.org/scripts/scrip­t.php?script_id=474
  29. ShowMarks
    http://www.vim.org/scripts/scrip­t.php?script_id=152
  30. ctrlp.vim
    https://github.com/kien/ctrlp.vim
  31. ctrlp.vim
    http://kien.github.io/ctrlp.vim/
  32. vim-signature
    https://github.com/kshenoy/vim-signature
  33. Supertab
    http://www.vim.org/scripts/scrip­t.php?script_id=1643
  34. Supertab (GitHub)
    https://github.com/ervandew/supertab
  35. Vim Essential Plugin: NERD Tree
    http://code.tutsplus.com/tutorials/vim-essential-plugin-nerdtree–net-19692
  36. The NERD tree : A tree explorer plugin for navigating the filesystem
    http://vim.sourceforge.net/scrip­ts/script.php?script_id=1658
  37. NERD Tree Guide
    http://usevim.com/2012/07/18/ner­dtree/
  38. vcscommand.vim : CVS/SVN/SVK/git/hg/bzr integration plugin
    http://www.vim.org/scripts/scrip­t.php?script_id=90
  39. vcscommand na GitHubu
    https://github.com/vim-scripts/vcscommand.vim
  40. Popis skriptu Vim Pathogen
    http://www.vim.org/scripts/scrip­t.php?script_id=2332
  41. Poslední verze skriptu Vim Pathogen
    https://tpo.pe/pathogen.vim
  42. Nejlepší pluginy pro Vim
    http://vimawesome.com/
  43. Nejlepší pluginy pro Vim
    http://www.vim.org/scripts/scrip­t_search_results.php?order_by=ra­ting
  44. Vim-airline na GitHubu
    https://github.com/bling/vim-airline
  45. Vim-airline na www.vim.org
    http://www.vim.org/scripts/dow­nload_script.php?src_id=22726
  46. Vim-fugitive na GitHubu
    https://github.com/tpope/vim-fugitive
  47. Vim-fugitive na www.vim.org
    http://www.vim.org/scripts/scrip­t.php?script_id=2975
  48. Textový editor Vim jako IDE (seriál)
    http://www.root.cz/clanky/textovy-editor-vim-jako-ide/
  49. Building Vim
    http://vim.wikia.com/wiki/Bu­ilding_Vim
  50. Getting the Vim source with Mercurial
    http://vim.wikia.com/wiki/Get­ting_the_Vim_source_with_Mer­curial
  51. Vim Perl Interface
    http://vim.dindinx.net/vim7/html/if_per­l.txt.php
  52. Vim Perl Support
    http://www.softpanorama.or­g/Editors/Vimorama/vim_per­l_support.shtml
  53. VIM as Python IDE
    http://blog.dispatched.ch/2009/05/24/vim-as-python-ide/
  54. 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
  55. Stack Overflow: Getting started with vim scripting with Perl
    http://stackoverflow.com/qu­estions/2208618/getting-started-with-vim-scripting-with-perl
  56. Python with a modular IDE (Vim)
    http://www.sontek.net/python-with-a-modular-ide-vim
  57. Getting to VIM's Python interface
    http://zerokspot.com/weblog/2009/02/21/get­ting-to-know-vims-python-interface/
  58. Pretty-formatting XML
    http://vim.wikia.com/wiki/Pretty-formatting_XML
  59. Delete a pair of XML/HTML tags
    http://vim.wikia.com/wiki/De­lete_a_pair_of_XML/HTML_tags
  60. Vim as XML Editor
    http://www.pinkjuice.com/how­to/vimxml/
  61. xmledit: A filetype plugin to help edit XML, HTML, and SGML documents
    http://www.vim.org/scripts/scrip­t.php?script_id=301
  62. Poslední vývojová verze makra xmledit
    http://github.com/sukima/xmledit/
  63. vim.wikia: Display date-and-time on status line
    http://vim.wikia.com/wiki/Display_date-and-time_on_status_line
  64. vim.wikia: Writing a valid statusline
    http://vim.wikia.com/wiki/Wri­ting_a_valid_statusline
  65. vim.wikia: Statusline tab level ruler
    http://vim.wikia.com/wiki/Sta­tusline_tab_level_ruler
  66. vim.wikia: Switching between different statuslines
    http://vim.wikia.com/wiki/Swit­ching_between_different_sta­tuslines
  67. X Selections, Cut Buffers, and Kill Rings
    http://www.jwz.org/doc/x-cut-and-paste.html
  68. Accessing the system clipboard
    http://vim.wikia.com/wiki/Ac­cessing_the_system_clipbo­ard
  69. xcutsel(1) – Linux man page
    http://linux.die.net/man/1/xcutsel
  70. snipMate : TextMate-style snippets for Vim
    http://www.vim.org/scripts/scrip­t.php?script_id=2540
  71. msanders / snipmate.vim
    https://github.com/msander­s/snipmate.vim
  72. snipMate.vim Introductory Screencast
    http://vimeo.com/3535418
  73. Clewn home page
    http://clewn.sourceforge.net/
  74. How to connect vim with gdb – using clewn
    http://chunhao.net/blog/how-to-connect-vim-with-gdb-using-clewn
  75. yavdb : Yet Another (Generic) Vim Debugger Integration
    http://www.vim.org/scripts/scrip­t.php?script_id=1954
  76. Vim home page
    http://www.vim.org/
  77. vim (man page)
    http://www.linux-tutorial.info/modules.php?na­me=ManPage&sec=1&manpage=vim
  78. 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/
  79. c.vim : C/C++ IDE
    http://vim.sourceforge.net/scrip­ts/script.php?script_id=213
  80. c.vim : C/C++ IDE key mappings
    http://lug.fh-swf.de/vim/vim-c/c-hotkeys.pdf
  81. Základní základy editoru Vim
    http://www.root.cz/clanky/zakladni-zaklady-editoru-vim/
  82. Jak si přizpůsobit Vim
    http://www.root.cz/serialy/jak-si-prizpusobit-vim/
  83. Taglist (plugin)
    http://www.vim.org/scripts/scrip­t.php?script_id=273
  84. The NERD tree: A tree explorer plugin for navigating the filesystem
    http://www.vim.org/scripts/scrip­t.php?script_id=1658
  85. 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
  86. snippetsEmu : An attempt to emulate TextMate's snippet expansion
    http://www.vim.org/scripts/scrip­t.php?script_id=1318
  87. Vim plugins for developers
    http://www.linuxtoday.com/upload/vim-plugins-for-developers-140619094010.html

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.