Jak vypadß vim

Vzhled vim nenφ nijak neobvykl² ani osl≥ujφcφ. Jeho obrazovka je rozd∞lena na obvyklΘ dv∞ Φßsti: editaΦnφ pole, zabφrajφcφ jejφ drtivou v∞t╣inu, a stavov² °ßdek, pro n∞j╛ je vyhrazen poslednφ °ßdek obrazovky.

Obrazovka programu vim

V dal╣φm textu budu malinko p°edbφhat d∞nφ a prozradφm, jak lze ovliv≥ovat vzhled vim. Budu takΘ operovat s pojmy, kterΘ jsem dosud nevysv∞tlil (nap°φklad re╛imy Φinnosti). Nenechte se tφm vyvΘst z rovnovßhy a pozd∞ji se k tΘto strßnce p°φpadn∞ vra╗te.

Zobrazenφ textu

Text je zobrazen celkem p°irozen∞ po jednotliv²ch °ßdcφch. Ji╛ v p°edchozφ kapitole jsem naznaΦil, ╛e neexistujφcφ °ßdky (pokud obsah souboru nedokß╛e naplnit celou obrazovku) jsou znßzorn∞ny prßzdn²m °ßdkem, zahßjen²m znakem vlnka (~).

ProblΘm vyvolßvajφ °ßdky, jejich╛ dΘlka p°esahuje kapacitu obrazovky. vim je obvykle rozd∞lφ do n∞kolika po sob∞ jdoucφch °ßdk∙. TakovΘ chovßnφ lze zapnout p°φkazem :set wrap. Jestli╛e se takto rozd∞len² °ßdek ocitne ve spodnφ Φßsti obrazovky, m∙╛e se stßt, ╛e jeho konec (ulo╛en² na nßsledujφcφch °ßdcφch) se ji╛ na obrazovku nevejde. V takovΘm p°φpad∞ je poslednφ °ßdek nahrazen prßzdn²m °ßdkem, zahßjen²m znakem zavinßΦ (@). Signalizuje cosi jako "pokraΦovßnφ p°φ╣t∞". Kdy╛ posunete obsah obrazovky vzh∙ru, postupn∞ se objevφ dal╣φ pokraΦujφcφ °ßdky.

Zcela fatßlnφ situace nastane, kdy╛ se objevφ extrasuperveledlouh² °ßdek, kter² musφ b²t rozlo╛en do vφce °ßdk∙, ne╛ je v²╣ka obrazovky. Jeho konec pak za ╛ßdn²ch okolnostφ neuvidφte. vim zobrazφ, co se do n∞j vejde. Pokud °ßdek zaΦφnß na prvnφm °ßdku obrazovky, celou ji zaplnφ a je╣t∞ by bylo pot°eba pokraΦovat, poslednφ °ßdek editor naplnφ sam²mi znaky @. Tφm naznaΦuje, ╛e konec °ßdku je nezobraziteln². Pokud se text posune o jeden °ßdek vzh∙ru, vyjede zaΦßtek °ßdku z obrazovky a tudφ╛ cel² zmizφ.

Rozd∞lenφ v re╛imu wrap standardn∞ probφhß bez ohledu na obsah °ßdku. vim sm∞le rozd∞lφ °ßdek uprost°ed slova. Pokud v╣ak zapnete :set linebreak, mß povoleno rozd∞lovßnφ jen mezi slovy, tedy v mφst∞ v²skytu mezery nebo tabulßtoru. Dlu╛no p°iznat, ╛e v tomto re╛imu jen obtφ╛n∞ poznßte, kter² °ßdek je rozd∞len automaticky pro pot°eby zobrazenφ a kdy se jednß o dva °ßdky editovanΘho textu. Zp∞t k p∙vodnφmu "tvrdΘmu" re╛imu rozd∞lovßnφ se m∙╛ete vrßtit pomocφ :set nolinebreak.

Jestli╛e vßm toto automatickΘ rozklßdßnφ °ßdk∙ nevyhovuje, m∙╛ete jej vypnout p°φkazem :set nowrap. vim pak ponechß ka╛d² °ßdek na jedinΘm °ßdku a pokud p°esahuje ╣φ°ku obrazovky, zbytek prost∞ zmizφ za jejφm okrajem. Samoz°ejm∞ na n∞j lze p°esunout kurzor a tak si jej prohlΘdnout. To je jedinΘ °e╣enφ v²╣e popsanΘho problΘmu se super°ßdkem.

V n∞kter²ch p°φpadech (nap°φklad p°i editaci zdrojovΘho textu programu) se m∙╛e hodit nechat si zobrazit Φφsla jednotliv²ch °ßdk∙. To zajistφ :set number. V takovΘm p°φpad∞ by v╣ak °ßdky m∞ly b²t o n∞co krat╣φ (pro Φφslo je vyhrazeno 8~znak∙ na zaΦßtku). Pokud tu a tam n∞kter² dΘlku p°ekroΦφ, doporuΦuji kombinovat tento re╛im se :set nowrap. PokraΦovacφ °ßdky toti╛ zaΦφnajφ od prvnφho sloupce obrazovky a nemile se mφchajφ s Φφsly. O likvidaci Φφsel °ßdk∙ se postarß :set nonumber.

Stavov² °ßdek

Jak b²vß zvykem, obsahuje informace o va╣φ momentßlnφ Φinnosti. Zobrazuje t°i informace:

re╛im Φinnosti
Pokud je levß Φßst stavovΘho °ßdku prßzdnß, nachßzφte se v normßlnφm re╛imu (nebo je zobrazovßnφ re╛imu vypnuto :-). V klasickΘm vklßdacφm re╛imu zde najdete °et∞zec -- INSERT --, v jeho p°episovacφ variant∞ -- REPLACE --. Zobrazovßnφ zapnete/vypnete p°φkazy :set showmode a :set noshowmode.


zaΦßtek p°φkazu
╪ada p°φkaz∙ vim se zadßvß posloupnostφ znak∙. Nap°φklad chcete-li smazat v╣e a╛ do konce odstavce, pou╛ijete kombinaci d}. Mßte-li zapnutou tuto volbu, zhruba v pravΘ t°etin∞ obrazovky se postupn∞ objevujφ znaky, tvo°φcφ zadßvan² p°φkaz. Mßte tedy vizußlnφ kontrolu, zda zadßvßnφ postupuje podle va╣ich p°edstav. Zapφnß a vypφnß se p°φkazy :set showcmd a :set noshowcmd.


pozici kurzoru
Poloha kurzoru je zobrazena v pravΘ Φßsti stavovΘho °ßdku. Sklßdß se ze dvou Φφsel, odd∞len²ch Φßrkou. Prvnφ udßvß Φφslo °ßdku a druhΘ Φφslo sloupce znaku, na n∞m╛ se momentßln∞ nachßzφ kurzor. Zapnout a vypnout tuto signalizaci m∙╛ete p°φkazy :set ruler a :set noruler.

V okam╛iku, kdy v normßlnφm re╛imu napφ╣ete dvojteΦku, zm∞nφ se stavov² °ßdek na °ßdek p°φkazov². Kurzor se p°est∞huje sem a umo╛nφ vßm napsat odpovφdajφcφ p°φkaz. Nap°φklad v²╣e zmi≥ovanΘ instrukce pro ovlivn∞nφ vzhledu vim pat°φ do tΘto skupiny.

<-- predchozi  [obsah]  dalsi -->
© 1997, 1998 Pavel Satrapa