☰ menu
Pavel Satrapa

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.