Obsah
1. Malé zopakování z minula: zobrazení informací na pravítku (ruler)
2. Specifikace formátu stavového řádku (status line)
3. Zjednodušení zápisu dlouhého formátovacího řetězce při konfiguraci pravítka
4. Vim ve funkci textového procesoru
5. Konfigurační parametry ovlivňující formátování a způsob zobrazení textů
7. Využití uživatelských funkcí psaných ve VimScriptu při zobrazení informací na pravítku
8. Automatické přeformátování odstavců během úprav textů
1. Malé zopakování z minula: zobrazení informací na pravítku (ruler)
V předchozí části seriálu o textovém editoru Vim jsme si řekli, pomocí jakých konfiguračních voleb je možné měnit způsob zobrazení pravítka (ruler) i stavového řádku (status line). Připomeňme si, že zobrazení pravítka je nejprve nutné povolit pomocí příkazu:
:set ruler
Formát pravítka se nastavuje pomocí konfiguračního řetězce přiřazeného do konfiguračního parametru rulerformat, zatímco u stavového řádku se jedná o konfigurační parametr statusline. Způsob zobrazení stavového řádku pro poslední (nejspodnější) okno se řídí pomocí volby laststatus. Také jsme si již řekli, jaké speciální (řídicí) znaky se mohou objevit v řetězci předávaného do parametru rulerformat a statusline: některé řídicí znaky jsou nahrazeny jménem editovaného souboru, jeho typem, číslem textového řádku, na němž se nachází kurzor, celkovým počtem řádků v souboru, příznakem modifikace souboru atd.
Obrázek 1: Zdrojový kód prvního demonstračního skriptu se zvýrazněnou syntaxí.
Dnešní první demonstrační skript, jehož zdrojový soubor je vypsaný pod tímto odstavcem, ukazuje, jak je možné na pravítku zobrazit základní informace o editovaném souboru, přičemž se tyto informace pro lepší čitelnost odlišují různou barvou textu:
"============================================================================= " Vim script support file " Maintainer: Pavel Tisnovsky " Last Change: 2011 Sep 27 "----------------------------------------------------------------------------- " Skript, který může být součástí konfiguračního souboru .vimrc, " popř. ho je možné z tohoto souboru načíst s využitím příkazu :source či :so " " Ukázka nastavení formátu pravítka "============================================================================= " nastavení nových kategorií stylů textu použitých na pravítku highlight RulerFileName guifg=#cc8080 ctermfg=red highlight RulerColumn guifg=#cccc80 ctermfg=yellow highlight RulerLine guifg=#80cc80 ctermfg=green highlight RulerOffset guifg=#8080cc ctermfg=blue highlight RulerASCII guifg=#808000 ctermfg=brown " povolení zobrazení pravítka (pro jistotu) set ruler " nastavení formátu pravítka (konfigurační parametr "rulerformat") set rulerformat=%50(%#RulerFileName#%t\ \ %#RulerLine#L:%l/%L\ \ %#RulerColumn#C:%-4c\ %#RulerOffset#%5o\ \ %#RulerASCII#[%03b=0x%02B]%)
Obrázek 2: Pohled na informace zobrazené na pravítku po spuštění prvního demonstračního skriptu.
2. Specifikace formátu stavového řádku (status line)
Podobným způsobem, jakým jsme v předchozím demonstračním skriptu změnili formát pravítka, je samozřejmě možné změnit i formát stavového řádku, což je ukázáno na druhém příkladu. Povšimněte si dvou malých rozdílů – pro zarovnání jména souboru na levý okraj stavového řádku a všech dalších informací na okraj pravý se používá řídicí znak =, který je uvozený, stejně jako ostatní řídicí znaky, pomocí procenta. Díky tomu se navíc nemusí zvětšovat šířka zobrazovaných informací, protože stavový řádek je v tomto případě natažen na maximální možnou šířku odpovídající šířce otevřeného okna.
Obrázek 3: Zdrojový kód druhého demonstračního skriptu se zvýrazněnou syntaxí.
Následuje výpis zdrojového kódu druhého demonstračního skriptu:
"============================================================================= " Vim script support file " Maintainer: Pavel Tisnovsky " Last Change: 2011 Sep 27 "----------------------------------------------------------------------------- " Skript, který může být součástí konfiguračního souboru .vimrc, " popř. ho je možné z tohoto souboru načíst s využitím příkazu :source či :so " " Ukázka nastavení formátu stavového řádku "============================================================================= " nastavení nových kategorií stylů textu použitých na pravítku highlight StatusLine guibg=#444444 guifg=#cc8080 ctermfg=red highlight StatusLineFileName guibg=#444444 guifg=#cc8080 ctermfg=red highlight StatusLineColumn guibg=#444444 guifg=#cccc80 ctermfg=yellow highlight StatusLineLine guibg=#444444 guifg=#80cc80 ctermfg=green highlight StatusLineOffset guibg=#444444 guifg=#8080cc ctermfg=blue highlight StatusLineASCII guibg=#444444 guifg=#808000 ctermfg=brown " nastavení formátu statového řádku (konfigurační parametr "statusline") set statusline=%#StatusLineFileName#%t%=%#StatusLineLine#L:%l/%L\ \ %#StatusLineColumn#C:%-4c\ %#StatusLineOffset#%5o\ \ %#StatusLineASCII#[%03b=0x%02B]
V případě, že formát stavového řádku není nastaven (parametr statusline obsahuje prázdný řetězec), zkopíruje se způsob jeho nastavení z formátu pravítka, což nám však nemusí ve všech případech vyhovovat.
Obrázek 4: Pohled na informace zobrazené na třech stavových řádcích (pro trojici podoken) po spuštění druhého demonstračního skriptu.
3. Zjednodušení zápisu dlouhého formátovacího řetězce při konfiguraci pravítka
Vzhledem k tomu, že formátovací řetězec použitý pro konfiguraci pravítka a příkazového řádku je ve většině případů velmi dlouhý a nepřehledný, může být poměrně obtížné v něm hledat chyby, popř. do něj doplňovat další informace. Ovšem s našimi znalostmi VimScriptu je celkem snadné celý formátovací řetězec složit z dílčích řetězců do pomocné proměnné, například s využitím operátoru .= (konkatenace ke stávajícímu řetězci). Na závěr se pomocná proměnná uloží do konfiguračního parametru rulerformat, protože již v šesté části tohoto seriálu jsme si řekli, že ke konfiguračním parametrům je možné ze skriptů přistupovat pomocí prefixu &:
"============================================================================= " Vim script support file " Maintainer: Pavel Tisnovsky " Last Change: 2011 Sep 27 "----------------------------------------------------------------------------- " Skript, který může být součástí konfiguračního souboru .vimrc, popř. " ho je možné z tohoto souboru načíst s využitím příkazu :source " " Ukázka nastavení formátu pravítka "============================================================================= " nastavení nových kategorií stylů textu použitých na pravítku highlight RulerFileName guifg=#cc8080 ctermfg=red highlight RulerColumn guifg=#cccc80 ctermfg=yellow highlight RulerLine guifg=#80cc80 ctermfg=green highlight RulerOffset guifg=#8080cc ctermfg=blue highlight RulerASCII guifg=#808000 ctermfg=brown " povolení zobrazení pravítka (pro jistotu) set ruler " proměnná obsahující formát pravítka let rulerformat="%50(" " šířka pravítka let rulerformat.="%#RulerFileName#%t\ \ " " jméno souboru let rulerformat.="%#RulerLine#L:%l/%L\ \ " " číslo řádku a počet řádků let rulerformat.="%#RulerColumn#C:%-4c\ " " číslo sloupce, " formátováno na čtyři znaky, zarovnání doleva let rulerformat.="%#RulerOffset#%5o\ \ " " offset od začátku souboru, " formátován na pět znaků zarovnání doprava let rulerformat.="%#RulerASCII#[%03b=0x%02B]\%)" " ASCII hodnota znaku + to stejné v hexa " nastavení formátu pravítka (konfigurační parametr "rulerformat") let &rulerformat=rulerformat " zrušení pomocné proměnné unlet rulerformat "=============================================================================
Obrázek 5: Zdrojový kód třetího demonstračního skriptu se zvýrazněnou syntaxí.
Výše uvedený skript lze samozřejmě doplnit i o specifikaci formátu stavového řádku, kde je důležité správně nastavit pozadí položek zde zobrazených (aby byl celý stavový řádek zobrazený se stejným pozadím):
highlight StatusLineFileName guibg=#444444 guifg=#cc8080 ctermfg=red highlight StatusLineFileName guibg=#444444 guifg=#cc8080 ctermfg=red highlight StatusLineColumn guibg=#444444 guifg=#cccc80 ctermfg=yellow highlight StatusLineLine guibg=#444444 guifg=#80cc80 ctermfg=green highlight StatusLineOffset guibg=#444444 guifg=#8080cc ctermfg=blue highlight StatusLineASCII guibg=#444444 guifg=#808000 ctermfg=brown " proměnná obsahující formát stavového řádku let statusline="%<" " šířka pravítka let statusline.="%#StatusLineFileName#%t\ \ %=" " jméno souboru let statusline.="%#StatusLineLine#L:%l/%L\ \ " " číslo řádku a počet řádků let statusline.="%#StatusLineColumn#C:%-4c\ " " číslo sloupce, " formátováno na čtyři znaky, zarovnání doleva let statusline.="%#StatusLineOffset#%5o\ \ " " offset od začátku souboru, " formátován na pět znaků zarovnání doprava let statusline.="%#StatusLineASCII#[%03b=0x%02B]" " ASCII hodnota znaku + to stejné v hexa " nastavení formátu pravítka (konfigurační parametr "statusline") let &statusline=statusline " zrušení pomocné proměnné unlet statusline
Obrázek 6: Zdrojový kód skriptu pro změnu formátování stavového řádku.
4. Vim ve funkci textového procesoru
Je známým faktem, že textový editor Vim se vyvinul ze starobylého textového editoru Vi. V případě Vi se jednalo o editor určený především pro neomylné :-) programátory (viz též pouze jednoúrovňové undo), takže většina funkcionality Vi byla mířena především do oblasti editace zdrojových kódů rozdělených do samostatných řádků, které se většinou automaticky neformátovaly na více obrazových řádků. Ostatně i v mnoha současných projektech se dodnes dodržuje štábní kultura diktující nevytvářet programové řádky delší než 80 znaků, což je vlastně pozůstatek z doby děrných štítků, jejichž formát byl dodržován i při konstrukci textových terminálů (80×24, 80×25 znaků). Ovšem editor Vim začal být postupně doplňován i o příkazy sloužící pro psaní běžného odstavcového textu, při jehož zobrazení i editacích je nutné využívat jiné funkce, než u zdrojových kódů. V současnosti tak je možné Vim upravit takovým způsobem, že se způsob práce s ním přibližuje možnostem textových procesorů, včetně automatického přeformátování odstavců, tvorbě seznamů atd. (samozřejmě se nejedná a nebude jednat o WYSIWYG editor, což je ostatně jen dobře).
Obrázek 7: V dřevních dobách výpočetní techniky se texty připravovaly na specializovaných systémech, například na tomto zařízení Wang 1220 firmy Wang Laboratories, které umožňovalo provádět přípravu textů, jejich editaci, tvorbu revizí, archivaci a samozřejmě formátování a tisk.
Tato funkcionalita je navíc doplněna o několik balíků maker (například o užitečnou sadu maker matchit.vim) zjednodušujících práci se značkovacími jazyky, ať již se jedná o TeX a LaTeX, či o HTML/XHTML či XML. Díky existenci těchto maker je například možné snadno přeskakovat mezi párovými tagy v HTML. Základem při práci s odstavcovými texty nejsou jednotlivé textové řádky, ale celé odstavce. Ty mohou být podle preference uživatele buď ukládány jako „nekonečný řádek“ (tj. jeden odstavec je v souboru uložen jako jediný řádek), popř. se může jednat o odstavce rozdělené fyzicky na jednotlivé řádky, ovšem s tím, že mezi jednotlivými odstavci musí být umístěn vhodný dělící znak. V případě Vimu se může jednat o prázdný textový řádek, popř. o mezeru ponechanou za poslední větou odstavce – viz též další kapitoly. Oba dva způsoby práce s odstavcovým textem – použití „nekonečného řádku“ i odstavce rozděleného do více textových řádků – si popíšeme v dalším textu.
Obrázek 8: Textový procesor XyWrite pracoval v textovém režimu, takže taktéž nedokázal v průběhu editace přesně zobrazit text takovým způsobem, jakým byl později vytištěn, což však v mnoha případech nemusí vadit.
5. Konfigurační parametry ovlivňující formátování a způsob zobrazení textů
Již v první části tohoto seriálu jsme si řekli, že v závislosti na zvoleném formátu editovaného souboru je možné se přepínat mezi různými režimy zalamování řádků. Všechny důležité konfigurační parametry jsou vypsány v následující dvojici tabulek.
Nejprve si uvedeme konfigurační parametry ovlivňující způsob zobrazení dlouhých textových řádků, tj. „nekonečných odstavců“:
# | Jméno parametru | Zkrácený název | Význam |
---|---|---|---|
1 | wrap | wrap | zapnutí vizuálního zalamování, při němž se do souborů automaticky nevkládá znak pro konec řádku |
2 | nowrap | nowrap | vypnutí vizuálního zalamování, vypíná i volbu linebreak |
3 | linebreak | lbr | zapnutí vizuálního zalamování na hranicích slov |
4 | nolinebreak | nolbr | vypnutí vizuálního zalamování na hranicích slov |
5 | showbreak | sbr | specifikace textu vkládaného na začátek vizuálně zalomené řádky (text se do souboru neuloží) |
Ve druhé tabulce jsou uvedeny konfigurační parametry, které se používají v případě, že je text poloautomaticky či zcela automaticky formátován do samostatných řádků (Vim tedy v textu vytváří či naopak ruší znaky CR):
# | Jméno parametru | Zkrácený název | Význam |
---|---|---|---|
1 | textwidth | tw | automatické zalamování na xxx sloupci (při psaní se automaticky vkládá znak pro konec řádku) |
2 | wrapmargin | wm | alternativa k předchozí volbě, umožňuje vkládat znak konce řádku relativně vůči pravému okraji okna |
3 | formatoptions | fo | přesné určení způsobu formátování textů |
4 | formatlistpat | flp | použit při formátování seznamů |
6. Vizuální zalamování textů
Pod pojmem vizuální zalamování textů je myšlen způsob zobrazení dlouhých textových řádků na obrazovce, aniž by ovšem docházelo ke skutečnému vkládání znaků pro konec řádku (CR) do editovaného souboru. Ve skutečnosti je právě tento způsob přípravy textů nejjednodušší a nejpřirozenější, pro lepší práci s textem však může být vhodné provést přemapování kláves pro posun kurzoru nahoru a dolů následujícím způsobem:
" šipkou nahoru se pohybujeme po obrazových řádcích směrem nahoru :map <Up> gk
" šipkou dolů se pohybujeme po obrazových řádcích směrem dolů :map <Down> gj
Význam všech parametrů ovlivňujících způsob vizuálního zalamování textů je ukázán na následujících čtyřech screenshotech (obsahujících mimochodem část předchozí kapitoly):
Obrázek 9: Parametr nowrap zakáže vizuální zalamování textů, takže dlouhé řádky nejsou celé viditelné.
Obrázek 10: Parametrem wrap je povoleno vizuální zalomení textu na jakémkoli znaku, který se zrovna nachází v posledním sloupci obrazovky. Nevhodné pro běžné texty.
Obrázek 11: Parametrem wrap a linebreak je povoleno vizuální zarovnání takovým způsobem, že je řádek ukončen na hranicích mezi slovy. Na rozdíl od předchozího režimu je tento způsob naopak velmi vhodný pro psaní běžných textů.
Obrázek 12: Někdy může být výhodné vidět, které řádky jsou skutečné a které vznikly pouhým vizuálním zarovnáním. O to se stará volba showbreak, které lze předat řetězec, který se bude zobrazovat na začátku každého řádku vzniklého vizuálním zalomením (při zápisu mezery před ni zapište zpětné lomítko!).
I další příkazové zkratky mohou být užitečné, například pro přepínání režimů wrap a linebreak, popř. pro nastavení vhodného řetězce do parametru showbreak:
:map ,br :set invlinebreak<cr> :map ,wr :set invwrap<cr> :map ,sbr :set showbreak=>>>\ <cr> :map ,nbr :set showbreak=<cr>
7. Využití uživatelských funkcí psaných ve VimScriptu při zobrazení informací na pravítku
V předchozí kapitole jsme mohli vidět, jak může být v mnoha případech užitečné měnit způsob vizuálního zobrazení editovaných textů na obrazovce při jejich psaní a zejména následných úpravách. V mnoha případech by se však navíc hodilo mít neustále k dispozici i informaci o tom, jaký režim zobrazení textu je v daném okamžiku vlastně použit. Ve skutečnosti to lze zařídit velmi jednoduše (člověk si na tento fakt při práci ve Vimu rychle zvykne :-), protože postačuje využít informace získané v předchozí části tohoto seriálu, kde jsme si řekli, že při zápisu informací na pravítko či stavový řádek je možné využít uživatelské funkce zapisované ve VimScriptu. Návratové hodnoty těchto funkcí jsou převedeny na řetězec (samozřejmě za předpokladu, že se již o řetězce nejedná) a tento řetězec je zarovnán a je popř. zkrácen na požadovanou hodnotu a posléze ihned umístěn do správné pozice na pravítku nebo na stavovém řádku.
Obrázek 13: Ukázka pravítka, na němž je kromě dalších informací zobrazena i hodnota konfiguračního parametru textwidth, wrap a linebreak.
Uživatelské funkce jsou využity i v následujícím skriptu, kde slouží pro zobrazení třech důležitých konfiguračních parametrů na pravítku. Jedná se o parametry wrap, linebreak a textwidth. Povšimněte si především způsobu převodu číselné hodnoty 0 a 1 na řetězec v případě parametrů wrap a linebreak i toho, jak je volání funkcí vloženo do formátovacího řetězce rulerformat – volaná funkce musí být uzavřena mezi znaky %{ a }:
"============================================================================= " Vim script support file " Maintainer: Pavel Tisnovsky " Last Change: 2011 Sep 27 "----------------------------------------------------------------------------- " Skript, který může být součástí konfiguračního souboru .vimrc, popř. " ho je možné z tohoto souboru načíst s využitím příkazu :source " " Ukázka nastavení formátu pravítka a pomocných funkcí pro formátování " údajů zobrazených na pravítku. "============================================================================= " nastavení nových kategorií stylů textu použitých na pravítku highlight RulerFileName guifg=#cc8080 ctermfg=red highlight RulerColumn guifg=#cccc80 ctermfg=yellow highlight RulerLine guifg=#80cc80 ctermfg=green highlight RulerOffset guifg=#8080cc ctermfg=blue highlight RulerASCII guifg=#808000 ctermfg=brown highlight RulerTextWidth guifg=#cc80cc ctermfg=magenta highlight RulerTextWrap guifg=#cc8080 ctermfg=red highlight RulerLineBreak guifg=#8080cc ctermfg=blue " funkce vracející hodnotu konfiguračního parametru "textwidth" function! ReturnTextWidth() return &textwidth endfunction " funkce vracející hodnotu konfiguračního parametru "wrap" ve formě řetězce function! ReturnTextWrap() return &wrap ? "wrap " : "nowrap" endfunction " funkce vracející hodnotu konfiguračního parametru "linebreak" ve formě řetězce function! ReturnLineBreak() return &linebreak ? "break " : "nobreak" endfunction " povolení zobrazení pravítka (pro jistotu) set ruler " proměnná obsahující formát pravítka let rulerformat="%60(" " šířka pravítka let rulerformat.="%#RulerFileName#%t\ \ " " jméno souboru let rulerformat.="%#RulerLine#L:%l/%L\ \ " " číslo řádku a počet řádků let rulerformat.="%#RulerColumn#C:%-4c\ " " číslo sloupce " formátováno na čtyři znaky, zarovnání doleva let rulerformat.="%#RulerOffset#%5o\ \ " " offset od začátku souboru, let rulerformat.="%#RulerASCII#[%03b=0x%02B]\ " " ASCII hodnota znaku + to stejné v hexa let rulerformat.="%#RulerTextWidth#tw:%{ReturnTextWidth()}\ " " šířka textu let rulerformat.="%#RulerTextWrap#%{ReturnTextWrap()}\ " " zalamování textů let rulerformat.="%#RulerLineBreak#%{ReturnLineBreak()}\%)" " zalomení řádků na bílém znaku " nastavení formátu pravítka (konfigurační parametr "rulerformat") let &rulerformat=rulerformat " zrušení pomocné proměnné unlet rulerformat "=============================================================================
Obrázek 14: Zdrojový kód skriptu, který obsahuje trojici funkcí využitých při formátování informací zobrazených na pravítku.
8. Automatické přeformátování odstavců během úprav textů
V této kapitole si (prozatím jen stručně) popíšeme druhý způsob práce s běžnými texty. Jedná se o způsob založený na tom, že textové odstavce jsou rozděleny do fyzických textových řádků takovým způsobem, že je Vim může rozeznat (pozná tedy začátek a konec odstavce) a tím pádem je i může poloautomaticky či dokonce zcela automaticky zformátovat resp. přerovnat. Základním parametrem, který ovlivňuje chování Vimu při formátování odstavců, je volba textwidth, zkracovaná též na tw. Nulová hodnota vypíná formátování, zatímco hodnota kladná udává maximální délku textových řádků (typicky se používají hodnoty 60, 72 či 80). Podobný význam má i parametr wrapmargin, pomocí nějž je možné zadat šířku odstavců relativně k pravému okraji okna. Pokud například bude šířka okna 80 znaků a parametr wrapmargin bude nastaven na 10, budou se odstavce přerovnávat tak, aby maximální délka každého řádku byla rovna 80–10=70 znakům.
Textový editor Vim ovšem bez dalšího nastavení používá hodnoty textwidth a wrapmargin pouze při vkládání nového textu, nikoli například pro spojování kratších řádků při provádění různých editačních operací. Buď je možné formátování vynutit ručně, například příkazem gqap (format (a) paragraph), nebo lze do volby formatoptions přidat znak a, který zajistí automatické přeformátování odstavce při jakékoli manipulaci s textem:
:set formatoptions+=a
Pokud je nastavena volba textwidth, lze odstavec či jakýkoli vybraný text zarovnat doleva, doprava či ho vycentrovat pomocí příkazů:
:left :right :center
Text je nutné nejprve vybrat do bloku, popř. použít jiný způsob zadání rozsahu výběru (například procento, určením čísel řádků atd.).
9. Odkazy na Internetu
- vim.wikia: Display date-and-time on status line
http://vim.wikia.com/wiki/Display_date-and-time_on_status_line - vim.wikia: Writing a valid statusline
http://vim.wikia.com/wiki/Writing_a_valid_statusline - vim.wikia: Statusline tab level ruler
http://vim.wikia.com/wiki/Statusline_tab_level_ruler - vim.wikia: Switching between different statuslines
http://vim.wikia.com/wiki/Switching_between_different_statuslines - X Selections, Cut Buffers, and Kill Rings
http://www.jwz.org/doc/x-cut-and-paste.html - Accessing the system clipboard
http://vim.wikia.com/wiki/Accessing_the_system_clipboard - xcutsel(1) – Linux man page
http://linux.die.net/man/1/xcutsel - snipMate : TextMate-style snippets for Vim
http://www.vim.org/scripts/script.php?script_id=2540 - msanders / snipmate.vim
https://github.com/msanders/snipmate.vim - snipMate.vim Introductory Screencast
http://vimeo.com/3535418 - Clewn home page
http://clewn.sourceforge.net/ - How to connect vim with gdb – using clewn
http://chunhao.net/blog/how-to-connect-vim-with-gdb-using-clewn - yavdb : Yet Another (Generic) Vim Debugger Integration
http://www.vim.org/scripts/script.php?script_id=1954 - Vim home page
http://www.vim.org/ - 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