Linuxcursus Les 5 werken met vi
Paul Wiegmans (paul@bonhoeffer.nl)
laatst gewijzigd
Opdracht
1.
Start in de homedirectory vi op. We krijgen een scherm te zien waarop elke regel begint met een ~
. Dit is VI's manier om aan te geven dat dit blanco regels zijn. Omdat
onder Linux Vim (VI Improved) geinstalleerd is, zien we midden
op het scherm extra informatie. Merk op dat deze regels toch
'leeg' zijn, omdat er ~ voor staan. Geef maar een
<Ctrl><l>. Dit veroorzaakt een refresh van het scherm.
2.
Met het commando <i> kunnen we tekst gaan invoegen. Pas op: VI is case-sensitive! Typ een <i> gevolgd door Dit is een test
. Hierbij mag u bij een fout de <backspace>-toets gebruiken en de
pijltjestoetsen. Pijltjestoeten werken niet in de originele VI . Druk op
<Escape>. De cursor springt een veld terug. Loop met de pijltjes
naar de eerste t van test . Druk op <i>, typ eerste en druk op <Escape. Zo zien we hoe insert werkt.
3.
Druk nu op de <I> (hoofdletter i). Hiermee voegen we tekst in aan het begin van de regel. Typ Een eerste zin:
gevolgd door <Escape>. Over het algemeen is een
hoofdletterkommando een soort versterkte versie van het normale kleine
letter-commando.
4.
Nu willen we rond de dubbele punt spaties invoegen. Ga met de cursor op de n van zin
staan en druk op <a>. We zijn nu in de append mode. Druk op de
<spatie> en vervolgens op <Escape>. Voor de dubbele punt
staat nu een spatie.
5.
Ga nu op de dubbele punt staan en druk op de <.> (punt). Wat zien
we? Na de dubbele punt staat nu ook een spatie. Het commando . (punt) herhaalt het laatst gegeven commando. Dit is een erg handige truc.
6.
Met het commando set kunnen we algemene VI-instellingen bekijken. Doe nu :set all
gevolgd door <Enter>. Met het intoetsen van de dubbele punt
springt de cursor naar beneden. We zijn nu in de ex mode. Na <Enter> krijgen we een scala van opties. te zien. Met de
spatiebalk lopen we er doorheen en komen vanzelf weer terug in VI's
command mode. Met set kunnen we de mode waarin we ons bevinden visueel maken. Type :set showmode
en <Enter>. Als we nu op <i> (of <a>) drukken,
zien we linksonder in beeld het woord -- INSERT -- verschijnen. Druk op
<Escape> en de tekst verdwijnt weer.
7.
Als we de woorden Dit is weg willen hebben, dan moeten we karakters wissen. Loop met de cursor naar de letter D en druk op <x>. Nu verdwijnt het karakter D . Druk nu op <3> direct gevolgd door <x>. Nu halen we drie karakters tegelijk weg (i t en een spatie). Het woord is
halen we op een andere manier weg. Druk op de <d> direct
gevolgd door een <w>. We halen nu direct het hele woord is (en de spatie erachter) weg. Er zijn dus meer mogelijkheden met hetzelfde effect.
8.
Om een nieuwe regel te openen onder de huidige regel, gebruiken we het commando o. Druk op <o> en typ Dit iz de derde regel.
en <Escape>. Merk op dat <o> ons direct in insert mode brengt.
Met <O> voegen we een nieuwe regel boven de huidige regel toe. Ga
naar de tweede regel met de cursor. Druk op <O> en typ De volgende regel. gevolgd door <Escape>.
9.
VI kent een aantal commando's om tekst te wijzigen. Ga naar de z van iz en druk op <r> gevolgd door een <s>. <Escape> is nu niet nodig. Ga nu op de v van volgende staan en toets de <c> in gevolgd door een <w>. We kunnen nu het woord volgende veranderen in een ander woord. Typ nu tweede gevolgd door <Escape>. Het woord is gewijzigd.
10.
Ga nu op de derde regel staan en druk op <d><d>. De hele
derde regel verdwijnt. Druk nu op de <u>. De derde regel komt
weer terug op zijn plaats. Druk nogmaals op <u>. Het woord tweede is weer hersteld naar volgende.
VIM houdt al onze veranderingen bij en met de <u> lopen we er weer
door terug. Ga nu naar de tweede regel. Druk op de <2> en
geef weer een <d><d>. Nu verdwijnen de tweede en de derde
regel. Typ nu
<o><Escape><79><i><-><Escape>. We
krijgen een regel met streepjes.
11.
De cursor staat nu helemaal aan het eind van de regel. Druk op de
<0> (nul). De cursor springt naar het begin van de regel. Druk nu
op de <$>. (<Shift><$>) en de cursor springt weer
naar het einde van de regel.
12. Open een nieuwe regel onder de tweede regel en typ aap noot mies en <Escape>. Ga nu naar de m van mies en druk op <~>. De m verandert in een M. Ga met de cursor een plaats terug (naar de M) en druk weer op de <~>. De M verandert weer in een kleine m. Ga nu naar de n van noot en druk op <4> gevolgd door een <~>. Het hele woord noot verandert in hoofdletters.
13.
Ga nu naar de eerste regel door <1><G> te typen. Typ nu
<:><$>. We staan nu op de laatste regel. Dit laatste kan
ook door alleen de <G> te typen.
14.
Zoeken in VI gaat met de forward slash gevolgd door de zoekstring. Type </>. De cursor springt naar beneden. We typen test en <Enter> en de cursor springt naar de t van test in de eerste regel. Met een <n> zoeken we naar de volgende instantie van test
in de file. Merk op dat we een melding krijgen dat search het eind van
de file bereikt heeft en maar opnieuw vanaf boven is gaan zoeken. Dit
gedrag is default ingesteld met de optie :set wrapscan en zouden we kunnen uitzetten met :set nowrapscan .
15.
Zoeken en vervangen gaat iets anders. We willen alle dubbele e's vervangen door een dubbele x. Typ :1,$s/ee/xx/g gevolgd door een <Enter>. Merk op dat de vervangfunctie het woord Een op de eerste regel ongemoeid laat. Dat komt omdat de optie noignorecase actief is. Met :set ignorecase <Enter> kunnen we dit uitzetten en zal Een ook veranderen in xxn .
16.
We kunnen uit VI gaan op een aantal manieren. De meest voor de hand liggende
is <:><q> <Enter>. Probeer dit. We krijgen een
melding dat er veranderingen zijn sinds de laatste keer dat we de file
hebben opgeslagen en dat we die eerst moeten bewaren of
<:><q><!> moeten geven om toch VI te verlaten en alle
veranderingen weg te gooien. In dit geval zijn we dan de hele tekst
kwijt. Niet doen dus. Opslaan doen we met <:><w> gevolgd
door een spatie en een file-naam. Sla de file op onder de naam testfile.
Geef nu een <:><f><Enter>. We zien de file-naam
terug en het aantal regels in de file. Nu zouden we er eventueel uit
kunnen met <:><q> (maar doe dit niet). We kunnen op drie
manieren onze veranderingen opslaan en VI verlaten. De eerste manier is
<:><w><q> <Enter> , de tweede is
<:><x> <Enter> en de derde manier is
<Shift><Z><Z>.
17.
Verlaat nu VI. Start VI weer op (zonder file-naam mee te geven). Geef nu een <:><e> testfile <Enter> en we hebben onze file weer terug in VI.