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.
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).
© 2016 Pavel Satrapa