Užitečné skripty a pluginy pro textový editor Vim: propojení Vimu s debuggery

Pavel Tišnovský 21. 5. 2015

Poměrně velké množství programátorů používá textový editor Vim pro vývoj aplikací. Aby však Vim mohl plnohodnotně konkurovat integrovaným vývojovým prostředím, musí svým uživatelům nabídnout ještě minimálně jednu funkci – propojení s debuggery. Právě tímto tématem se budeme zabývat dnes.

Obsah

1. Užitečné skripty a pluginy pro textový editor Vim: propojení Vimu s debuggery

2. Princip propojení Vimu s debuggery

3. Funkce Vimu, které jsou používané pluginy spolupracujícími s debuggery

4. Plugin Clewn

5. Instalace pluginu Clewn

6. Použití pluginu Clewn

7. Plugin Pyclewn

8. Instalace pluginu Pyclewn

9. Použití pluginu Pyclewn

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

11. Odkazy na Internetu

1. Užitečné skripty a pluginy pro textový editor Vim: propojení Vimu s debuggery

Textový editor Vim se díky svému skriptovacímu jazyku Vim Script, podpoře maker, záložek (tabů), oken a bufferů může po instalaci vhodných pluginů změnit v poměrně robustní a přitom výkonné integrované vývojové prostředí, které navíc odpovídá unixové filozofii – Vim je v tomto případě komponentou volající další aplikace a nástroje, nikoli monolitickým programem, který teoreticky umí všechno, ovšem nic pořádně. :-) V mnoha případech musí programátoři použít debugger pro nalezení chyby v programu a právě v této chvíli stojí před rozhodnutím, zda debugger spustit v samostatném terminálu nebo zda naopak použít vhodný plugin pro spuštění a především pro ovládání debuggeru přímo z Vimu. Druhá možnost je v mnoha ohledech lepší, protože debugger ovládaný z příkazové řádky (gdb apod.) sice uživatelům nabízí nepřeberné množství mnohdy i velmi komplikovaných příkazů, na druhou stranu však nemá všechny možnosti celoobrazovkového debuggeru, na který jsou dnešní programátoři zvyklí.

Obrázek 1: Typické „sezení“ programátora využívajícího debugger gdb. Přeložení programu s vygenerováním ladicích informací (-g) a následné spuštění debuggeru.

Pro Vim vzniklo relativně velké množství pluginů zajišťujících propojení tohoto textového editoru s debuggerem (většinou se zmíněným gdb). My se dnes zaměříme na dvojici pluginů nazvaných Clewn a Pyclewn. První z těchto pluginů dokáže komunikovat s debuggerem gdb, druhý pak i s debuggerem nazvaným pdb používaným pro ladění aplikací naprogramovaných v Pythonu. Předností obou zmíněných pluginů je fakt, že před uživatelem neskrývají způsob komunikace s debuggerem, takže je v případě potřeby možné v debuggeru volat i takové příkazy, které nejsou přímo v pluginu podporovány. To je velká výhoda, protože především gdb je velmi mocným nástrojem, a to zejména ve chvíli, kdy je zapotřebí odladit zákeřné chyby při přístupu do paměti či při špatné koordinaci práce většího množství vláken (dokonce si troufnu tvrdit, že v tomto ohledu debugger gdb překonává většinu komerčních nástrojů).

Obrázek 2: Typické „sezení“ programátora využívajícího debugger gdb. Nastavení breakpointu příkazem b main, spuštění laděného programu příkazem r a krokování příkazem n (klávesa Enter zopakuje poslední zadaný příkaz, proto je n vlastně v tomto příkladu používán nadbytečně).

2. Princip propojení Vimu s debuggery

Před popisem pluginů Clewn a Pyclewn se nejprve seznámíme s možnostmi propojení textového editoru Vim s debuggery. Debugger gdb je možné ovládat několika způsoby. V nejjednodušším případě se z terminálu spustí příkaz gdb, který se interaktivně ovládá příkazy zapisovanými z klávesnice a výstup je prováděn na obrazovku terminálu. Tato možnost je ukázána na obrázku číslo 3.

Obrázek 3: Každý skutečný debugger by měl podporovat disassembling ze strojového kódu popř. z bajtkódu do čitelné podoby (jazyka symbolických instrukcí).

Taktéž je možné použít nějakou nadstavbu nad gdb, například aplikaci nazvanou gdbtui, která je taktéž ovládána z terminálu, ale díky použití knihovny curses či ncurses je možné využít celoobrazovkový výstup a přiblížit se tak možnostem debuggerů s grafickým uživatelským rozhraním. gdbtui je sice zajímavá aplikace, ale kvůli použití klávesových zkratek známých z Emacsu pravděpodobně nebude skalním uživatelům textového editoru Vim příliš vyhovovat :-) (nicméně za odzkoušení určitě stojí). Další možnost spočívá v komunikaci s běžícím debuggerem s využitím protokolu, který je známý a poměrně dobře popsaný. Mohou ho používat různé nástroje, včetně grafických nadstaveb nad gdb.

Obrázek 4: Aplikace gdbtui nabízí „alternativní“ celoobrazovkové ovládání debuggeru.

V pluginu Pyclewn je použita právě tato možnost – debugger se spustí jako samostatný proces, který po své inicializaci otevře port, na němž naslouchá příkazům posílaným z Vimu. Mimochodem – tento způsob práce s debuggerem lze použít i pro ladění aplikace na vzdáleném počítači, popř. na nějaké vývojové desce – Raspberry PI atd. To je v mnoha případech poměrně výhodné, protože zmíněný vzdálený počítač či vývojová deska vůbec nemusí být vybavena klávesnicí a displejem. Pokud vás toto téma zajímá, podrobnosti o různých možnostech použití gdb jsou dostupné na stránkách http://davis.lbl.gov/Manu­als/GDB/gdb17.html a http://kegel.com/linux/gdbser­ver.html, popř. se lze podívat na manuálovou stránku příkazu gdbserver.

Obrázek 5: Aplikace gdbtui nabízí „alternativní“ celoobrazovkové ovládání debuggeru.

3. Funkce Vimu, které jsou používané pluginy spolupracujícími s debuggery

Textový editor Vim ve skutečnosti usnadňuje práci všem tvůrcům pluginů, které mají komunikovat s debuggery, protože jim nabízí tzv. Vim NetBeans Protocol. Název této technologie vychází z toho, že se původně jednalo o rozhraní používané pluginem nazvaným NetBeans pro komunikaci Vimu se známým integrovaným vývojovým prostředím NetBeans. Tento plugin již není vyvíjen (pravděpodobně proto, že se v NetBeans již nedá nastavit integrace s externím editorem – to jsem ale netestoval), ovšem samotný Vim NetBeans Protocol se dobře ujal, je podporován a taktéž používán mnoha dalšími pluginy, a to nikoli pro komunikaci s IDE NetBeans, ale právě při ovládání debuggerů. Ostatně přímo v nápovědě Vimu jsou některé pluginy, které tento protokol používají, vypsány: VimIntegration, Agide, Clewn, Pyclewn, VimPlugin, PIDA a VimWrapper. Co vlastně Vim NetBeans Protocol tvůrcům pluginů nabízí? Především se jedná o podporu oboustranné komunikace, kdy debugger může Vimu poslat zprávu o tom, že se má překreslit obsah nějakého okna (například okna s výpisem sledovaných proměnných), Vim naopak může poslat příkaz debuggeru atd. Bližší informace o této zajímavé a užitečné technologii lze nalézt přímo ve Vimu zadáním příkazu:

:help netbeans

Obrázek 6: Bez podpory této technologie (viz červený obdélník) nebudou mnohé pluginy pracovat korektně! To se týká i dnes popisovaných pluginů.

Další vlastností textového editoru Vim, která se v pluginech pro komunikaci s debuggery (ale nejenom s nimi) používá, je podpora takzvaných značek (signs). Pokud je Vim spuštěný v terminálu, jedná se o textové značky typicky zobrazované na levém okraji okna; tyto značky mohou například ukazovat na právě laděný příkaz, na breakpoint atd. V případě použití Vimu s grafickým uživatelským rozhraním je možné namísto textové značky použít i ikonu, na terminálu se uživatelé musí spokojit s případným barevným vyznačením řádku se značkou. Bližší informace o této technolgoii lze opět nalézt přímo ve Vimu, a to zadáním příkazu:

:help signs

Značky ve skriptech lze vytvářet relativně snadno. Následující dva řádky slouží k definici nové značky nazvané mojeznacka. Tato značka bude zobrazena jako dvě hvězdičky vyobrazené stejnými barvami popředí a pozadí, jaké jsou deklarovány pro lexikální kategorii Error. Samotná značka bude umístěna na levém okraji aktivního okna, konkrétně na sedmém řádku. Symbol 3 reprezentuje identifikátor značky, na nějž je možné se později odkazovat:

:sign define mojeznacka text=** texthl=Error
:sign place 3 line=7 name=mojeznacka file=__jmeno_otevreneho_souboru__

Obrázek 7: Takto vypadá značka vytvořená příkazy uvedenými před tímto obrázkem.

4. Plugin Clewn

První plugin, o němž se dnes zmíníme, se jmenuje Clewn. Podle očekávání se jedná o přídavný modul sloužící pro propojení textového editoru Vim s debuggerem, konkrétně s debuggerem gdb (https://www.gnu.org/software/gdb/). Tento plugin umožňuje volat většinu základních příkazů gdb, ovšem způsob kooperace mezi Vimem a gdb, který je v pluginu Clewn implementován, nemusí všem uživatelům vyhovovat – v tomto případě je dobré se podívat na možnosti pluginu Pyclewn popsaného v sedmé kapitole (nechci tvrdit, že Pyclewn je ve všech ohledech lepší, ovšem jeho instalace i ovládání je podle mého názoru jednodušší). Jak vlastně Clewn funguje? Tento plugin obsahuje kromě části psané ve VimScriptu i binární (nativní) část, konkrétně spustitelný program nazvaný clewn, který je nainstalován v adresáři dostupném přes PATH (v případě lokální instalace se většinou jedná o adresář ~/bin). Tento binární program po svém spuštění provede inicializaci debuggeru a následně spuštění Gvimu, tj. Vimu s GUI. Tyto dvě aplikace pak spolu mohou přes clewn komunikovat.

Obrázek 8: Připojení Vimu k debuggeru a nastavení breakpointu na začátek funkce main.

5. Instalace pluginu Clewn

Podívejme se nyní na instalaci pluginu Clewn, kterou lze rozdělit na dvě části – překlad binární utility a instalaci skriptu. Pro překlad binární utility je nutné mít v systému nainstalovány knihovny ncurses-devel a libreadline-devel. Na Fedoře je instalace obou zmíněných knihoven jednoduchá:

sudo yum install ncurses-devel
sudo yum install libreadline-devel

Následně stáhneme zdrojové kódy pluginu:

wget -O clewn.tar.gz "http://downloads.sourceforge.net/project/clewn/clewn/clewn-1.15/clewn-1.15.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fclewn%2Ffiles%2FOldFiles%2F&ts=1432050333&use_mirror=netcologne"

Ve třetím kroku se rozbalí stažený tarball a provede se známá magická trojice příkazů configure+make+install. Pro instalaci pluginu pro všechny uživatele je nutné mít práva roota:

tar xvfz clewn.tar.gz
cd clewn-1.15/
./configure
make
make install

Osobně však pro první pokusy doporučuji lokální instalaci pro jednoho uživatele:

tar xvfz clewn.tar.gz
cd clewn-1.15/
vimdir=$HOME/.vim  ./configure  --prefix=$HOME
make
make install

V tomto případě by se v adresáři ~/bin měl objevit nový spustitelný soubor clewn, což lze snadno ověřit:

ls -l ~/bin
total 400
-rwxr-xr-x. 1 tester tester    474 Jan 23 17:58 asciidoctor
-rwxr-xr-x. 1 tester tester    479 Jan 23 17:58 asciidoctor-safe
-rwxr-xr-x. 1 tester tester 400234 May 19 17:54 clewn

Současně se (alespoň doufejme) nainstaluje i vimovská část pluginu.

Obrázek 9: Krokování programu z Vimu.

6. Použití pluginu Clewn

Ukažme si nyní použití pluginu Clewn při ladění aplikace test.c. Nejprve je nutné přeložit zdrojový kód a přitom překladači přikázat, že se mají do výsledného spustitelného souboru přidat i ladicí informace. V případě programovacího jazyka C je to jednoduché:

gcc -O0 -g -o test test.c

Výsledkem dokončení překladu bude v tomto případě binární spustitelný soubor nazvaný test. Následuje spuštění utility clewn:

clewn -d -ga test

Tento příkaz by měl spustit a inicializovat debugger gdb a současně v novém okně spustit Gvim. Ovládání debuggeru lze provádět přímo z Vimu, v němž se otevře příslušný zdrojový kód (test.c). K dispozici jsou následující klávesové zkratky:

Klávesová zkratka Význam
R spuštění programu
Q ukončení ladění
   
Ctrl+B nastavení breakpointu na řádku s kurzorem
Ctrl+E vymazání breakpointů na řádku s kurzorem
B zobrazení informací o breakpointech
   
S jeden krok s vykonáním celé volané funkce (step)
I jeden krok s případným vstupem do volané funkce (step into)
C pokračovat ve vykonávání programu (continue)
   
L zobrazení informací o lokálních proměnných
A zobrazení informací o argumentech
W zobrazení informací, v jakém bodě se program nachází (backtrace)

Ve skutečnosti existuje ještě více klávesových zkratek, naleznete je v nápovědě k pluginu.

Obrázek 10: Zobrazení nápovědy k pluginu a výpis lokálních proměnných (v debuggeru).

7. Plugin Pyclewn

Druhým pluginem určeným pro propojení textového editoru Vim s debuggerem je přídavný modul nazvaný Pyclewn. Tento plugin umožňuje práci s debuggerem gdb (použijí ho céčkači, vývojáři pracující v C++, Fortranu atd. atd.) a taktéž s debuggerem pdb používaném při ladění aplikací naprogramovaných v Pythonu. Tento plugin nepotřebuje pro svoji práci Gvim spuštěný s GUI, veškerá činnost se odehrává v jediném terminálu a navíc se tento plugin spouští přímo z Vimu (u výše popsaného nástroje to bylo naopak – nejprve se spustil clewn, který následně otevřel nové okno s Gvimem).

Obrázek 11: Integrovaná nápověda k pluginu Pyclewn.

Samotné uživatelské prostředí připravené tímto pluginem (viz přiložené screenshoty) je snadno pochopitelné – jedno okno se používá pro zobrazení konzole debuggeru, další menší okna slouží pro výpis nastavených breakpointů, sledovaných proměnných atd. a poslední část plochy Vimu ukazuje laděný zdrojový kód, v němž jsou s využitím značek zvýrazněny breakpointy, zakázané breakpointy a ve chvíli krokování i právě prováděný prováděný řádek. Plugin mapuje i klávesové zkratky, další zkratky je samozřejmě možné v případě potřeby přidat.

Obrázek 12: Připojování pluginu Pyclewn k debuggeru.

8. Instalace pluginu Pyclewn

Instalace pluginu Pyclewn je poněkud jednodušší, než tomu bylo u dříve popsaného pluginu Clewn, protože při instalaci lze použít známý správce Pythonovských balíčků pip (https://pip.pypa.io/en/stable/. Pokud nemáte pip nainstalovaný ve svém systému, můžete použít instrukce dostupné na stránce https://pip.pypa.io/en/sta­ble/installing.html, kde je celá instalace podrobně popsána. Následně je nutné nainstalovat balíček python-dev. Na operačních systémech založených na RPM lze použít příkaz:

sudo yum install python-dev

Na systémech založených na .deb balíčcích pak příkaz:

sudo apt-get install python-dev

Dále již následuje vlastní instalace binární části pluginu Pyclewn:

pip install --user pyclewn

Posledním krokem je instalace Vimovského pluginu, který je dostupný ve formě takzvaného vim-ballu:

python -c "import clewn; clewn.get_vimball()"
vim -S pyclewn-2.1.vmb

Po zadání posledního příkazu se spustí Vim, který sám dokončí instalaci, protože vim-ball obsahuje i instalační skript:

"pyclewn-2.1.vmb" 1900L, 70672C
Vimball Archive
extracted <autoload/pyclewn/start.vim>: 224 lines
wrote /home/tester/.vim/autoload/pyclewn/start.vim
extracted <autoload/pyclewn/buffers.vim>: 241 lines
wrote /home/tester/.vim/autoload/pyclewn/buffers.vim
extracted <autoload/pyclewn/version.vim>: 4 lines
wrote /home/tester/.vim/autoload/pyclewn/version.vim
extracted <doc/pyclewn.txt>: 1243 lines
wrote /home/tester/.vim/doc/pyclewn.txt
extracted <plugin/pyclewn.vim>: 11 lines
wrote /home/tester/.vim/plugin/pyclewn.vim
extracted <syntax/clewn_variables.vim>: 25 lines
wrote /home/tester/.vim/syntax/clewn_variables.vim
extracted <macros/.pyclewn_keys.gdb>: 49 lines
wrote /home/tester/.vim/macros/.pyclewn_keys.gdb
extracted <macros/.pyclewn_keys.pdb>: 44 lines
wrote /home/tester/.vim/macros/.pyclewn_keys.pdb
extracted <macros/.pyclewn_keys.simple>: 38 lines
wrote /home/tester/.vim/macros/.pyclewn_keys.simple
did helptags

Obrázek 13: Ladění programu napsaného v céčku: nastavení breakpointů, sledování proměnných atd. Povšimněte si, že tento plugin bez problémů pracuje i v terminálu, ovšem je zapotřebí použít větší okno (zde 80×25 znaků je nedostatečných, což je ovšem pochopitelné)

Výsledná struktura adresáře ~/.vim může vypadat následovně. Povšimněte si, že kromě pluginu Pyclewn jsou nainstalovány i další pluginy, především již popsané pluginy Pathogen, vim-diff, vim-slime a matchit:

.
├── autoload
│   ├── pathogen.vim
│   └── pyclewn
│       ├── buffers.vim
│       ├── start.vim
│       └── version.vim
├── bundle
│   ├── vim-dirdiff
│   │   ├── doc
│   │   │   ├── dirdiff.txt
│   │   │   └── tags
│   │   ├── plugin
│   │   │   └── dirdiff.vim
│   │   ├── README.md
│   │   └── screenshot.png
│   └── vim-slime
│       ├── doc
│       │   ├── tags
│       │   └── vim-slime.txt
│       ├── ftplugin
│       │   ├── coffee
│       │   │   └── slime.vim
│       │   ├── fsharp
│       │   │   └── slime.vim
│       │   ├── haskell
│       │   │   └── slime.vim
│       │   ├── lhaskell
│       │   │   └── slime.vim -> ../haskell/slime.vim
│       │   ├── ocaml
│       │   │   └── slime.vim
│       │   ├── python
│       │   │   └── slime.vim
│       │   └── scala
│       │       └── slime.vim
│       ├── LICENSE.txt
│       ├── plugin
│       │   └── slime.vim
│       └── README.md
├── doc
│   ├── matchit.txt
│   ├── pyclewn.txt
│   └── tags
├── macros
├── plugin
│   ├── matchit.vim
│   └── pyclewn.vim
├── spell
│   ├── cs.iso-8859-2.spl
│   ├── cs.utf-8.add
│   ├── cs.utf-8.add.spl
│   └── cs.utf-8.spl
└── syntax
    └── clewn_variables.vim

Obrázek 14: Ladění programu napsaného v céčku: ukončení laděného programu. V horním okně můžeme vidět rozhraní debuggeru gdb, v prostředním okně breakpointy, sledované proměnné atd., ve spodním okně pak laděný zdrojový kód.

9. Použití pluginu Pyclewn

V případě, že se plugin Pyclewn používá pro ladění s využitím debuggeru gdb, stačí přeložit příslušný zdrojový kód a přitom překladači přikázat, že se mají do výsledného spustitelného souboru přidat i ladicí informace. V případě programovacího jazyka C je to jednoduché:

gcc -O0 -g -o test test.c

Výsledkem dokončení překladu bude v tomto případě binární spustitelný soubor nazvaný test (pokud máte správně nastavené cesty, nedojde ke kolizi s existujícím příkazem stejného jména :-). Následně se spustí Vim, v němž se otevře zdrojový soubor:

vim test.c

Ve Vimu se příkazem:

:pyclewn gdb

spustí debugger a plugin se k debuggeru připojí. Plugin následně rozdělí okno editoru na pět podoken (viz screenshoty) a v horním podokně zobrazí konzoli debuggeru. Následně se musí do debuggeru nahrát laděný binární soubor:

:Cfile test

Obrázek 15: Ladění programu napsaného v Pythonu: připojení k debuggeru.

Nyní by již vše mělo být připraveno na otestování funkcí nabízených pluginem Pyclewn. Všechny příkazy začínají velkým písmenem C, za nímž následuje jméno příkazu, který (většinou) odpovídá stejnojmennému příkazu v gdb. Podívejme se nyní na několik nejpoužívanějších příkazů:

Nastavení breakpointu na začátek funkce main (breakpoint se objeví v příslušném podokně – prvním podokně ve druhé sekci):

:Cbreak main

Spuštění laděného programu:

:Crun

Laděný program se (podle očekávání) zastaví na prvním příkazu ve funkci main, protože právě zde jsme nastavili breakpoint. Pro provedení tohoto příkazu – jednoho kroku – poslouží příkaz:

:Cstep

Nastavit lze samozřejmě i watchpointy hlídající přístup k proměnné či k několika proměnným (informace o nastavených watchpointech se opět zapíše do pomocného informačního podokna):

:Cwatch x,y,answer

Pro zobrazení obsahu proměnné či proměnných poslouží příkaz (otevře se další podokno se seznamem a aktuálním obsahem všech sledovaných proměnných, změněná proměnná je v každém kroku vysvícena, což je velmi užitečné):

:Cdbgvar x

Popř. je možné sledovat i výrazy:

widgety

:Cdbgvar x*10

Další možnosti použití tohoto pluginu, včetně možnosti namapování klávesových zkratek, si v případě čtenářského zájmu popíšeme příště.

Obrázek 16: Ladění programu napsaného v Pythonu: krokování a zobrazení nápovědy k pluginu Pyclewn.

10. 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. Užitečné skripty a pluginy pro textový editor Vim (7.část)
    http://www.root.cz/clanky/uzitecne-skripty-a-pluginy-pro-textovy-editor-vim-7-cast/
  8. Tvorba vlastního pluginu pro textový editor Vim
    http://www.root.cz/clanky/tvorba-vlastniho-pluginu-pro-textovy-editor-vim/

11. Odkazy na Internetu

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

Světový pohár v přímém přenosu na ČT

DigiZone.cz: Digi2GO u Alza.cz a s balíčkem Sport zdarma

Digi2GO u Alza.cz a s balíčkem Sport zdarma

Lupa.cz: Patička e-mailu závazná jako vlastnoruční podpis?

Patička e-mailu závazná jako vlastnoruční podpis?

Podnikatel.cz: Babišovi se nedá věřit, stěžovali si hospodští

Babišovi se nedá věřit, stěžovali si hospodští

Vitalia.cz: dTest odhalil ten nejlepší kečup

dTest odhalil ten nejlepší kečup

Vitalia.cz: Když všichni seli řepku, on vsadil na dýně

Když všichni seli řepku, on vsadil na dýně

Vitalia.cz: Jak Ondra o astma přišel

Jak Ondra o astma přišel

Podnikatel.cz: Takhle se prodávají mražené potraviny

Takhle se prodávají mražené potraviny

Lupa.cz: Aukro.cz mění majitele. Vrací se do českých rukou

Aukro.cz mění majitele. Vrací se do českých rukou

Lupa.cz: Další Češi si nechali vložit do těla čip

Další Češi si nechali vložit do těla čip

Podnikatel.cz: Udělali jsme velkou chybu, napsal Čupr

Udělali jsme velkou chybu, napsal Čupr

Vitalia.cz: Jsou vegani a vyrábějí nemléko

Jsou vegani a vyrábějí nemléko

120na80.cz: Hrbatá prsa aneb mýty o implantátech

Hrbatá prsa aneb mýty o implantátech

DigiZone.cz: Wimbledon na Nova Sport až do 2019

Wimbledon na Nova Sport až do 2019

Podnikatel.cz: Dva měsíce na EET. Budou stačit?

Dva měsíce na EET. Budou stačit?

Podnikatel.cz: Instalatér, malíř a elektrikář. "Vymřou"?

Instalatér, malíř a elektrikář. "Vymřou"?

Vitalia.cz: Voda z Vltavy před a po úpravě na pitnou

Voda z Vltavy před a po úpravě na pitnou

Vitalia.cz: 5 důvodů, proč jet na výlov rybníka

5 důvodů, proč jet na výlov rybníka

DigiZone.cz: Parlamentní listy: kde končí PR...

Parlamentní listy: kde končí PR...

Vitalia.cz: Inspekce našla nelegální sklad v SAPĚ. Zase

Inspekce našla nelegální sklad v SAPĚ. Zase