Formátování textu
Abych předešel případnému nedorozumění, předem vyjasním pozice. vim je ASCII editor, nikoli typografický nástroj. V této části budu proto mluvit o formátování textu, tedy uspořádání jednotlivých znaků do řádků a sloupců. Nebudu se zabývat sazbou, čili estetickou úpravou textu, která vyžaduje práci s proporcionálním písmem, jeho různými druhy a velikostmi. V oblasti sazby nemá vim co nabídnout. Může posloužit pouze jako nástroj k editaci zdrojových textů pro specializované typografické programy, jako je třeba TeX. Sám ho používám právě tímto způsobem.
Pravý okraj a jeho dodržování
Původní vi byl navržen především k vytváření zdrojových textů programů. V nich bývají řádky krátké a proto problém hlídání pravého okraje nebyl nijak zvlášť palčivý. Pro editaci běžných textů je však tato vlastnost nezbytná.
Ve vim lze nastavit šířku řádku (čili polohu pravého okraje) pomocí
:set textwidth=šířka
kde šířka udává počet znaků na řádku. Implicitní hodnotou je nula, při
níž vim pravý okraj nehlídá a řádky mohou být široké, co hrdlo ráčí.
Jakmile do textwidth
uložíte nenulovou hodnotu, začne
se editor starat o pravý okraj. Dělá to obvyklým způsobem. Jakmile jej při
psaní překročíte, vyhledá poslední mezeru od konce řádku, v jejím místě řádek
ukončí a slovo, které právě píšete, přesune na začátek dalšího.
Při zápisu se může uplanit též automatické odsazování. Zapnete je pomocí :set autoindent
. Jakmile řádek zahájíte mezerou či
několika mezerami, vim automaticky bude přidávat stejný počet mezer na
začátek každého řádku pod ním. Existují ještě dva další režimy odsazování
(:set smartindent
a :set cindent
), které vycházejí vstříc formátování
zdrojových textů v jazyce C. Při psaní běžných textů občas působí
problémy, nicméně :set smartindent
představuje
celkem schůdnou univerzální volbu pro všechny případy.
Změna formátování
Při úpravách textu snadno docílíte toho, že řádek překročí pravý okraj nebo se naopak neúměrně zkrátí. V takových případech přichází ke slovu přeformátování, které text znovu uspořádá v rámci současných okrajů.
Základním příkazem pro přeformátování části textu je gq
. Za ním uveďte pohybový příkaz, který určí část textu,
jíž se formátování dotkne. Velmi často jsou používány kombinace gqj
(formátuje tento a následující řádek) a gq}
(formátuje od pozice kurzoru až do konce odstavce).
Kurzor je po provedení formátovacího příkazu přemístěn na místo, kam by jej
přesunul dotyčný pohybový příkaz. Díky tomu lze snadno pokračovat ve
formátování dalších prvků textu prostým opakováním (příkaz .
).
Speciálním případem je kombinace gqap
(mnemotechnika: „ap“ je z anglického „a paragraph“). Ta
zajistí formátování celého odstavce, v němž se momentálně nachází kurzor. Je
přibližně ekvivalentem kombinace {gq}
(návrat na
začátek odstavce a formátování textu až po jeho konce). Tato operace je velmi
praktická, protože často provedete zásah kdesi v odstavci a následně jej chcete
celý přerovnat.
Zarovnání textu
Kromě nejběžnějšího formátování, dodržujícího předepsaný pravý okraj, můžete použít ještě několik méně obvyklých způsobů. Všechny se vyvolávají v podobě ex-příkazů a týkají se proto vždy skupiny řádků:
příkaz | význam |
---|---|
:ce nebo :center |
na středovou osu |
:ri nebo :right |
k pravému okraji |
:le nebo :left |
k levému okraji |
Rozsah řádků, kterých se má tato změna dotknout, je nejvýhodnější určit ve
vizuálním režimu. V případě :right
a :center
můžete jako
parametr stanovit šířku řádku, která se má při formátování použít. Například
centrování pro řádek o šířce 50 znaků zajistí příkaz
:ce 50
Pokud údaj chybí, použije se aktuální hodnota textwidth
a jestliže je nulová, použije vim šířku
obrazovky či okna. Zadáte-li číselný parametr příkazu :left
, bude pochopen jako počet mezer, které má vložit před
každý přeformátovaný řádek. Implicitní hodnotou je nula.
© 2016 Pavel Satrapa