Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

VIM na plný výkon: úpravy vzhledu

Další várka tipů pro nastavení vašeho .vimrc souboru. Dnes se podíváme na úpravy vzhledu VIMu a také na volby, které přímo ovlivňují práci s textem.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

Nastavení vzhledu

Následující výčet nastavení je šitý na míru grafické verzi VIMu. Jmenované volby ale většinou vyhovují i v negrafickém provedení editoru. Záleží na každém z vás, která nastavení použijete. Pro více informací o jednotlivých volbách doporučuji nahlížet do nápovědy VIMu příkazem :help ‚jméno_volby‘ (včetně apostrofů kolem názvu).

set display=lastline 

Zobrazovat alespoň část řádku místo nehezkých @.

set guioptions=agimrtTb 

Různá nastavení pro grafickou verzi VIMu. Pomocí této volby se ovlivňuje způsob, jakým VIM zachází s vizuálními bloky, určují se pozice scrollbarů, ikony, zobrazování menu, toolbaru atd. (Více viz nápovědu.)

Doby malých rozlišení obrazovek jsou dávno hluboko v nostalgické minulosti, proto si často můžeme dovolit jisté plýtvání prostorem. Ve VIMu například tím, že necháme natrvalo zapnout tzv. statusline (bílý řádek se stavovými informacemi pod obsahem editovaného bufferu) a nastavit ho, aby zobrazoval různé informace o upravovaném souboru:

set laststatus=2
set statusline=%1*%n:%*\ %<%f\ %y%m%2*%r%*%=[%b,0x%B]\ \ %l/%L,%c%V\ \ %P
highlight User1 guibg=white guifg=blue
highlight User2 guibg=white guifg=red 

Volba laststatus=2 znamená, že chceme, aby byl stavový řádek zapnutý vždy (1 = jen když je ve VIMu více „oken“ s buffery, 0 = nikdy). Příkaz set statusline nastavuje vzhled stavového řádku. Zběsilý řetězec v příkazu popisuje následující design řádku: číslo bufferu v barvě User1, název editovaného souboru s relativní cestou následovaný rozpoznaným typem souboru, značka modifikace, značka pro read-only soubory v barvě User2 a zprava zarovnané ASCII kódy znaku pod kurzorem (v desítkovém a šestnáctkovém formátu), číslo řádku lomeno počet všech řádků, číslo sloupce, číslo relativního sloupce, pokud se liší od předchozí hodnoty, a konečně procentuální poloha vůči celému souboru. Dvojice příkazů highlight nastavují barvu User1 na modrou aUser2 na červenou s bílým pozadím. Uvedenou sadou příkazů získáte velice komfortní stavový řádek (viz obrázek).

Ukázka stavového řádku

Pokud nehodláte laststatus nastavovat na hodnotu 2, zapněte si alespoň zobrazování polohy kurzoru při vypnutém stavovém řádku:

set ruler
set rulerformat=%3b\ \ %l,%c%V%=%P 

Tzv. ruler se zobrazuje na posledním řádku VIMu, který je beztak vyhrazen pro příkazy uživatele… Více informací o stavovém řádku i ruleru podá nápověda VIMu (:help ‚statusline‘, :help ‚ruler‘ atd.).

set showmatch 

je výborná pomůcka zejména pro programátory. Při napsání pravé závorky (), ] nebo }) kurzor krátce zabliká na odpovídající levé závorce. Pokud pravé závorce žádná levá neodpovídá, editor pípne.

set showcmd 

říká editoru, aby na posledním řádku vpravo zobrazoval právě psaný příkaz. U složitějších mazacích konstrukcí tak máte možnost sledovat, co jste už namačkali a co ne.

set title
set titlestring=VIM\ -\ %t 

touto dvojicí určujeme, jak má vypadat titulek okna VIMu. V našem případě to je řetězec „VIM“, pomlčka a název souboru.

set mousemodel=popup 

pravé tlačítko myši má v grafické verzi VIMu otevírat vyskakovací menu.

set scrolloff=5 

Minimální počet řádků obrazovky, které mají být vidět před a za kurzorem. Získáte tak lepší přehled o místě v textu, na kterém se právě nacházíte. Pokud se vám zdá 5 moc, přijatelné minimum je nejspíš 3.

Podobnou volbou, ale pro horizontální scrollování je:

set sidescroll=5 

Parametry editace

Konečně se dostáváme k tomu, k čemu je VIM určen: k editování textů. Výrazné ulehčení zejména programátorům nabízí VIMem podporovaný mechanismus automatického odsazování. Základními volbami pro tuto pomůcku je následující trojice konfiguračních příkazů.

set autoindent 

Při vytvoření nového řádku se automaticky použije odsazení z předchozího řádku. (Tj. automaticky se na začátek nového řádku vloží tolik mezer, kolik jich je na začátku minulého řádku.)

set smartindent 

Zavede se navíc „trochu chytřejší odsazování“ – např. VIM automaticky zvětší odsazení po řádku končícím „{“ nebo upraví odsazení po napsání „}“ na začátku nového řádku.

set expandtab 

V insert módu použije po stisku tabulátoru patřičný počet mezer místo vložení znaku pro tabulátor. Mezery se místo tabulátoru vkládají také při automatickém odsazování a odsazování pomocí příkazů < a >. Zdá se mi přirozenější pro odsazování používat mezery než tabulátory, protože pak máte jistotu, že váš kód bude vypadat všude stejně. Pokud chcete do souboru přece jenom vložit znak tabulátoru (např. při editování souboru Makefile, kde je nezbytným), můžete použít CTRL-V a Tab.

set backspace=indent,eol,start 

Nastavení chování kláves Backspace, Delete a jim podobným, že mají umět mazat vše: odsazení autoindentem, konce řádků (spojování řádků dohromady), i přes místo, kde začalo vkládání.

let mapleader = ","
let maplocalleader = "," 

Nastavení globálního a lokálního předřaďovače. Předřaďovače se používají pro různá mapování zejména v insert módu. Já je mám nastaveny stejně, aby se nepletly.

set nojoinspaces 

VIM umí automaticky vkládat dvě mezery po „.“, „?“ a „!“ při příkazu spojení řádků (J). Jelikož je tato úprava v našich zeměpisných šířkách nezvyklá, tímto nastavením ji deaktivujeme.

set shiftwidth=2 

Počet mezer vkládaných při (automatickém) odsazování.

set shiftround 

Zaokrouhluj počet mezer při odsazování na násobek shiftwidth. (Týká se odsazování pomocí příkazů < a >.)

set nowrap 

Rozčiluje-li vás, že VIM fyzicky dlouhý řádek zobrazí do několika logických řádků na obrazovce, použijte tuto volbu. Po její aplikaci budou dlouhé řádky jednoduše „mizet“ za pravým okrajem okna, jak jsme zvyklí z jiných editorů.

set textwidth=78 

Nastavení šířky textu. Pokud při psaní dosáhnete nastavené vzdálenosti od levého okraje, řádek se automaticky zlomí na nový. Chcete-li naopak tuto možnost deaktivovat, nastavte textwidth na 0.

vnoremap p <Esc>:let
current_reg = @"<CR>gvdi<C-R>=current_reg<CR><Esc> 

Tenhle příkaz jsem si „vypůjčil“ z ukázkového .vimrc souboru Brama Moolenaara, hlavního tvůrce editoru VIM. Měl by zapříčinit přirozenější chování klávesy p (paste). V módu vizuálních bloků se stiskem p nahradí označený text textem v registru (schránce).

Poslední volbou dnešního dne, kterou jsem shledal zajímavou, je:

set clipboard=unnamed 

Vše, co se ukládá do „unnamed“ registru, se bude ukládat zároveň i do clipboardu. To znamená, že cokoliv uložíte pomocí y (yank) apod., se dává i do clipboardu, takže uchovaný text lze přímo vlepit do jiné aplikace. Podobně se chová i p (paste).

davame_internetu_obsah
       

Na závěr by se slušelo poznamenat, že výčet konfiguračních voleb prezentovaných v tomto a minulém dílu není v žádném případě kompletní. VIM podporuje desítky různých nastavení. V textu jsem se snažil vybrat jen ty, o kterých si myslím, že jsou nejzajímavější a nejužitečnější. Výčet všech možných voleb najdete v nápovědě VIMu (:help option-summary).

Tímto malý výčet základních nastavení VIMu končí, avšak seriál o ladění výkonu VIMu nikoliv. Příští týden jedeme dál – podíváme se na pokročilejší možnosti konfigurace.

Michal Burda

Michal Burda

Michal Burda vystudoval informatiku a aplikovanou matematiku a nyní pracuje na Ostravské univerzitě jako odborný asistent. Zajímá se o data mining, Javu a Linux.

Školení: Linux – Firemní server

Na třídenním školení se naučíte nainstalovat a spravovat kompletní linuxový server do Vaší firmy se všemi základními službami, které potřebujete pro provoz Vaší sítě, firemních emailů a webových stránek.

Podrobnější informace a přihláška

Ohodnoťte jako ve škole:
Průměrná známka 3,14

Přehled názorů

Umisteni prikazove radky
ziav 9. 12. 2003 07:17
Nový
└ 
Re: Barvicky SEARCH
gilhad 11. 12. 2003 15:17
Nový
barvy ve verzi pro tisk
Paolo D. 9. 12. 2003 08:58
Nový
└ 
Re: barvy ve verzi pro tisk
Milan Vančura 9. 12. 2003 11:05
Nový
 
└ 
Re: barvy ve verzi pro tisk
jam 9. 12. 2003 12:53
Nový
 
 
└ 
Re: barvy ve verzi pro tisk
Milan Vančura 10. 12. 2003 18:27
Nový
 
 
 
└ 
Re: barvy ve verzi pro tisk
Michal Burda 11. 12. 2003 14:24
Nový
, jako mapleader
kvr 9. 12. 2003 09:40
Nový
├ 
Re: , jako mapleader
Michal Krause 9. 12. 2003 10:48
Nový
│
└ 
Re: , jako mapleader
kvr 10. 12. 2003 08:34
Nový
│
 
└ 
Re: , jako mapleader
Pavel Tišnovský 11. 12. 2003 08:17
Nový
└ 
Re: , jako mapleader
anonymní uživatel 21. 6. 2005 02:44
Nový
[OT] odsazovani tabelatorem
michal 9. 12. 2003 10:21
Nový
└ 
Re: [OT] odsazovani tabelatorem
Michal Krause 9. 12. 2003 10:59
Nový
 
├ 
Re: [OT] odsazovani tabelatorem
gooff 9. 12. 2003 11:57
Nový
 
│
└ 
Re: [OT] odsazovani tabelatorem
met - Martin Hassman 9. 12. 2003 12:06
Nový
 
│
 
├ 
Re: [OT] odsazovani tabelatorem
Michal Kara 9. 12. 2003 13:19
Nový
 
│
 
└ 
Re: [OT] odsazovani tabelatorem
gmmns 16. 12. 2003 22:39
Nový
 
└ 
Re: [OT] odsazovani tabelatorem
Pavel Tišnovský 11. 12. 2003 08:23
Nový
 
 
├ 
Re: [OT] odsazovani tabelatorem
met - Martin Hassman 11. 12. 2003 09:24
Nový
 
 
│
└ 
Re: [OT] odsazovani tabelatorem
Pavel Tišnovský 11. 12. 2003 10:07
Nový
 
 
└ 
Re: [OT] odsazovani tabelatorem
Jakub Vysoky 1. 2. 2004 12:20
Nový
bez titulku
anonymní uživatel 9. 12. 2003 12:56
Nový
└ 
klavesy Home a End
Karel Maly 9. 12. 2003 22:47
Nový
 
├ 
Re: klavesy Home a End
kvr 10. 12. 2003 08:27
Nový
 
└ 
Re: klavesy Home a End
ziav 11. 12. 2003 07:17
Nový
mezery jako tabulatory ?
Ava 10. 12. 2003 12:38
Nový
├ 
Re: mezery jako tabulatory ?
Michal Burda 10. 12. 2003 12:51
Nový
└ 
Re: mezery jako tabulatory ?
_J 10. 12. 2003 15:09
Nový
 
└ 
Re: mezery jako tabulatory ?
Michal Burda 11. 12. 2003 14:29
Nový
 
 
└ 
Re: mezery jako tabulatory ?
_J 11. 12. 2003 15:30
Nový
premapovat v insertu ^sipka na b/w
gilhad 11. 12. 2003 15:14
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem