Textový editor Vim jako IDE (automatické formátování textů: dokončení)

Pavel Tišnovský 6. 10. 2011

V dnešní části seriálu o textovém editoru Vim dokončíme téma automatického formátování odstavcových textů. Dále si ukážeme některé triky využitelné především při editacích textových dokumentů zapisovaných ve značkovacích jazycích, zejména v XML, (X)HTML a (La)TeXu. Nezapomeneme ani na makro justify.vim.

Obsah

1. Krátké zopakování: formátování odstavcových textů ve Vimu

2. Konfigurační parametr „formatoptions“

3. Význam jednotlivých znaků konfiguračního parametru „formatoptions“

4. Konfigurační parametry používané při formátování poznámek a další volby

5. Klávesové zkratky vhodné pro psaní dokumentů v (La)TeXu

6. Další pomocné příkazy pro psaní dokumentů v (La)TeXu

7. Klávesové zkratky určené pro zvýraznění textu vybraného do bloku

8. Pomocné makro justify.vim

9. Odkazy na Internetu

1. Krátké zopakování: formátování odstavcových textů ve Vimu

Ve čtrnácté části seriálu (nyní se již skutečně jedná o čtrnáctou část, nikoli o malou mystifikaci :-) o využití textového editoru Vim dokončíme téma automatického a poloautomatického formátování textů. Minule jsme si řekli, že s odstavcovými texty je možné pracovat dvěma principiálně zcela odlišnými způsoby. První způsob spočívá v zápisu odstavců ve formě takzvaných „nekonečných řádků“, tj. textových řádků obecně delších, než je vizuální šířka okna. Každý řádek, který je v souboru ukončený znakem CR, popř. kombinací znaků CR+LF, tedy představuje celý odstavec a jedinou úlohou Vimu v tomto případě je zajistit vizuální zalomení každého řádku odstavce buď na posledním zobrazitelném znaku (tuto možnost zajišťuje volba wrap), nebo v mezeře mezi slovy (jedná se o kombinaci voleb wraplinebreak). Výhodou popsaného způsobu práce s odstavci je především to, že odstavce většinou není zapotřebí žádným způsobem formátovat, takže se práce s Vimem v mnoha ohledech podobá práci s běžnými textovými procesory.

Obrázek 1: Parametr nowrap zakáže vizuální zalamování textů, takže dlouhé řádky nejsou celé viditelné. Tento způsob zobrazení je vhodný při práci se zdrojovými kódy (a to ještě ne vždy).

Ovšem v některých případech je požadováno, aby byly odstavce v textovém souboru skutečně naformátovány, tj. aby byl každý řádek ukončen znakem CR nebo na méně vyspělých systémech dvojicí znaků CR+LF (tvůrci těchto systémů si evidentně pletli textové soubory a soubory obsahující data určená pro tiskárnu). Textový editor Vim nabízí pomoc i v těchto případech – dokáže totiž text formátovat, a to buď poloautomaticky (na vyžádání), nebo i zcela automaticky. Pro připomenutí jsou v následující tabulce 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/CR+LF):

# 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ů (viz další dvě kapitoly)
4 formatlistpat flp použit při formátování seznamů

Obrázek 2: 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, naopak vhodné v některých případech při práci se zdrojovými kódy.

2. Konfigurační parametr „formatoptions“

Při formátování textů hrají nejdůležitější roli tři konfigurační volby. Jedná se o volbu textwidth (tw) s celočíselnou hodnotou, pomocí níž se určuje maximální délka jednoho textového řádku, tj. pozice pravého okraje. Částečně podobnou funkci má i volba wrapmargin (wm), s jejímž využitím se taktéž definuje pravý okraj textu, ovšem relativně k šířce okna (viz též závěrečnou kapitolu předchozí části tohoto seriálu). Ovšem to, jakým způsobem se text naformátuje a co je vlastně považováno za odstavec (popř. za číslovaný seznam nebo seznam s odrážkami), je určeno konfiguračním parametrem formatoptions(fo). Hodnotou tohoto konfiguračního parametru je sekvence znaků, z nichž každý má speciální význam, podobně jako je tomu u sekvence znaků používaných při konfiguraci pravítka a stavového řádku. Vzhledem k tomu, že se poměrně často stává, že je do konfiguračního parametru formatoptions nutné přidat jednu volbu či ji naopak odstranit, můžeme se namísto prostého přiřazení:

:set formatoptions=_konfigurační_znaky_

setkat s příkazy typu:

:set formatoptions+=_znak_

či:

:set formatoptions-=_znak_

V některých případech, především při současné editaci většího množství souborů různých typů, může být vhodné parametry konfiguračního příkazu formatoptions nastavovat lokálně pro každý buffer zvlášť:

:setlocal formatoptions+=_znak_

či:

:setlocal formatoptions-=_znak_

Obrázek 3: Odstavec textu naformátovaný na maximální šířku řádku 64 znaků. Šířka řádku byla nastavena volbou :set textwidth=64 a odstavec byl zformátován příkazem gqap

Poznámka: pokud se vám nebude dařit dosáhnout toho, aby se text skutečně automaticky či poloautomaticky formátoval, a to i v případě, že jsou volby textwidth, wrapmarginformatoptions nastaveny správně, ujistěte se, že je nastavena nenulová šířka textu (:set textwidth=>0) a že současně není nastavena volba compatible ani volba paste:

:set nocompatible
:set nopaste

Poznámka2: volba paste je dosti užitečná v případech kopírování textů přes schránku či výběr (selection), kdy nechceme, aby Vim jakkoli do tohoto textu zasahoval, tj. snažil se ho nějak formátovat. Ovšem ihned po vložení textu je vhodné tuto volbu opět vypnout.

Obrázek 4: Odstavec textu naformátovaný na maximální šířku řádku 54 znaků. Šířka řádku byla nastavena volbou :set wrapmargin=10 a počet sloupců na obrazovce byl nastaven přes :set columns=64. Odstavec byl zformátován příkazem gqap, stejně jako v předchozím případě.

3. Význam jednotlivých znaků konfiguračního parametru „formatoptions“

Znaky, které mohou být součástí konfiguračního řetězce volby formatoptions, je možné podle jejich funkce rozdělit do tří skupin. V první skupině (té nejdůležitější) se nachází volby ovlivňující především způsob formátování běžných odstavcových textů a seznamů. Všechny tyto znaky jsou vypsány v následující tabulce:

# Znak Význam znaku
1 t jedna z nejdůležitějších voleb vůbec, povoluje zalamování textů při jejich editaci
2 w v případě, že je tato volba nastavena, budou řádky nekončící na bílý znak považovány za konec odstavce; v opačném případě jsou odstavce od sebe odděleny prázdnými řádky
3 a opět jedna velmi důležitá volba – zapnutí automatického formátování odstavců, podobně jako v textových procesorech (o této volbě jsme se zmínili již v předchozí části seriálu)
4 n povoluje rozeznávání očíslovaných seznamů či seznamů s odrážkami, které jsou formátovány s odsazením. Další položka seznamu se automaticky vytvoří po stisku klávesy Enter.
5 2 při formátování odstavců se třetí a každý další řádek odsadí stejně, jako řádek druhý (nikoli jako řádek první). Vhodné v případech, kdy má první řádek změněný levý okraj.
6 l opět velmi užitečná volba, především při práci s cizími texty – řádky delší než textwidth se nebudou automaticky zalamovat, což může zabránit neúmyslným změnám v dokumentu
7 1 řádek se nebude zalamovat ihned za jednopísmenným slovem (předložkou); sice to nepomůže vždy, ale v mnoha případech to zabraňuje výskytu typografických hrubek typu „v“ na konci řádku atd.

Obrázek 5: Nezformátovaný text, v němž se vyskytuje velké množství jednopísmenných „předložek“ představovaných znakem X.

Obrázek 6: Zformátovaní odstavce příkazem gqap. Ve formatoptions se přitom nevyskytuje řídicí znak „1“, proto jsou některé předložky umístěny i na konci řádku (zvýrazněno).

Obrázek 7: Zformátovaní odstavce příkazem gqap, ve formatoptions se vyskytuje řídicí znak „1“ zabraňující umístění předložek na konec řádku.

4. Konfigurační parametry používané při formátování poznámek a další volby

Ve druhé skupině znaků, jež mohou být součástí konfiguračního řetězce formatoptions, můžeme nalézt volby využívané především při formátování víceřádkových komentářů ve zdrojových kódech:

# Znak Význam znaku
1 c povoluje zalamování komentářů a případné vkládání znaků označujících začátek komentáře
2 r povoluje automatické vložení znaků označujících začátek komentáře po stisku klávesy Enter
3 o dtto, ale pro příkazy o a O (začátek psaní nové řádky pod či nad textový kurzor)
4 q povolení formátování komentářů příkazem gq

A konečně se ve třetí skupině vyskytují volby, které jsou v našich podmínkách buď nepoužitelné, nebo jsou zcela na obtíž. Jedná se o volby ovlivňující míru kompatibility s editorem Vi a taktéž způsob zacházení se znaky, jejichž kód je vyšší než 255, což je i případ českých znaků v případě použití Unicode:

# Znak Význam znaku
1 v zapíná režim kompatibility s textovým editorem Vi, v němž se zalamování provádí pouze při zápisu bílého znaku v současně platném vkládacím režimu, nikoli na znaku vloženém dříve
2 b podobné předchozí volbě, ovšem pouze pro bílé znaky vložené před limitem určeným pravým okrajem textu
3 m ovlivňuje zalamování řádků i na znacích s hodnotou větší než 255. Vhodné pro některé asijské znaky, které vlastně představují celá slova, ale v našem jazyce to znamená, že se (v případě UTF-8 a Unicode obecně) budou slova zalamovat na jakémkoli znaku s nabodeníčkem.
4 M ovlivňuje vkládání mezer při spojování řádků příkazem J (join) na místě znaků s hodnotou větší než 255
5 B opak předchozí volby

Obrázek 8: Zformátování odstavce se znaky s nabodeníčky, pokud je ve formatoptions přítomen znak „m“. Povšimněte si způsobu rozdělení slova na prvním řádku, kde se nachází kurzor.

Obrázek 9: Zformátování odstavce se znaky s nabodeníčky, pokud ve formatoptions není přítomen znak „m“

5. Klávesové zkratky vhodné pro psaní dokumentů v (La)TeXu

Při tvorbě textových souborů, které mají být vysázeny systémem TeX nebo LaTeX, se kromě běžného odstavcového textu musí do dokumentu zapisovat i poměrně velké množství různých příkazů, jejichž ruční vkládání je samozřejmě velmi zdlouhavé a především zbytečné. Existuje několik cest, jak vkládání příkazů zjednodušit a urychlit – příkazy mohou být například obsaženy v menu, mohou být vyvolávány kombinací funkčních kláves apod. Ovšem z praktického hlediska se (nejenom) mě osvědčily klávesové zkratky zapisované přímo ve vkládacím režimu (insert mode). Každá zkratka přitom začíná čárkou, za níž následuje sekvence alfanumerických znaků. V tomto případě se využívá faktu, že se v psané formě našeho jazyka prakticky nevyskytne situace, kdy by se za čárkou zapisoval jiný znak než mezera či konec řádku. Navíc je znak čárky zapisovaný nezávisle na použitém rozložení klávesnice.

Obrázek 10: Část konfiguračního souboru .vimrc obsahujícího nové klávesové zkratky pro editaci souborů .tex.

Pro malou inspiraci následuje část konfiguračního souboru .vimrc, v níž jsou definovány klávesové zkratky pro vkládací režim využívané pro soubory s koncovkou .tex. Povšimněte si, že po vložení nového příkazu do souboru se kurzor přesune do složených závorek, tedy tam, kam se například zapisuje nadpis kapitoly apod.:

augroup __latex__
au!
autocmd BufRead,BufNewFile *.tex inoremap ,ch \chapter{}<Left>
autocmd BufRead,BufNewFile *.tex inoremap ,sa \section{}<Left>
autocmd BufRead,BufNewFile *.tex inoremap ,sb \subsection{}<Left>
autocmd BufRead,BufNewFile *.tex inoremap ,sc \subsubsection{}<Left>
autocmd BufRead,BufNewFile *.tex inoremap ,ee \emph{}<Left>
autocmd BufRead,BufNewFile *.tex inoremap ,tt \texttt{}<Left>
autocmd BufRead,BufNewFile *.tex inoremap ,bb \textbf{}<Left>
autocmd BufRead,BufNewFile *.tex inoremap ,uv \uv{}<Left>
autocmd BufRead,BufNewFile *.tex inoremap ,vv \verb$$<Left>
autocmd BufRead,BufNewFile *.tex inoremap ,hh \helpref{}{}<Left><Left><Left>
autocmd BufRead,BufNewFile *.tex inoremap ,cen \begin{center}<CR><CR>\end{center}<Up>
autocmd BufRead,BufNewFile *.tex inoremap ,quo \begin{quote}<CR><CR>\end{quote}<Up>
autocmd BufRead,BufNewFile *.tex inoremap ,tab \begin{tabular}{ll}<CR><CR>\end{tabular}<Up>
autocmd BufRead,BufNewFile *.tex inoremap ,tbl \begin{table}[htp]<CR><CR>\caption{}<CR>\label{}<CR>\end{table}<C-O>3k
autocmd BufRead,BufNewFile *.tex inoremap ,ver \begin{verbatim}<CR><CR>\end{verbatim}<Up>
autocmd BufRead,BufNewFile *.tex inoremap ,qv \begin{quote}\begin{verbatim}<CR><CR>\end{verbatim}\end{quote}<Up>
autocmd BufRead,BufNewFile *.tex inoremap ,fig \begin{figure}[htp]<CR><CR>\caption{}<CR>\label{}<CR>\end{figure}<C-O>3k
autocmd BufRead,BufNewFile *.tex inoremap ,it \begin{itemize}<CR>\item <CR>\end{itemize}<CR><Up><Up>
autocmd BufRead,BufNewFile *.tex inoremap ,en \begin{enumerate}<CR>\item <CR>\end{enumerate}<CR><Up><Up>
autocmd BufRead,BufNewFile *.tex inoremap ,ii \item<Space>
autocmd BufRead,BufNewFile *.tex inoremap ,in \index{!}<Left><Left>
autocmd BufRead,BufNewFile *.tex inoremap ,ff \footnote{}<Left>
autocmd BufRead,BufNewFile *.tex inoremap ,re \ref{}<Left>
autocmd BufRead,BufNewFile *.tex inoremap ,ll \label{}<Left>
autocmd BufRead,BufNewFile *.tex inoremap ,ci \cite{}<Left>
autocmd BufRead,BufNewFile *.tex inoremap ,eq \begin{equation}<CR><CR>\end{equation}<CR><up><up>
augroup END

Obrázek 11: Klávesové zkratky je možné definovat samostatně pro každý typ souboru. Zde jsou například zkratky využitelné při editacích SVG (Scalable Vector Graphics).

6. Další pomocné příkazy pro psaní dokumentů v (La)TeXu

Nové příkazy uvedené v předchozí kapitole je vhodné doplnit i o poněkud obecnější varianty. V následujících dvou řádcích je definice dvou klávesových zkratek. První z nich (vyvolávaná dvojitým stlačením čárky) slouží pro vložení konstrukce, z níž lze sestavit jakýkoliv strukturovaný příkaz LaTeXu, zatímco druhý příkaz vyvolávaný klávesovou zkratkou ,. (čárka následovaná tečkou) slouží pro ukončení příkazu začínajícího na \begin{nějaký text} takovým způsobem, že se do dokumentu vloží na stejný řádek \end{nějaký text}. Povšimněte si využití příkazu y (yank) společně s operátorem t} (goto character „}“):

autocmd BufRead,BufNewFile *.tex inoremap ,, \{}<Left>
autocmd BufRead,BufNewFile *.tex inoremap ,. <Esc>F{lyt}f}a\end{}<Esc>PF\i

Další klávesové zkratky slouží k přesunu textového kurzoru před začátek příkazu, tj. před znak zpětného lomítka, a za konec příkazu, tj. za pravou složenou závorku. Tyto funkce jsou namapovány na kombinace kláves Alt+šipka dolevaAlt+šipka doprava, což znamená, že v textové konzoli či v emulátoru terminálu pravděpodobně nebudou zkratky použitelné (ovšem lze samozřejmě použít i jiné kombinace kláves):

autocmd BufRead,BufNewFile *.tex noremap <M-Right> f}
autocmd BufRead,BufNewFile *.tex inoremap <M-Right> <C-O>f}<Right>
autocmd BufRead,BufNewFile *.tex noremap <M-Left> F\
autocmd BufRead,BufNewFile *.tex inoremap <M-Left> <C-O>F\

Na závěr této kapitoly si ukážeme ještě dvojici příkazů sloužících pro nastavení chování Vimu při otevírání souborů s koncovkou .tex (kódování souboru bude v současnosti pravděpodobně již téměř všude nastaveno na UTF-8, zde se jedná o částečně historickou konfiguraci):

autocmd BufRead,BufNewFile *.tex set tw=0 wrap linebreak expandtab fileencodings=iso-8859-2 ff=unix
autocmd BufRead,BufNewFile *.tex set iskeyword+=\_

A konečně se někomu může hodit klávesová zkratka určená pro zápis znaku tildy, která slouží, což TeXperti samozřejmě znají, pro vložení nedělitelné mezery do dokumentu. Někdy je totiž tildu nutné vložit ručně, protože program vlnka si s některými případy nemůže poradit:

autocmd BufRead,BufNewFile *.tex inoremap ;; ~

7. Klávesové zkratky určené pro zvýraznění textu vybraného do bloku

Textový editor Vim může alespoň částečně napodobit i některé další funkce textových procesorů, například zvýraznění vybrané části textu tučným písmem, kurzívou či neproporcionálním písmem (dálnopis, teletype). V případě LaTeXu se toto zvýraznění provádí uzavřením části textu do příkazů \emph{} (zvýraznění kurzivou či v kurzivním textu naopak svislým písmem), {\textbf } (zvýraznění textu tučným písmem) a {\texttt } (neproporcionální písmo). Vložení těchto formátovacích příkazů zajišťuje trojice nových klávesových zkratek CTRL+I, CTRL+BCTRL+T, které jsou ovšem platné pouze v režimu výběru textu, což znamená, že tyto klávesové zkratky se v případě potřeby mohou v jiných režimech použít pro (zcela) odlišné účely:

" funkce pro praci s bloky textu - zvyrazneni textu ve vybranem bloku
autocmd BufRead,BufNewFile *.tex vnoremap <C-I> omaomb<esc>`bi}<esc>`ai\emph{<esc>
autocmd BufRead,BufNewFile *.tex vnoremap <C-B> omaomb<esc>`bi}<esc>`ai{\textbf <esc>
autocmd BufRead,BufNewFile *.tex vnoremap <C-T> omaomb<esc>`bi}<esc>`ai{\texttt <esc>

Pokud preferujete, aby blok textu zůstal vybraný, je možné výše uvedené příkazy modifikovat pouze minimálně přidáním volání příkazu gv (opětovný přechod do režimu výběru bloku, ovšem s tím, že zůstane zachován původní vybraný text):

" funkce pro praci s bloky textu s obnovením původně vybraného bloku
autocmd BufRead,BufNewFile *.tex vnoremap <C-I> omaomb<esc>`bi}<esc>`ai\emph{<esc>gv
autocmd BufRead,BufNewFile *.tex vnoremap <C-B> omaomb<esc>`bi}<esc>`ai{\textbf <esc>gv
autocmd BufRead,BufNewFile *.tex vnoremap <C-T> omaomb<esc>`bi}<esc>`ai{\texttt <esc>gv

Čtvrtým užitečným příkazem používaným podobným způsobem (na vybraný blok), je uzavření textu do uvozovek, což v případě balíčku czech zajišťuje makro \uv{}:

autocmd BufRead,BufNewFile *.tex vnoremap <C-U> omaomb<esc>`bi}<esc>`ai\uv{<esc>

popř. téměř shodný příkaz s obnovou bloku:

autocmd BufRead,BufNewFile *.tex vnoremap <C-U> omaomb<esc>`bi}<esc>`ai\uv{<esc>gv

Obrázek 12: Rozličné užitečné klávesové zkratky využívané při editacích (La)TeXovských dokumentů.

8. Pomocné makro justify.vim

Při formátování textů nám mnohdy možnosti zabudované přímo do textového editoru Vim nemusí dostačovat, zejména tehdy, když má být text zarovnán do bloku (na pravý i levý okraj), tj. když mají být mezi slova vloženy další mezery. V takových případech je možné buď využít nějaký externí formátovací filtr (například fmt) nebo – což je snadnější a současně i stylovější – zavolat makro uložené v souboru justify.vim. Tento soubor je přímo součástí instalace Vimu (vim-enhanced), proto ho je možné načíst přímo z .vimrc, například následujícím způsobem:

if v:version>=600
    source $VIMRUNTIME/macros/justify.vim
endif

Pokud došlo k úspěšnému načtení souboru (skriptu), je možné kdykoli makro zavolat, přičemž formát volání je následující:

:call Justify([textwidth [,maxspaces]])

Obrázek 13: Odstavec zarovnaný na oba okraje zavoláním makra :call Justify(64,3).

První nepovinný parametr obsahuje šířku textu, popř. řetězec ‚tw‘ nebo '' v případě, že se tato hodnota má získat z konfiguračního parametru textwidth. Druhý nepovinný parametr obsahuje maximální délku sekvence mezer vkládaných do souboru. Pokud by se při vkládání mezer vytvořila delší sekvence mezer, než je zde uvedená hodnota, řádek by zůstal nezformátován (a tudíž většinou zarovnán doleva).

Makro Justify() se používá na zarovnání jednoho řádku nebo sekvence řádků (třeba odstavce) vybraných do bloku. Přitom platí, že délka řádků by měla být menší nebo rovna požadované šířce odstavce po zformátování, protože delší řádky nejsou automaticky rozděleny na větší množství řádků – toto makro totiž pouze vkládá mezery mezi slova, žádné další formátování se neprovádí. To však vůbec nevadí, protože těsně před voláním makra Justify() lze celý odstavec zformátovat příkazem gqap. Osobně používám následující mapování, které zajistí zformátování odstavce, na němž se nachází kurzor s následným posunem kurzoru pod odstavec (což umožňuje snadné formátování dalšího odstavce):

widgety

map \ gqapkvap:call Justify(80,4)<cr>}

Celou sekvenci Vimovských jednoznakových příkazů lze rozdělit na tři části:

gqap - zformátování odstavce
k    - přesun kurzoru zpět do odstavce
vap  - výběr odstavce do bloku

Obrázek 14: Odstavec zarovnaný na oba okraje zavoláním makra :call Justify(50,4). V tomto případě nejsou některé řádky oboustranně zarovnány, protože by musel být použit větší počet mezer než je udaná mez 4.

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
Našli jste v článku chybu?
120na80.cz: Co je padesátkrát sladší než cukr?

Co je padesátkrát sladší než cukr?

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

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

DigiZone.cz: DVB-T2 ověřeno: seznam TV zveřejněn

DVB-T2 ověřeno: seznam TV zveřejněn

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

dTest odhalil ten nejlepší kečup

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

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

DigiZone.cz: Nova opět stahuje „milionáře“

Nova opět stahuje „milionáře“

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

Takhle se prodávají mražené potraviny

Podnikatel.cz: Byla finanční manažerka, teď cvičí jógu

Byla finanční manažerka, teď cvičí jógu

Vitalia.cz: Muž, který miluje příliš. Ženám neimponuje

Muž, který miluje příliš. Ženám neimponuje

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

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

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

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

Podnikatel.cz: Kalousek chce odklad EET. Předvolební tah?

Kalousek chce odklad EET. Předvolební tah?

Lupa.cz: Jak se prodává firma za miliardu?

Jak se prodává firma za miliardu?

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

Hrbatá prsa aneb mýty o implantátech

Vitalia.cz: Test dětských svačinek: Tyhle ne!

Test dětských svačinek: Tyhle ne!

Lupa.cz: Hackeři mají data z půlmiliardy účtů Yahoo

Hackeři mají data z půlmiliardy účtů Yahoo

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

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

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

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

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

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

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

Udělali jsme velkou chybu, napsal Čupr