☰ menu
Pavel Satrapa

Vizuální režim

Práce s bloky, kterou jsem popsal v části o editaci textu, je dosti neobvyklá. Kombinace editačního příkazu (např. zkopírování) s pohybem je v řadě případů geniální a několikanásobně zrychlí vaši práci. Nicméně nelze popírat, že přístup běžných editorů, kdy se nejprve kurzorem vyznačí blok textu a na něj pak provede kýžená operace, také není k zahození. Pokud editovaný blok není jasně vymezen určitou ucelenou částí textu (např. odstavec či řádek), bývá interaktivní způsob zadávání bloku výhodnější. Proto jej vim zařadil do svého repertoáru.

Vyznačení bloku

Vizuální režim ztělesňuje klasický způsob práce s bloky. Nejprve kurzorem vymezíte, odkud kam bude sahat editační zásah a pak jej provedete. Během vyznačování bloku se vim nachází ve speciálním – vizuálním – režimu.

Jeho nejklasičtějším zahájením je klávesa v. Když po jejím stisknutí začnete pohybovat kurzorem, bude za sebou zanechávat stopu v podobě znaků zobrazených inverzně. Všechny takto zvýrazněné znaky patří do vybraného bloku. Pro pohyb kurzoru můžete používat všechny pohybové příkazy včetně hledání a dalších specialit.

ukázka vzhledu vizuálního režimu

Kromě popsaného klasického vizuálního režimu existují ještě jeho dvě speciální odrůdy. Pokud jej zahájíte klávesou V (tedy Shift-V), bude text označován po celých řádcích. Naproti tomu Ctrl-V vytvoří efekt, známý pod pojmem sloupcové bloky. Vyznačen bude pouze obdélník mezi výchozí a aktuální pozicí kurzoru.

Zajímavou možnost ve vizuálním režimu představuje klávesa o. Ta přesune kurzor na druhý konec vyznačeného bloku, takže můžete upravovat pro změnu druhou stranu. Vrátíte-li se zpět do normálního režimu, lze pomocí kláves gv obnovit vyznačení posledního vizuálního bloku.

Pokud máte vim přeložený s podporou myši, můžete ji zapojit. Klasicky stisknutím levého tlačítka a táhnutím myši označíte text mezi výchozí a koncovou polohou kurzoru. Když v dokumentu klepnete pravým tlačítkem myši, bude označen veškerý text mezi pozicí kurzoru a pozicí myši.

Logické vyznačování

Po stisku v můžete samozřejmě používat všechny pohybové příkazy včetně hledání. A dokonce i něco navíc, vim totiž umí vyhledávat logické části textu – slova, věty a podobně. Takže například vas označí větu, v níž se právě nachází kurzor.

Tyto příkazy (dále už je budu uvádět bez zahajovacího v) jsou dvoupísmenné. První písmeno určuje, zda se jedná o vnitřní (i, inner) nebo vnější (a) variantu. Vnější označuje o něco více, například přidá i mezeru za větou nebo obalující HTML značky. Druhé písmeno identifikuje označovaný objekt.

Objektů je k dispozici celá řada, kompletní přehled vám podá :help v_i. Tady je ochutnávka těch nejzajímavějších:

iw, aw slovo (word)
is, as věta (sentence)
ip, ap odstavec (paragraph)
i(, a( obsah závorek, analogicky pro [ a {
i", a" obsah uvozovek, analogicky pro ' a `
it, at obsah HTML značky (tag)

Použitelnost logických objektů je ve skutečnosti ještě o něco širší, protože kromě označování je můžete použít i pro smazání, zkopírování nebo změnu textu. Čili aktuální větu lze smazat pomocí das.

Akce

Jakmile je blok označen, můžete s ním něco provést. Příkaz se jako obvykle zadává patřičnou klávesou. Pokud si to rozmyslíte, můžete použít [Esc], který vás vrátí do příkazového režimu, aniž by se text jakkoli změnil. Příkazy, které lze použít na vizuálně vybraný blok, jsou následující:

Základní trojice
d vymazat a uložit do vyrovnávací paměti (delete)
c změnit (change)
y zkopírovat do vyrovnávací paměti (yank)
 
Velká/malá písmena
~ malá písmena nahradit velkými a naopak
U převést na velká písmena
u převést na malá písmena
 
Formátování
Q přeformátovat vyznačený text
J spojit do jednoho řádku
> posunout doprava
< posunout doleva
 
Speciální
: přejít do režimu příkazového řádku

Při použití dvojtečky se ocitnete v režimu příkazového řádku. vim na jeho začátek automaticky doplní rozsah řádků, který pokrývá všechny řádky, obsažené ve vyznačeném bloku. Chcete-li například nahradit jeden řetězec jiným v části textu, stačí ji vizuálně vyznačit a použít :s (viz část o nahrazování textu).