Okna

Okna jsou jednou z velmi příjemných vymožeností vim. Umožňují vám vidět zároveň několik souborů (nebo třeba několik pohledů do jednoho a toho samého souboru), libovolně je střídat a přenášet části textu z jednoho do druhého. Na obrázku vidíte vim se dvěma otevřenými okny.

[Obrázek]

Otevírání a zavírání oken

Nejzákladnějším způsobem, jak spustit vim s několika okny je zadat mu na příkazovém řádku volbu -o. V takovém případě otevře okno pro každý soubor, který má editovat.

Příklad:
Příkazem
vim -o histor.htm okna.htm
jsem spustil vim, jehož obrazovka bude rozdělena na dvě okna. Jedno bude obsahovat soubor histor.htm a druhé okna.htm. Výsledek vidíte výše.
Často si však až během editace vzpomenete, že byste rádi na chvíli nahlédli i do jiného souboru a třeba z něj kousek převzali do toho aktuálního. V takovém případě poslouží příkaz :split <soubor>, kde <soubor> je jméno souboru, který se má v okně objevit. Samozřejmě je nemusíte zadávat. V takovém případě se vám objeví prázdné okno.

Zavírání okna se nijak neliší od uzavření souboru - použijte prostě :q (případně :q!, :wq či ZZ - podle toho, zda jste obsah okna změnili a zda jej chcete uložit).

Při práci s okny se příkaz :q chová poněkud odlišně, než bez nich. Jestliže totiž máte otevřeno další okno se stejným souborem, nezavírá se soubor, ale jen okno. Proto se editor nestará o případné neuložené změny. Teprve při zavírání posledního okna do souboru použije klasické chování.

Jestliže se zároveň jedná o poslední okno editoru, bude současně s oknem ukončen i vim. Běžný "neokenní" režim práce je vlastně režim "okenní" s jediným otevřeným oknem.

Používání

Každé okno jest chápati jako okénko, kterým nahlížíte do obsahu souboru. Můžte si jich otevřít mnoho, ale v praxi nejčastěji pracujete se dvěma okny - v jenom je "hlavní" editovaý soubor a ve druhém soubor, do kterého momentálně chcete nahlédnout či z něj něco zkopírovat.

Všechny okenní operace se vyvolávají dvojicí znaků, z nichž první je Ctrl-W (W jako window). Základem použití oken je pochopitelně poskakování z jednoho do druhého. Asi nejčastěji používaný je příkaz Ctrl-W Ctrl-W. Přesune kurzor do okna pod aktuálním. Jste-li v nejnižším okně obrazovky, přetočí se zpět nahoru. vim si pamatuje pozici, ze které jste dotyčné okno opustili a při návratu vás posadí přímo na ni.

Pozor! Příkazy pro práci s okny je třeba provádět v normálním režimu. Ve vkládacím totiž Ctrl-W vymaže slovo před kurzorem.

Poměrně intuitivní je i další způsob přepínání oken: po Ctrl-W stiskněte některý z příkazů pro pohyb nahoru či dolů a kurzor přejde do sousedního okna v uvedeném směru. Takže Ctrl-W [šipka nahoru] nebo Ctrl-W k posouvají kurzor do vyššího okna, zatímco při Ctrl-W [šipka dolů] či Ctrl-W j naopak klesáte.

Pokud vaše verze vim podporuje myš, můžete střídat okna prostým klepnutím myši. Kurzor se totiž přesune na pozici klepnutí, ať je kdekoli. Takže případně změní aktuální okno. Klepnete-li na stavový řádek okna, přestěhuje se kurzor do něj na pozici, ze které jste je naposledy opustili.

Změny uspořádání

Člověku je většinou jedno, v jakém pořadí se okna na obrazovce vyskytují. Pokud by to náhodou nebyla pravda, příkaz Ctrl-W r rotuje okna směrem dolů, Ctrl-W R rotuje okna nahoru a Ctrl-W x vymění aktuální okno s oknem pod ním.

Naopak poměrně častou potřebou je změna velikosti oken. Implicitně je vim nastaven tak, že při vytvoření nového okna změní velikosti všech stávajících tak, aby všechna okna byla stejně vysoká. Toto chování řídí volba equalalways. Pokud ji vypnete (:set noequalalways), rozdělí se při vytváření nového okna to stávající na dvě poloviny a výšky ostatních oken zůstanou zachovány.

Když vám stávající velikost okna nevyhovuje, můžete ji upravit. Příkaz Ctrl-W + ji zvětšuje a Ctrl-W - zmenšuje. Uvedete-li před nimi číslo, zvětší/zmenší se o daný počet řádků. Implicitní hodnotou je 1. Pomocí Ctrl-W _ nastavíte výšku okna přesně na číslo, které jste uvedli před příkazem. Implicitně použije maximální výšku okna (všem ostatním ponechá jediný řádek).

Změnu velikosti lze zajistit i automaticky. Volba winheight totiž udává minimální požadovanou výšku aktuálního okna. Nastavíte-li třeba :set winheight=10 a přejdete s kurzorem do malinkého okénka, roztáhne se na výšku deseti řádků. Když do winheight uložíte velkou hodnotu (třeba 100), bude aktuální okno vždy roztaženo na maximální plochu a všechna ostatní degradována na jediný řádek. Někomu takové chování vyhovuje, někdo dává přednost stabilnímu uspořádání oken. Volba je na vás.

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