 |
Editace textu
Nejdůležitější editační operaci - vkládání nového textu - již znáte z
předchozí stránky. Stačí přejít do vkládacího režimu a psát a psát a psát.
Pokud uděláte chybu, lze ji obvyklým způsobem umazat klávesou Backspace a nahradit správným textem. Takto však Backspace funguje jen do té doby, než opustíte vkládací
režim. Pak je třeba sáhnout k jiným prostředkům.
Mazání
S výjimkou výše zmíněných elementárních oprav se mazání odehrává v normálním
režimu. Základní operaci - smazání znaku pod kurzorem - obstará
klávesa x . Samozřejmě jí lze předsadit číslo, takže
20x zlikviduje 20 znaků, počínaje tím pod
kurzorem.
Druhou obvyklou operací je smazání řádku. Na ten již budete potřebovat klávesy
dvě, a sice dd . Řádek, na němž se momentálně nachází
kurzor, bude zlikvidován.
Kopírování
Veškeré likvidační operace mají jednu zajímavou vlastnost: vymazaný text se
automaticky ukládá do registru, z nějž jej následně můžete vložit na
jiné místo. O vložení se postará klávesa p (vkládá
za aktuální pozici) nebo P (před aktuální pozici).
Chování vkládaného materiálu se liší podle jeho charakteru. Pokud se jedná o
pouhou část řádku, bude vložen do aktuálního řádku za nebo před kurzor.
Jestliže však text v registru obsahuje alespoň jeden celý řádek, bude vložen
za/před aktuální řádek.
Příklad:
Hezkým příkladem činnosti mazacích a vkládacích mechanismů je změna pořadí dvou
po sobě jdoucích znaků. Obstará ji klávesová kombinace xp - sledujte její chování:
Vyjdeme ze slova
pohoda
^
Stisknutím x bude z textu odstraněn znak pod
kurzorem (písmeno "h") a zbytek řádku se posune doleva. Smazaný znak se
automaticky uloží do registru. Aktuální stav tedy vypadá takto:
pooda
^
Stisknutím klávesy p vložíte obsah registru
za aktuální pozici. Jelikož v registru je jediný znak ("h"), bude vložen
do řádku za kurzor a vznikne:
poohda
^
Příklad:
Druhý příklad zaměřím na likvidaci řádků. Řekněme, že máme text
raz
dva
tři
čtyři
Kurzor je na druhém řádku (odpovídající znak je vyznačen tučně a podtržen).
Použijete-li příkaz 2dd , odstraníte druhý a třetí
řádek:
raz
čtyři
Chcete-li se vrátit k původnímu stavu, stačí stisknout P . Jelikož registr obsahuje více než řádek, bude
jeho obsah vložen jako samostatné řádky před řádek s kurzorem. Vznikne tedy
opět původní text
raz
dva
tři
čtyři
Pokud chcete řádek (nebo jejich skupinu) přesunout do registru, ale
ponechat v textu, použijte yy . Tento příkaz uloží do
registru aktuální řádek. Chcete-li tedy zdvojit aktuální řádek,
použijte yyp .
Každé uložení do registru samozřejmě znamená, že jeho stávající obsah
bude zlikvidován. Z tohoto důvodu je podstatný rozdíl, zda při mazání pěti
znaků pětkrát stisknete klávesu x nebo použijete
5x . V prvním případě se provede pět samostatných
příkazů mazání. Každý z nich vloží do registru právě likvidovaný znak
a zruší jeho předchozí obsah. Po provedení posledního tudíž v registru
bude jediný (poslední vymazaný) znak. Naproti tomu 5x vymaže naráz všech pět znaků a do registru
uloží celou pětici.
Odvolávání a vracení
Dějiny nás učí, že umění v pravou chvíli odvolat bývá rozhodující mezi bytím a
nebytím. Proto většina moderních editorů dokáže odvolávat poslední provedené
změny a (pokud si to uživatel znovu rozmyslí) zase je vracet zpět. V případě
vim k odvolání poslední editační operace slouží klávesa u (jakožto "undo"). Můžete ji používat opakovaně a
odvolávat tak další a další akce.
Pokud si později uvědomíte, že některá z editačních operací zase nebyla až tak
špatná, můžete ji vrátit pomocí Ctrl-R (redo). Opět
je lze používat opakovaně.
Speciální druh odvolání představuje klávesa U .
Odvolá všechny změny, provedené na naposledy změněném řádku.
Editační lahůdky
Nastal čas nasadit sprint a zmizet milovníkům přesýpacích hodin za obzorem. Pro
tuto část jsem si nechal několik specialit, které práci s vim velmi
významně zrychlují.
První chuťovkou je prostá tečka. Příkaz . zopakuje
vaši poslední editační operaci. To znamená poslední vložení, smazání či změnu
textu. Pohyby nejsou považovány za editační operace.
Příklad:
Strohý popis činnosti tečky nezní nijak bombasticky. Je třeba si však uvědomit,
že editační operace může být dosti inteligentní, místy až rafinovaná. Například
budu mít seznam tří jmen
Mojmír Slizký
Jiří Milý
Leonid Vasiljevič Brown
který chci zařadit na WWW stránku. Chci, aby jeho podoba zůstala zachována,
tedy aby každé jméno bylo na samostatném řádku. To znamená, že na konec každého
z nich je třeba připsat <BR> . Přesunu kurzor na první řádek
a použiji příkaz A<BR>[Esc] . Tím jsem na jeho
konec přidal <BR> . Nyní stačí jen střídavě mačkat kurzor dolů a . a přidávat
<BR> na konce dalších a dalších řádků.
Nejkouzelnější možností však je kombinace editačního
příkazu s libovolným pohybem. Pokud před pohybem stisknete kouzelnou klávesu,
bude se editační operace týkat textu od aktuální polohy kurzoru až po cílovou
pozici, na niž se dostane provedením dotyčného pohybu. Základními kouzelnými
klávesami jsou
d |
vymazání (delete), likvidovaný text se uloží do registru |
y |
kopírování do registru (yank) |
c |
změna (nahrazení novým obsahem; change) |
Takže například změnu slova zařídíte tak, že najedete kurzorem na jeho začátek
a použijete příkaz cw . Likvidaci odstavce (od
aktuální pozice do konce) obstará d} . Mým často
používaným příkazem je změna lokátoru v odkazu ve zdrojovém textu WWW stránky.
Přesunu kurzor za zahajující uvozovky a pak nasadím ct" , čímž požaduji změnu textu až po následující uvozovky.
Samozřejmě je k dispozici též opakování. Nezáleží při něm na tom, zda použijete
2dw nebo d2w . V obou
případech budou vymazána dvě slova a uložena do vyrovnávací paměti.
Skutečnost, že zmiňované vylomeniny lze navíc snadno opakovat pomocí tečky,
představuje zcela novou úroveň rozkoše při používání vim.
Kromě základních tří modifikátorů d , y a c je k dispozici ještě řada
dalších. K používání některých z nich budete potřebovat pokročilejší
znalosti. Zde se omezím na pouhý výčet.
g~ |
zamění malá/velká písmena v textu |
gu |
převede text na malá písmena |
gU |
převede text na velká písmena |
! |
zpracuje text externím programem |
= |
zpracuje text externím formátovačem; jeho jméno lze nastavit pomocí :set equalprg ; není-li nastaveno, uspořádá se jako
zdrojový text v C |
gq |
přeformátuje text podle platných okrajů |
> |
posune text doprava |
< |
posune text doleva |
© 1997, 1998 Pavel Satrapa
|