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í
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 <, > a &, samozřejmě za předpokladu, že je nastavena volba hlsearch:
:vmap <F12> :s-&-\&-ge<cr>gv:s-<-\<-ge<cr>gv:s->-\>-ge<cr>/\(<\)\\|\(>\)\\|\(&\)<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-&-\&-ge<cr>
" obnovení výběru (bloku) gv
" náhrada znaku < :s-<-\<-ge<cr>
" obnovení výběru (bloku) gv
" náhrada znaku > :s->-\>-ge<cr>
" vyhledání všech výskytů HTML entit /\(<\) \\| " or \(>\) \\| " or \(&\) <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 x a X, 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 x a X:
: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í.
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
- 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 - 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/ - Exuberant ctags
http://ctags.sourceforge.net/ - xxd (man page)
http://www.linux-tutorial.info/modules.php?name=ManPage&sec=1&manpage=xxd - vim (man page)
http://www.linux-tutorial.info/modules.php?name=ManPage&sec=1&manpage=vim - ctags (man page)
http://www.linux-tutorial.info/modules.php?name=ManPage&sec=1&manpage=ctags - cscope (man page)
http://www.linux-tutorial.info/modules.php?name=ManPage&sec=1&manpage=cscope - 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/ - Novinky ve VIM 7: Úvodní část – speller
http://www.root.cz/vim-sedm-prvni-cast/ - Novinky ve VIM 7: Skriptovací jazyk
http://www.root.cz/vim-sedm-druha-cast/ - vim2elvis: Přednosti a nedostaky Elvise v porovnání s Vimem
http://www.root.cz/clanky/vim2elvis-1/ - vim2elvis: Shodné znaky mezi Elvisem a Vimem, nastaveníeditoru
http://www.root.cz/clanky/vim2elvis-2/ - Nej… VIM pluginy (1)
http://www.root.cz/clanky/nej-vim-pluginy/ - 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 - Scroll Lock (Necyklopedie)
http://necyklopedie.wikia.com/wiki/Scroll_lock - Caps Lock (Necyklopedie)
http://necyklopedie.wikia.com/wiki/Caps_Lock - Avoid the escape key
http://vim.wikia.com/wiki/Avoid_the_escape_key - Map caps lock to escape in XWindows
http://vim.wikia.com/wiki/VimTip166