6. Konfigurace g/vim Cvičení předmětu BI PUN (Pokročilé Unixové Nástroje) Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu [https://www.esfcr.cz/] a rozpočtu hlavního města Prahy [http://www.praha.eu/]. Praha & EU: Investujeme do vaší budoucnosti Konfigurace vimu Při startu vim jsou načítány soubory: System wide inicializace /usr/share/vim/vimrc Uživatelská inicializace ~/.vimrc Adresářová inicializece standardně vypnutá.vimrc nebo.exrc lze povolit pomocí set exrc Načítané soubory lze vypsat pomocí příkazu :version, např. (z gvimu): systémový vimrc soubor: "$VIM/vimrc" uživatelský vimrc soubor: "$HOME/.vimrc" uživatelský exrc soubor: "$HOME/.exrc" systémový gvimrc soubor: "$VIM/gvimrc" uživatelský gvimrc soubor: "$HOME/.gvimrc" systémový soubor s menu: "$VIMRUNTIME/menu.vim" implicitní hodnota $VIM:"/usr/share/vim" Uvnitř konfiguračního souboru je možné používat komentáře ( ) nebo příkazy vimu "hledání bez ohledu na velikost písmen set ignorecase "vypne ignorecase pokud je v hledaném øetìzci velké písmeno set smartcase V případě, že máte vhodně zkonfigurovaný editor za jeho běhu a chcete aktuální nastavení (rozdíly oproti výchozím hodnotám) promítnout do konfiguračního souboru, stačí použít příkaz: :mkvimrc [soubor] Pokud se neuvede jméno souboru, použije se.vimrc v aktuálním adesáři. Syntaktická poznámka Příkazy ukládané do konfiguračních souborů jsou obvykle tytéž, jako příkazy zadávané na poslední řádce (do něhož se lze dostat pomocí znaku : ). Tzn. že příkaz :set number uvnitř vimu se do konfiguračního souboru zapíše jako set number
Konfigurace gvimu Uživatelská konfirgurace grafické verze vimu se provádí pomocí souboru.gvimrc v domovském adresáři uživatele. Do tohoto souboru má smysl psát pouze nastavení pro grafický režim. Např. nastavení fontu: set guifont= misc fixed medium r normal 15 * iso8859 2 Pro nastavení výchozí velikosti okna editoru je možné použít nastavení výchozího počtu řádků a sloupců: set lines=řádků set columns=sloupců Pro přidání položek do menu se používají příkazy (n i v)menu položka.v.menu příkazy, kde nmenu slouží pro přidání do menu, které funguje v normálním režimu (příkazovém) imenu slouží pro přidání do menu, které funguje ve vkládacím režimu (psaní textu) vmenu slouží pro přidání do menu, které funguje ve vizuálním režimu (označení textu) cesta v menu se odděluje znakem. pokud je před nějakým znakem v hlavním menu znak &, jedná se o klávesovou zkratku do příslušného menu <tab> v názvu položky menu představuje oddělovač části vlevo a vpravo (obvykle popis makra) Vyzkoušejte přidání položky menu: :nmenu &Pokus.test<tab>testik ixtest<esc> Ke zrušení položky (celého) podmenu použijte příkaz (n i v)unmenu, např.: :nunmenu Pokus Zvýrazňování syntaxe Pro nastavení používání zvýrazňování se používá příkaz syntax Zapnutí zvýrazňování syntaxe :sy[ntax] on Vypnutí zvýrazňování syntaxe :sy[ntax] off Vim se pokusí odhadnout (na základě přípony) jazyk, ve kterém je dokument psán a podle toho zvolit pravidla pro obravování. Pokud není možné určit jazyk (např. soubor nemá příponu), nebo jej určí špatně (např. pro různé formáty se používá přípona.txt), je možné jazyk (syntaxi) určit ručně: :set syntax=... Nastavení barev textu se odvozuje od třídy části textu, např. komentář, textový řetězec, jméno proměnné, atd. Příkaz pro nastavení barvy je highlight (zkráceně hi). Např.: highlight String term=bold ctermfg=green guifg=#906090 Barvu lze specifikovat pro různá zařízení: jednobarevný terminál: term barevný terminál: ctermfg, ctermbg grafický editor: guifg, guibg
Je možné jednoduše měnit mnoho barev různých částí textu najednou pomocí barevných schémat. Pro volbu barevného schématu je možné použít příkaz:<color vim>:colorscheme název_schématu</code> Velký přehled barevných schémat naleznete na adrese http://code.google.com/p/vimcolorschemetest/ [http://code.google.com/p/vimcolorschemetest/] Pokud chcete vyexportovat vzhled dokumentu z vimu do HTML, použijte příkaz :TOhtml (http://www.root.cz/clanky/textovy editor vim jako ide 10 cast ruzne tipy a triky/nazory/394695/ [http://www.root.cz/clanky/textovy editor vim jako ide 10 cast ruzne tipy a triky/nazory/394695/]) Automatické odsazování Pro automatické odsazování existuje několik možností, které se liší svými schopnostmi a zaměřením (vyzkoušejte jejich rozdíly): :set smartindent :set cindent :set autoindent Pro odsazování se obvykle používá tabelátor nebo několik mezer. To je možné ovlivnit volbami: :set expandtab vkládá mezery :set noexpandtab vkládá tabelátory Pro převod tabelátorů/mezer u již napsaného textu je možné použít příkaz :retab. Pro nastavení odsazování je možné použít několik parametrů: tabstop=n šířka tabelátoru (default: 8) expandtab stisk klávesy TAB se expanduje na příslušný počet mezer shiftwidth=n šířka při změně odsazení pomocí příkazů «a» softtabstop=n šířka mezery přo stislu klávesy TAB pokud je softtabstop < tabstop a je vypnuta volba expandtab, použije se kombinace tabelátorů a mezer pokud je softtabstop = tabstop a je vypnuta volba expandtab, použijí se vždy tabelátory pokud je zapnuta volba expandtab, použijí se vždy mezery http://vimdoc.sourceforge.net/htmldoc/options.html# [http://vimdoc.sourceforge.net/htmldoc/options.html#]'tabstop' Např. (http://stackoverflow.com/a/2092356/1077830 [http://stackoverflow.com/a/2092356/1077830]): set expandtab set tabstop=4 set shiftwidth=4 map <F2> :retab <CR> :wq! <CR> Mapování příkazů na klávesy Sekvenci příkazů vimu lze namapovat na určitou klávesu (kombinaci kláves), nebo jejich sekvenci. Používá se k tomu účelu příkaz :map v různých variantách podle režimu, ve kterém má mapování fungovat, např.: map příkazový režim imap vkládací (insert) režim vmap vizuální (visual) režim Pro zamezení rekurzivního mapování je možné použít příkaz :noremap a jeho příslušné varianty podle režimu práce.
Samotný příkaz zobrazí aktuální mapování kláves, např.: <F4> <F3> <F2> <S Insert> :w<cr>:silent execute "!svn m 'Drobna zmena' ci"<cr>:silent execute "!svn up"<cr>:redraw!<cr> :silent execute "!svn up"<cr>:redraw!<cr>:e<cr> :w<cr>:! svn ci<cr>:silent execute "!svn up"<cr>:redraw!<cr> <MiddleMouse> Pro jejich definici se používá syntaxe: :map zkratka příkazy. Příklad mapování příkazů na klávesy z http://www.root.cz/clanky/textovy editor vim jako ide 10 cast ruzne tipy a triky/ [http://www.root.cz/clanky/textovy editor vim jako ide 10 cast ruzne tipy a triky/]. " 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> << " 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 http://www.root.cz/clanky/vim na plny vykon 4/ [http://www.root.cz/clanky/vim na plny vykon 4/] Konfigurace podle typu souboru Příkazem :autocmd je možné navázat příkaz na určitou událost při odpovídajícím vzoru názvu souboru libovolnou akci. Například při otevření souboru (BufRead) nebo vytvoření nového souboru (BufNewFile) s konkrétní příponou (např..html) načíst konfigurační soubor (source) nebo obsah souboru (r) s kostrou. autocmd BufRead,BufNewFile *.html source ~/.vim/html.vim autocmd BufRead,BufNewFile *.htm source ~/.vim/html.vim autocmd BufNewFile *.html r ~/.vim/empty.html autocmd BufNewFile *.tex r ~/.vim/empty.tex Folding Vim/gvim umožňuje skládání (folding) textu, kdy v danou chvíli nezajímavá část textu je sbalena do jedno řádku. Prostudujte si krátký návod na http://www.nti.tul.cz/~satrapa/docs/vim/folding.htm [http://www.nti.tul.cz/~satrapa/docs/vim/folding.htm]. Další konfigurace Příklad možné konfigurace editoru včetně komentářů k jednotlivým nastavením. " Zapnutí číslování řádků. Pro vypnutí nastavte "set nonu" set nu " Zapnutí zvýrazňování syntaxe syntax on " Automatické odsazování závislé na typu souboru filetype indent on set autoindent
" Hledání citlivé na velikost písmen set ic " Zvýrazňování výsledků hledání set hls " Zalamování řádků (místo pokračování v jednom dlouhém) set lbr " Změna barevného schématu ze standardního na delek colorscheme delek " Pokud chcete používát styl odsazování podle jazyka C, odkomentujte následující řádek " set cin " Nastavení tabulátoru na požadovanou velikost ve znacích. Za =CISLO u všech tří nastavení uveďte délku tabulátoru set tabstop=3 set shiftwidth=3 set ts=3 Porovnávání verzí souborů Vim/gvim lze spustit v režimu porovnávání verzí souborů. Jedná se o příkazy: vimdiff soubor.old soubor.new gvimdiff soubor.old soubor.new Shodné části textů jsou sbalené, na předešlou/následující změnu je možné skočit příkazem [c, resp. ]c. Zdroje a odkazy http://www.root.cz/clanky/jak si prizpusobit vim/ [http://www.root.cz/clanky/jak si prizpusobit vim/] (+další části) http://www.nti.tul.cz/~satrapa/docs/vim [http://www.nti.tul.cz/~satrapa/docs/vim] http://www.abclinuxu.cz/clanky/navody/editor vim prakticky i [http://www.abclinuxu.cz/clanky/navody/editor vim prakticky i] http://www.abclinuxu.cz/clanky/navody/editor vim prakticky ii [http://www.abclinuxu.cz/clanky/navody/editor vim prakticky ii] http://www.root.cz/clanky/textovy editor vim jako ide 10 cast ruzne tipy a triky/ [http://www.root.cz/clanky/textovy editor vimjako ide 10 cast ruzne tipy a triky/] http://www.root.cz/clanky/textovy editor vim jako ide/ [http://www.root.cz/clanky/textovy editor vim jako ide/] (+další části) http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html [http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html] http://www.root.cz/clanky/vim sedm prvni cast/ [http://www.root.cz/clanky/vim sedm prvni cast/] http://www.root.cz/clanky/outline editory the vim outliner/ [http://www.root.cz/clanky/outline editory the vim outliner/] http://www.root.cz/clanky/vim na plny vykon 2/ [http://www.root.cz/clanky/vim na plny vykon 2/] http://www.root.cz/clanky/vim na plny vykon vimrc/ [http://www.root.cz/clanky/vim na plny vykon vimrc/] http://www.root.cz/clanky/nej vim pluginy/ [http://www.root.cz/clanky/nej vim pluginy/] (+další části) http://www.root.cz/clanky/kostry dokumentu ve vim/ [http://www.root.cz/clanky/kostry dokumentu ve vim/]