Textový editor Vim jako IDE (10.část: různé tipy a triky)

8. 9. 2011
Doba čtení: 17 minut

Sdílet

V desáté části seriálu o použití editoru Vim ve funkci vývojového prostředí si popíšeme další tipy a triky, které je možné v editoru provádět. Ukážeme si především změny barvy a tvaru textového kurzoru i možnosti konfigurace myši. Taktéž si namapujeme různé operace či makra na klávesy či kombinace kláves.

Obsah

1. Nastavení tvaru a barvy textového kurzoru při práci Vimu s podporou GUI

2. Možnosti volby „guicursor“ – volba režimu, pro nějž se má kurzor nastavit

3. Možnosti volby „guicursor“ – volba barvy, tvaru a blikání kurzoru

4. Řádkový a sloupcový kurzor v GUI i terminálu

5. Změna tvaru kurzoru myši a automatické skrývání kurzoru myši při editaci

6. Mapování funkcí/příkazů na různé klávesy a jejich kombinace

7. Ukázka využití mapování příkazů

8. Problémy s rekurzivním mapováním, zrušení mapování

9. Odkazy na Internetu

1. Nastavení tvaru a barvy textového kurzoru při práci Vimu s podporou GUI

Prvním trikem, který si v dnešním článku ukážeme, je konfigurace tvaru, barvy i chování textového kurzoru v případě, že je editor Vim spuštěný s podporou grafického uživatelského rozhraní, tj. tehdy, když je použita volba vim -g, popř. je použit příkaz gvim. Na tomto místě je vhodné zdůraznit, že dále uvedené příkazy nebudou plně funkční v případě, že je textový editor Vim spuštěn v emulátoru terminálu, či dokonce na fyzickém terminálu (v Linuxu je z X Window Systemu přístupný například přes klávesovou kombinaci Ctrl+Alt+F1), protože způsob zobrazení kurzoru je v takových případech závislý buď na nastavení emulátoru terminálu nebo na konfiguraci hardware terminálu fyzického (jednou z výjimek je DOS a konzole ve Windows, kde lze částečně určit tvar kurzoru). Všechny vlastnosti textového kurzoru (při spuštění v GUI) jsou určeny konfiguračním parametrem guicursor a taktéž příkazem highlight, kterým se nastavují barvy kurzoru v jednotlivých režimech.

Obrázek 1: Ukázka nastavení tvaru a barvy textového kurzoru pro Vim spuštěný s podporou grafického uživatelského rozhraní. Kurzor v normálním režimu má tvar plného bloku a ve všech režimech je vypnuto jeho blikání.

Vzhledem k tomu, že hodnotou konfiguračního parametru guicursor může být i poměrně komplikovaný řetězec, ukážeme si napřed příklad z praxe:

:" výpis aktuálně nastavené hodnoty konfiguračního parametru guicursor
:set guicursor?
n-c-v:block-Cursor2,i-ci:block-Cursor3,r-cr:block-Cursor,a:blinkon0,v:ver20-Cursor2

Z vypsané hodnoty konfiguračního parametru guicursor můžeme vyčíst, že se jedná (podobně jako u některých parametrů popsaných v předchozích částech tohoto seriálu) o seznam dvojic oddělených čárkou, přičemž každá dvojice je složena ze specifikace režimu, dvojtečky a hodnoty, kterou je určen tvar kurzoru, jeho barva (resp. skupina obarvená příkazem highlight) a taktéž režim blikání kurzoru. Výše uvedený konfigurační řetězec se tedy rozpadá do několika skupin:

Skupina Význam (režim) Význam (vlastnost kurzoru)
n-c-v:block-Cursor2 normální, příkazový a výběrový režim blokový kurzor, barva určena pomocí highlight Cursor2
i-ci:block-Cursor3 vkládací režim blokový kurzor, barva určena pomocí highlight Cursor3
r-cr:hor25-Cursor přepisovací režim vodorovný kurzor _, barva určena pomocí highlight Cursor
a:blinkon0 platné pro všechny režimy vypnutí blikání kurzoru
v:ver20-Cursor2 platné jen pro výběrový režim svislý kurzor |, barva určena pomocí highlight Cursor2

Obrázek 2: Změna tvaru, barvy a blikání textového kurzoru pro Vim spuštěný s podporou grafického uživatelského rozhraní. Kurzor pro normální režim byl změněn na vodorovnou zelenou čárku o tloušťce odpovídající jedné desetině výšky znaků.

Vidíme, že pro různé režimy textového editoru Vim je možné nastavit různé tvary kurzoru, jejich barvy i způsob blikání (či blikání zcela vypnout, osobně mi například jakýkoli animovaný prvek na obrazovce spíše vadí). To je zajisté výhodné, protože textový kurzor se vždy nachází v místě, na které se soustředí uživatel, tudíž lze jeho tvarem a barvou velmi jednoduše signalizovat aktuální režim Vimu, aniž by bylo nutné se dívat na pravítko či stavovou řádku, kde je možné mít režim taktéž zobrazený; viz též následující parametry:

:set (no)showmode
:set (no)ruler
:set statusline=...
:set rulerformat=...

2. Možnosti volby „guicursor“ – volba režimu, pro nějž se má kurzor nastavit

Podívejme se nyní podrobněji na možnosti konfiguračního parametru guicursor. Začněme specifikátorem režimu. Může se jednat o libovolnou kombinaci následujících kódů, které jsou od sebe odděleny pomlčkou, takže například řetězec n-v vybírá normální a současně i vizuální režim:

Kód režimu Význam zkratky Popis
n normal normální režim
o operator normální režim ve chvíli očekávání operátoru (posun kurzoru), běžně se odvozuje od vlastností nastavených pro normální režim
i insert vkládací režim (příkazy a, A, i, I, o, O, c apod.)
r replace přepisovací režim (příkazy r a R)
c command příkazový režim (barva kurzoru umístěného za posledním zapsaným znakem)
ci command příkazový režim při nastavení vkládání (přepíná se klávesou INSERT)
cr command příkazový režim při nastavení přepisování (přepíná se klávesou INSERT)
v visual vizuální (výběrový) režim
ve visual exclusive vizuální (výběrový) režim při nastavení exclusive (poslední znak není zahrnut do výběru)
sm showmatch zobrazení párového znaku ve vkládacím režimu (kurzor se na chvíli může přesunout na párovou závorku atd.)
a all všechny režimy

Obrázek 3: Pokud je Vim spuštěn v terminálu (tj. bez podpory GUI), není možné jeho kurzor žádným významnějším způsobem konfigurovat přímo z Vimu – pro tuto činnost je nutné použít konfiguraci terminálu, což ovšem znamená, že například není možné signalizovat přepnutí režimu prostou změnou barvy kurzoru.

3. Možnosti volby „guicursor“ – volba barvy, tvaru a blikání kurzoru

Za kódem režimu či režimů se zapisuje dvojtečka a za ní další parametry, které jsou od sebe oddělené pomlčkou:

Parametr Význam
block blokový kurzor (kurzor má tvar obdélníku s plochou přesně o velikosti jednoho znaku)
horXX kurzor má tvar horizontální čáry o šířce XX procent výšky znaků (nenastavujte více než 100, jinak se kurzor nebude dobře překreslovat)
verXX kurzor má tvar vertikální čáry o šířce XX procent šířky znaků (nenastavujte více než 100, jinak se kurzor nebude dobře překreslovat)
blinkonNN interval, kdy je kurzor viditelný, zadaný v milisekundách (0=kurzor nebliká)
blinkoffNN interval, kdy je kurzor viditelný, zadaný v milisekundách
blinkwaitNN interval, kdy je kurzor po přesunu zobrazený bez blikání, zadaný v milisekundách
jiný text jméno skupiny specifikované příkazem highlight

Obrázek 4: Příklad špatně překresleného okna v případě, že je použita volba
:set guicursor=a:ver200,
tj. šířka textového kurzoru je nastavena na dvojnásobek (200 %) šířky znaků.

Použití jména skupiny pro změnu barvy kurzoru je jednoduché. Následující sekvence příkazů například nastaví barvu kurzoru pro všechny režimy na čistě žlutou, znaky pod kurzorem budou zobrazeny tmavě červenou barvou. Kurzor má tvar horizontální čárky, která má tloušťku jedné čtvrtiny výšky znaků (přesněji řečeno jedné čtvrtiny výšky znaků plus hodnoty linespace popsané v první části tohoto seriálu, tato hodnota je však v naprosté většině případů nastavená na nulu):

:set guicursor=a:hor25-myCursorStyle
:highlight myCursorStyle guibg=yellow guifg=darkred

Teoreticky ji sice možné definovat ve skupině myCursorStyle i vlastnosti pro textový terminál, například:

:set guicursor=a:hor25-myCursorStyle
:highlight myCursorStyle guibg=yellow guifg=darkred ctermfg=red ctermbg=blue cterm=underline

Sami se však můžete přesvědčit, že se tvar kurzoru ani styl písma pod ním nebude měnit.

Následující příkaz nastaví blikání kurzoru takovým způsobem, že po poslední operaci je kurzor trvale zobrazen půl sekundy a posléze začne blikat s frekvencí přibližně 5 Hz (se střídou 1:1):

:set guicursor=a:block-blinkwait500-blinkon100-blinkoff100-myCursorColor

Obrázek 5: Tvar a barva textového kurzoru při použití volby
:set guicursor=a:block-myCursorStyle
v případě, že je pozadí stylu myCursorStyle nastaveno na čistě žlutou barvu.

4. Řádkový a sloupcový kurzor v GUI i terminálu

Vraťme se ještě na chvíli k problematice zvýraznění místa, v němž se nachází textový kurzor. Již ve čtvrté části tohoto seriálu jsme si řekli, že kromě samotného textového kurzoru je možné v sedmé verzi Vimu zvýraznit i řádek, na kterém se textový kurzor nachází. Toto nastavení je platné jak pro Vim pracující v grafickém uživatelském rozhraní, tak i pro Vim spuštěný v textovém režimu, tj. na konzoli či v emulátoru terminálu. Nejprve je nutné povolit zobrazení „řádkového kurzoru“ a posléze lze nastavit jeho barvu pro GUI i terminál, například následujícím způsobem:

:set cursorline
:highlight CursorLine guibg=#2d2d2d ctermbg=blue cterm=NONE

Pokud emulátor terminálu/fyzický terminál nedokáže korektně pracovat s barvami, je možné celý řádek alespoň zvýraznit tučným písmem, podtrhnout ho, nebo zobrazit inverzně (záleží ovšem jen na konfiguraci a schopnostech terminálu, jak řádkový kurzor ve skutečnosti zobrazí):

:set cursorline
:highlight CursorLine cterm=bold term=bold

nebo:

:set cursorline
:highlight CursorLine cterm=inverse term=inverse

popř.:

:set cursorline
:highlight CursorLine cterm=underline term=underline

Obrázek 6: Textový editor Vim spuštěný s grafickým uživatelským rozhraním se zvýrazněným „řádkovým“ kurzorem.

Podobným způsobem je možné zvýraznit sloupec, na kterém se textový kurzor nachází, viz též následující příklad:

:set cursorcolumn
:highlight CursorColumn guibg=#2d2d2d ctermbg=darkred cterm=NONE

Výše uvedené příkazy nemají žádný vliv na tvar ani barvu samotného textového kurzoru! Taktéž je dobré vědět, že výkon Vimu může být při zobrazení řádkového a textového kurzoru nižší, a to zejména při práci na vzdáleném počítači, protože se počet překreslených znaků (textový režim) či pixelů (grafický režim) dosti podstatným způsobem zvyšuje při každém pohybu kurzoru. Funkce řádkového i sloupcového kurzoru taktéž nemusí pracovat k plné spokojenosti v případě, že se editují delší textové řádky rozdělené na obrazovce pomocí volby :set wrap. V tomto případě totiž Vim zobrazuje řádkový kurzor na celém logickém řádku, který může přesáhnout přes více obrazovkových řádků.

Obrázek 7: Textový editor Vim spuštěný s grafickým uživatelským rozhraním se zvýrazněným „řádkovým“ i „sloupcovým“ kurzorem.

5. Změna tvaru kurzoru myši a automatické skrývání kurzoru myši při editaci

V textovém editoru Vim spuštěném s podporou GUI (gvim, vim -g) je možné měnit tvar kurzoru myši v závislosti na tom, jaká operace je v daný okamžik prováděna. Jedná se tedy o podobnou funkci, jakou jsme si popsali v předchozích třech kapitolách u textového kurzoru. Tvar kurzoru myši se mění pomocí konfiguračního parametru:

:set mouseshape=

Hodnotou tohoto konfiguračního parametru je seznam dvojic obsahujících režim, v němž se editor může nacházet a tvar kurzoru myši pro tento režim. Mezi jménem režimu a tvarem kurzoru se zapisuje dvojtečka, jednotlivé dvojice jsou od sebe odděleny čárkou. Mezi režimy, pro něž je možné automaticky měnit tvar kurzoru myši, patří především:

Jméno režimu Význam
n normální režim
v režim vizuálního výběru
i vkládací režim (příkazy a, A, i, I, o, O, c apod.)
r přepisovací režim (příkazy r a R)
o normální režim ve chvíli, kdy očekává zadání pohybového příkazu (w,e,j atd.)

Obrázek 8: Textový editor Vim spuštěný v terminálu se zvýrazněným „řádkovým“ kurzorem.

V následující tabulce jsou vypsána jména těch tvarů kurzoru, které je možné použít jak v Unixu s běžícím X Window Systemem, tak i v operačním systému MS Windows:

Jméno tvaru Význam
arrow výchozí tvar kurzoru myši
blank neviditelný kurzor
beam kurzor ve tvaru I (používán běžně v editačních polích GUI)
updown vertikální šipka (v GUI běžně signalizuje změnu velikosti)
leftright horizontální šipka (v GUI běžně signalizuje změnu velikosti)
up-arrow šipka směřující nahoru
busy většinou animovaný kurzor používaný při déletrvajících operacích
no kurzor ve tvaru X (zakázaná operace…)

Následuje ukázka změny tvaru kurzoru myši pro různé režimy pomocí parametru mouseshape:

:set mouseshape=i:beam,r:beam,n:arrow,o:no,v:leftright

což lze zkrátit na:

:set mouseshape=i-r:beam,n:arrow,o:no,v:leftright

Obrázek 9: Textový editor Vim spuštěný v terminálu se zvýrazněným „řádkovým“ i „sloupcovým“ kurzorem.

Další možností změny chování kurzoru myši je jeho automatické skrývání v případě, že jsou prováděny běžné editační operace z klávesnice, nebo je vytvářen nový text ve vkládacím režimu. Při těchto operacích není nutné myš vůbec používat, kurzor myši může naopak při práci s Vimem překážet, protože se nachází před textem. Náprava je v tomto případě velmi snadná – postačuje použít volbu:

:set mousehide

V případě, že je tato volba použita, je kurzor myši automaticky skryt při zápisu znaků z klávesnice. Kurzor se opět objeví při jakékoli manipulaci s myší, buď při jejím pohybu, nebo při stlačení libovolné kombinace tlačítek či scrollovacího kolečka. Jedná se o volbu globální, tj. je platná pro všechna podokna Vimu i všechny editované buffery. Vypnutí automatického skrývání kurzoru myši zařídí příkaz:

:set nomousehide

6. Mapování funkcí/příkazů na různé klávesy a jejich kombinace

Mezi jednu z nejužitečnějších vlastností textového editoru Vim patří i možnost mapování libovolných příkazů na prakticky libovolné sekvence kláves, a to navíc v závislosti na použitém režimu, ve kterém se v daný okamžik textový editor nachází. V předchozích devíti dílech tohoto seriálu jsme se s mapováním příkazů již několikrát setkali, takže si pouze v rychlosti ukážeme, jak lze vytvořit de facto nové příkazy v normálním režimu pomocí příkazu :map:

" uložení souboru při stisku klávesy F2
" (ukončující entita <cr> zajišťuje automatické spuštění
" příkazu bez nutnosti stlačovat Enter)
:map <F2> :w<cr>

" zavolání externího příkazu make při stisku klávesy F9
:map <F9> :!make<cr>

" kompilace právě editovaného souboru při stisku klávesy F7
:map <F7> :!gcc -c %<cr>

" posun jednoho řádku doleva či doprava pomocí
" klávesových zkratek Tab a Shift+Tab
map <Tab> >>
map <S-Tab> <<

Kromě vytváření nových příkazů je možné měnit i příkazy již existující. Například lze zjednodušit posun kurzoru nahoru a dolů v dlouhém textovém řádku (rozděleném na obrazovce na více řádků volbou :set wrap) pomocí těchto mapování:

:map k gk
:map j gj

Kromě mapování klávesových zkratek v normálním režimu je možné přiřazovat význam klávesám v režimu vkládacím příkazem :imap:

" pohyb kurzoru ve vkládacím režimu
" na začátek a konec řádku
:imap <C-A>      <C-O>g0
:imap <C-E>      <C-O>g$

" nové příkazy určené pro
" mazání znaků ve vkládacím režimu
:imap <C-Y>      <C-O>dd
:imap <C-Q>      <C-O>D
:imap <C-T>      <C-O>dw
:imap <C-G>      <Del>

Povšimněte si, že se v předchozích příkladech používá klávesová zkratka Ctrl+O zajišťující přepnutí z režimu vkládacího či přepisovacího do režimu normálního, ovšem pouze pro provedení jednoho příkazu. Tuto klávesovou zkratku je mimochodem nutné využívat v případě, že je Vim vyvolán příkazem:

evim

nebo:

vim -y

Při tomto způsobu spuštění se Vim snaží simulovat chování běžných nemodálních textových editorů (i když ve skutečnosti žádný editor NENÍ zcela nemodální).

7. Ukázka využití mapování příkazů

Příkazem :vmap lze vytvářet nové klávesové zkratky pro vizuální režim, tj. pro režim, v němž se vybírá textová oblast:

" posun vybraných řádků doleva či doprava pomocí
" klávesových zkratek Tab a Shift+Tab
" s obnovením výběru (výběr se tedy nezruší!)
:vmap <Tab> >gv
:vmap <S-Tab> <gv

To je v mnoha případech výhodné, protože uživatel si může vizuálně, s využitím myši i všech dostupných operátorů, nejdříve vybrat text a posléze na něj pomocí klávesové zkratky zavolat nějaký namapovaný příkaz.

Obrázek 10: První krok při transformaci céčkového zdrojového textu do HTML stránky – načtení příslušného textu pomocí příkazu :r

Nyní si ukážeme poněkud komplikovanější příklad – v textu vybraném ve vizuálním režimu se provede náhrada znaků &, < a > za příslušné HTML entity pomocí třech za sebou jdoucích substitucí. Volba e v příkazu :substitute zajistí, aby se provedly vždy všechny tři substituce i v případě, že daný znak nebyl nalezen, volba g slouží k tomu, aby došlo k substituci všech výskytů výše uvedených speciálních znaků. Příkaz gv je určen k obnovení vybraného bloku, protože po provedení každé substituce je označení textového bloku zrušeno. Poslední část mapování za znakem / zvýrazní všechny výskyty HTML entit &lt;, &gt; a &amp;, samozřejmě za předpokladu, že je nastavena volba hlsearch:

:vmap <F12> :s-&-\&amp;-ge<cr>gv:s-<-\&lt;-ge<cr>gv:s->-\&gt;-ge<cr>/\(&lt;\)\\|\(&gt;\)\\|\(&amp;\)<cr>

Obrázek 11: Druhý krok při transformaci céčkového zdrojového textu do HTML stránky – označení textu příkazem v (visual) nebo lépe V (linewise visual).

Příkaz lze pro lepší pochopení rozepsat:

" náhrada znaku & musí být první
:s-&-\&amp;-ge<cr>
" obnovení výběru (bloku)
gv
" náhrada znaku <
:s-<-\&lt;-ge<cr>
" obnovení výběru (bloku)
gv
" náhrada znaku >
:s->-\&gt;-ge<cr>
" vyhledání všech výskytů HTML entit
/\(&lt;\)
\\|             " or
\(&gt;\)
\\|             " or
\(&amp;\)
<cr>

Obrázek 12: Třetí krok při transformaci céčkového zdrojového textu do HTML stránky – zavolání sekvence příkazů namapovaných na klávesu F12. Všechny HTML entity jsou zvýrazněny pomocí vyhledání textu na základě regulárních výrazů.

8. Problémy s rekurzivním mapováním, zrušení mapování

Jedním z problémů, na které můžeme při použití mapování narazit, je takzvané rekurzivní mapování, které může nastat například v případě, že se budeme snažit vyměnit význam dvou příkazů v příkazovém režimu. Může se jednat o příkaz x (vymazání znaku, na kterém se nachází kurzor) a X (vymazání znaku před kurzorem). Potenciálně chybný způsob výměny významu těchto dvou příkazů by mohl vypadat následovně:

:map x X
:map X x

Obrázek 13: Samotným příkazem :map lze vypsat všechna aktuálně nastavená mapování, zde se jedná o rekurzivní mapování x->X a současně X->x.

Ovšem při vyvolání jakéhokoli z těchto příkazů bude neustále docházet k mapování mezi xX, které skončí až ve chvíli, kdy se Vim dopočítá hodnoty specifikované v konfiguračním parametru maxdepth (implicitně je tato volba nastavena na hodnotu 1000). Poté se vypíše chybové hlášení. Rekurzivní mapování je sice možné globálně vypnout pomocí konfiguračního parametru remap, tj. následujícím způsobem:

:set noremap

Pro zajištění dobré kompatibility s různými doplňkovými skripty se tento konfigurační parametr ponechává na implicitní volbě remap (tj. potenciálně může docházet k rekurzivnímu mapování). Ovšem rekurzi lze snadno vypnout přímo při specifikaci mapování, postačuje namísto příkazu map použít příkaz noremap. Následující sekvence příkazů skutečně korektně vymění význam xX:

:noremap x X
:noremap X x

Podobné příkazy existují i při specifikaci mapování pro další režimy:

Příkaz Význam
:nnoremap foo bar nerekurzivní mapování: pouze normální režim
:inoremap foo bar nerekurzivní mapování: vkládací režim
:vnoremap foo bar nerekurzivní mapování: vizuální (výběrový) režim

Obrázek 14: Při detekci rekurzivního mapování vypíše Vim chybové hlášení.

bitcoin_skoleni

V některých případech je taktéž nutné nějaké mapování zrušit. Pro tyto účely je možné použít některý z následujících příkazů:

Příkaz Význam
:unmap foo vymazání vybraného mapování pro normální a vizuální režim
:nunmap foo vymazání vybraného mapování pro normální režim
:vunmap foo vymazání vybraného mapování pro vizuální režim
:iunmap foo vymazání vybraného mapování pro vkládací režim

Zejména v souboru .vimrc je vhodné při počáteční inicializaci smazat všechna mapování platná pro vybraný režim. Uživatelé mají opět k dispozici několik příkazů pro tuto činnost, přičemž každý příkaz se používá pro vymazání všech mapování ve specifickém režimu:

Příkaz Význam
:mapclear vymazání všech mapování pro normální a vizuální režim
:nmapclear vymazání všech mapování pro normální režim
:vmapclear vymazání všech mapování pro vizuální režim
:imapclear vymazání všech mapování pro vkládací režim

9. Odkazy na Internetu

  1. X Selections, Cut Buffers, and Kill Rings
    http://www.jwz.org/doc/x-cut-and-paste.html
  2. Accessing the system clipboard
    http://vim.wikia.com/wiki/Ac­cessing_the_system_clipbo­ard
  3. snipMate : TextMate-style snippets for Vim
    http://www.vim.org/scripts/scrip­t.php?script_id=2540
  4. msanders / snipmate.vim
    https://github.com/msander­s/snipmate.vim
  5. snipMate.vim Introductory Screencast
    http://vimeo.com/3535418
  6. Clewn home page
    http://clewn.sourceforge.net/
  7. How to connect vim with gdb – using clewn
    http://chunhao.net/blog/how-to-connect-vim-with-gdb-using-clewn
  8. yavdb : Yet Another (Generic) Vim Debugger Integration
    http://www.vim.org/scripts/scrip­t.php?script_id=1954
  9. Vim home page
    http://www.vim.org/
  10. Exuberant ctags
    http://ctags.sourceforge.net/
  11. xxd (man page)
    http://www.linux-tutorial.info/modules.php?na­me=ManPage&sec=1&manpage=xxd
  12. vim (man page)
    http://www.linux-tutorial.info/modules.php?na­me=ManPage&sec=1&manpage=vim
  13. ctags (man page)
    http://www.linux-tutorial.info/modules.php?na­me=ManPage&sec=1&manpage=ctags
  14. cscope (man page)
    http://www.linux-tutorial.info/modules.php?na­me=ManPage&sec=1&manpage=csco­pe
  15. 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/
  16. c.vim : C/C++ IDE
    http://vim.sourceforge.net/scrip­ts/script.php?script_id=213
  17. c.vim : C/C++ IDE key mappings
    http://lug.fh-swf.de/vim/vim-c/c-hotkeys.pdf
  18. Základní základy editoru Vim
    http://www.root.cz/clanky/zakladni-zaklady-editoru-vim/
  19. Jak si přizpůsobit Vim
    http://www.root.cz/serialy/jak-si-prizpusobit-vim/
  20. Novinky ve VIM 7: Úvodní část – speller
    http://www.root.cz/vim-sedm-prvni-cast/
  21. Novinky ve VIM 7: Skriptovací jazyk
    http://www.root.cz/vim-sedm-druha-cast/
  22. vim2elvis: Přednosti a nedostaky Elvise v porovnání s Vimem
    http://www.root.cz/clanky/vim2elvis-1/
  23. vim2elvis: Shodné znaky mezi Elvisem a Vimem, nastaveníeditoru
    http://www.root.cz/clanky/vim2elvis-2/
  24. Nej… VIM pluginy (1)
    http://www.root.cz/clanky/nej-vim-pluginy/
  25. Taglist (plugin)
    http://www.vim.org/scripts/scrip­t.php?script_id=273
  26. The NERD tree: A tree explorer plugin for navigating the filesystem
    http://www.vim.org/scripts/scrip­t.php?script_id=1658
  27. 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
  28. snippetsEmu : An attempt to emulate TextMate's snippet expansion
    http://www.vim.org/scripts/scrip­t.php?script_id=1318
  29. Scroll Lock (Necyklopedie)
    http://necyklopedie.wikia­.com/wiki/Scroll_lock
  30. Caps Lock (Necyklopedie)
    http://necyklopedie.wikia­.com/wiki/Caps_Lock
  31. Avoid the escape key
    http://vim.wikia.com/wiki/A­void_the_escape_key
  32. Map caps lock to escape in XWindows
    http://vim.wikia.com/wiki/VimTip166

Autor článku

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