Hlavní navigace

Textový editor Vim jako IDE (14.část: automatické formátování textů)

29. 9. 2011
Doba čtení: 16 minut

Sdílet

V dnešní části seriálu o různých variantách využití textového editoru Vim nejprve dokončíme popis způsobů, jakými je možné zobrazovat důležité informace na pravítku a na stavovém řádku. Poté se zaměříme na velmi užitečnou oblast – automatické či poloautomatické formátování textů.

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ů

6. Vizuální zalamování 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ů

9. Odkazy na Internetu

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 rulerformatstatusline: 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 TeXLaTeX, č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 wraplinebreak 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ů wraplinebreak, 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, wraplinebreak.

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, linebreaktextwidth. Povšimněte si především způsobu převodu číselné hodnoty 0 a 1 na řetězec v případě parametrů wraplinebreak 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 textwidthwrapmargin 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:

root_podpora

: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

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

Byl pro vás článek přínosný?