De VI editor leren gebruiken
ArticleCategory:
Applications
AuthorImage:
TranslationInfo:
original in en Ben Y.
Yoshino
en to nl Tom Uijldert
AboutTheAuthor:
Abstract:
Dit is een uitleg over het gebruik van vi, geschreven door
Ben Y. Yoshino. Het origineel
staat op www.eng.hawaii.edu/Tutor/vi.html.
Ander lesmateriaal van dezelfde auteur kun je vinden op
www.eng.hawaii.edu/Tutor/.
We hebben dit artikel op www.rootprompt.org gevonden en publiceren het hier met toestemming
van de auteur.
De VI editor is een scherm-georiënteerde editor die door veel Unix
gebruikers wordt toegepast. De editor heeft krachtige mogelijkheden voor
programmeurs maar veel beginners schrikken er voor terug vanwege de vele
mogelijkheden. Deze uitleg is geschreven om beginners bekend te maken
met het gebruik van VI maar bevat ook onderdelen die relevant zijn voor
ervaren gebruikers. Er worden voorbeelden gegeven en de beste manier om
het te leren is door deze voorbeelden na te doen of je eigen voorbeelden
uitproberen... Er gaat tenslotte niets boven de eigen ervaring.
ArticleIllustration:
ArticleBody:
Regels
In deze uitleg worden de volgende regels toegepast:
^X is een control teken. Indien je bijvoorbeeld
^d ziet in deze uitleg dan betekent het dat je de
control- toets ingedrukt moet houden en daarbij de betreffende
letter moet indrukken. In dit voorbeeld moet je dus de
control-toets indrukken en vervolgens de toets d.
Dit gedeelte is niet relevant voor gebruikers van Linux met moderne
terminal emulatoren zoals xterm, gnome-terminal,
kvt, aterm. Bij deze emulatoren is de shell
variabele $TERM al automatisch gedefinieerd op de juiste
waarde en hoef je je hier dus niet druk om te maken.
VI gebruikt het scherm volledig dus moet het weten wat voor terminal je
hebt.
Vertel allereerst aan je shell wat voor type terminal je hebt (als je
niet zeker weet wat voor shell je hebt type dan $ echo
$SHELL in). Voor de voorbeelden gebruiken we het type
"vt100". Vul hiervoor de waarde in van je eigen terminaltype.
Voor de C shell (/bin/csh) is het commando als volgt:
% set term=vt100
Voor de Bourne shell (/bin/sh) of de Korn shell
(/bin/ksh) is het commando als volgt:
$ export TERM
$ TERM=vt100
Nu nog de terminal resetten met het commando tset. Het
terminaltype is nu (hopelijk) goed ingesteld en je bent klaar om met
VI te beginnen.
Het starten van VI
De editor kan een gebruiker nieuwe bestanden laten creëren of
bestaande wijzigen. Het commando om VI te starten is $ vi,
gevolgd door de naam van een bestand. Om bijvoorbeeld het bestand
temporary te bewerken zou je het commando $ vi
temporary kunnen intikken, gevolgd door een return of
enter. Je kunt VI ook starten zonder een bestandsnaam op te
geven maar als je later je werk wilt bewaren zul je toch de naam van
een bestand op moeten geven waarin dit kan worden bewaard.
Als je VI voor de eerste keer start zul je een scherm zien met tildes
(een tilde ziet er zó uit: ~), links op het scherm. Lege regels
na het einde van een bestand worden zo gerepresenteerd. Onder in het
scherm zou je de naam van het bestand moeten zien als je die hebt
opgegeven en deze al bestaat. Tevens wordt daarbij de grootte van het
bestand gegeven, als volgt:
"bestandsnaam" 21 lines, 385 characters
Als het opgegeven bestand niet bestaat dan zal hij melden dat het hier
om een nieuw bestand gaat, als volgt:
"bestandsnaam" [New file]
Als je gestart hebt zonder bestandsnaam op te geven dan zal de regel
gewoon leeg zijn. Als je scherm niet dit gewenste resultaat laat zien
dan heb je misschien het verkeerde terminaltype gekozen. Tik dan
:q in gevolgd door een return om VI af te breken
en stel het juiste terminaltype in. Als je niet
weet hoe, vraag het iemand anders.
VI afbreken
Nu je weet hoe je VI op moet starten is het wellicht een goed idee om
ook te weten hoe je dit weer moet stoppen. VI kent twee
gebruiksstanden en om er uit te komen moet je in de command
stand (mode) staan. Druk op de Escape-toets of
Esc (als je terminal een dergelijke toets niet heeft probeer
dan ^[) om in de command stand te komen. Maak je geen zorgen
als je al in deze stand was, het indrukken van Escape zal dan
hooguit een piep geven van je terminal maar je blijft in dezelfde stand
staan.
Het commando om uit VI te komen is :q. In de command stand,
tik dubbele punt in, gevolgd door een 'q' en daarna Return.
Indien je reeds wijzigingen in het bestand hebt aangebracht dan zal de
editor je hierop wijzen en VI niet verlaten. Om deze waarschuwing te
negeren kun je VI verlaten zonder wijzigingen op te slaan met het
commando :q!.
Uiteraard zul je normaal gesproken de wijzigingen willen bewaren. Het
commando om dit te doen is :w. Dit kun je combineren met het
verlaten van VI via het commando :wq. Je kunt het bestand
tijdens het bewaren een andere naam geven door een bestandsnaam te geven
achter het w commando. Je kunt bijvoorbeeld het gewijzigde
bestand bewaren onder de naam bestandsnaam2 met het commando
:w bestandsnaam2, gevolgd door een Return.
Een andere manier om wijzigingen te bewaren en uit VI te komen is middels
het ZZ commando. Dit kun je geven in de command stand en is
equivalent met :wq. Indien er veranderingen waren op het
bestand zal dit worden bewaard. Het is de eenvoudigste manier om de
sessie te beëindigen, slechts twee toetsaanslagen.
Het eerste wat de meeste gebruikers zullen leren is dat VI twee standen
heeft, command en insert. De command stand
geeft de mogelijkheid voor het geven van commando's om tekst te
veranderen. Deze commando's bestaan meestal uit één of
twee letters. De insert stand zet alles wat op het toetsenbord
wordt ingetikt in het bestand.
VI begint in de command stand. Er zijn diverse commando's die VI
in de insert stand zetten. De meest gebruikte hiervan zijn
a en i. Die commando's worden hieronder beschreven.
Als je eenmaal in de insert stand zit kun je hier uit komen door
middel van de Escape toets (en als je die niet hebt zou
^[ ook moeten werken). Je kunt deze toets twee keer achter
elkaar aanslaan, dan zal VI zeker in de command stand staan. Het
aanslaan van Escape in de command stand zal hem niet
uit deze stand halen. De terminal zou wel een piep kunnen geven om aan te
geven dat je al in de command stand staat.
Het intikken van een commando in de command stand
Commando's in de command stand hebben meestal het volgende formaat
(optionele argumenten staan tussen vierkante haken):
[aantal] commando [waar]
De meeste commando's zijn één teken lang (inclusief diegene
die de Control tekens gebruiken). De in deze paragraaf
beschreven commando's zijn de meest gebruikte in VI.
Het aantal wordt ingegeven met een nummer, beginnend met 1 tot 9.
Het commando x bijvoorbeeld verwijdert het karakter onder de
cursor. Als je 23x intikt in de command stand zal dit
commando 23 tekens verwijderen.
Sommige commando's gebruiken een optioneel waar argument, waarin
je aan kan geven op hoeveel regels of op welk deel van het document dit
commando van toepassing is. waar kan ook een commando zijn dat
de cursor verplaatst.
Een aantal eenvoudige VI commando's
Hier een eenvoudige set commando's om de beginnende VI-gebruiker op weg te
helpen. Er zijn nog veel meer handige commando's die we verderop zullen
behandelen.
- a
- ga naar de insert stand. De
ingetikte letters zullen worden ingevoegd op de plek in de tekst
na de cursorpositie. Als je een aantal specificeert zal
de ingevoegde tekst zoveel keer herhaald worden ingevoegd.
- h
- ga met de cursor één teken naar links.
- i
- ga naar de insert stand. De ingetikte letters zullen
worden ingevoegd op de plek in de tekst voor de cursorpositie.
Als je een aantal specificeert zal de ingevoegde tekst zoveel
keer herhaald worden ingevoegd.
- j
- ga met de cursor één regel naar beneden.
- k
- ga met de cursor één regel naar boven.
- l
- ga met de cursor één teken naar rechts.
- r
- vervang één teken onder de cursor. Geef een
aantal om meerdere tekens te vervangen.
- u
- maak de laatste wijziging ongedaan. Nog een keer u
voert de wijziging weer door.
- x
- verwijder het teken onder de cursor. Aantal geeft het
aantal te verwijderen tekens. De tekens achter de cursor zullen daarbij
worden verwijderd.
Tekstbuffers in VI
VI heeft 36 buffers voor het opslaan van tekst en ook nog een algemene
buffer. Iedere keer dat een stuk tekst wordt verwijderd of yanked
(gekopieerd) uit een bestand, wordt het in de algemene buffer gezet. De
meeste VI gebruikers gebruiken de andere buffers nauwelijks en kunnen daar
prima mee toe. Het stuk tekst kan echter ook in een andere buffer worden
gezet als je dat opgeeft. Een dergelijke buffer wordt gespecificeerd met
het " commando. Na het intikken van " kan
je een letter of cijfer opgeven die de buffer specificeert. Bijvoorbeeld
het commando "mdd gebruikt het buffer m
waarbij de laatste twee letters staan voor het commando "verwijder
de huidige regel". Op dezelfde manier kan tekst wederom worden
toegevoegd met de p en P commando's.
"mp voegt de inhoud van buffer m toe aan
de tekst na de huidige positie van de cursor. Bij ieder commando uit de
volgende twee paragrafen kan een buffer worden gespecificeerd voor
tijdelijke opslag van tekst.
Kopiëren en verwijderen
Het gebruikelijke commando voor het verwijderen van tekst is d.
Het commando verwijdert tekst uit het bestand. Het kan vooraf worden
gegaan door een aantal en gevolgd door een verplaatsingscommando.
Als je het commando verdubbelt zal het de hele regel verwijderen.
Hieronder een aantal combinaties:
- d^
- verwijderd tekst vanaf de cursor tot aan het begin van de regel.
- d$
- verwijderd tekst vanaf de cursor tot aan het einde van de regel.
- dw
- verwijderd tekst vanaf de cursor tot aan het einde van het woord.
- 3dd
- verwijderd drie regels vanaf de huidige regel naar beneden.
Ook is er nog het y commando (kopiëren) die net als het
d commando werkt maar de originele tekst in het bestand laat
staan.
Toevoegen
De commando's om tekst toe te voegen zijn respectievelijk p
en P. Het verschil zit in de werking ten opzichte van de
cursor. p voegt de tekst uit de buffer toe achter
de cursorpositie, terwijl P dit doet voor de
cursorpositie. Aantal voor het commando zal de tekst
aantal keren invoegen.
Het formatteren van code en dit controleren
VI biedt een aantal mogelijkheden voor programmeurs om hun code netjes te
formatteren. Er is een variabele die je kunt definiëren voor het
inspringen van code op ieder niveau. Zie voor het activeren hiervan het
gedeelte over het aanpassen in deze uitleg. Het
commando om bijvoorbeeld 4 tekens in te springen is :set sw=4.
De volgende commando's laten je regels inspringen of juist terugspringen
en men kan vooraf een aantal specificeren:
- >>
- Laat de huidige regel één niveau verder
inspringen.
- <<
- Laat de huidige regel één niveau
terugspringen.
VI heeft nog een handige mogelijkheid om je programma te controleren op
haken of accolades die niet gepaard voorkomen. Het % commando
zal op zoek gaan naar de haak of accolade die hoort bij het teken waar
de cursor op dat moment op staat. Plaats de cursor op een haak of accolade
en gebruik het % commando om de cursor te verplaatsen naar het
bijbehorende teken. Dit is handig voor het opsporen van code met haak- of
accolade-openen zonder bijbehorende haak- of accolade-sluiten. Als VI het
bijbehorende teken niet kan vinden dan zal hij een piep geven om je hierop
te attenderen.
Zoeken op tekst en tekens
VI kent twee soorten zoekopdrachten: op tekst en op tekens. Voor het
zoeken op tekst hebben we de / en ? commando's.
Bij het starten van deze commando's zal dit getoond worden op de laatste
regel van het scherm, waar je vervolgens de tekst in tikt waarop je wilt
gaan zoeken. Beide commando's verschillen alleen in de richting
waarin ze zoeken. / zoekt naar voren (onderen) in de tekst,
terwijl ? achterwaarts zoekt. De commando's n en
N herhalen de laatste zoekopdracht in respectievelijk dezelfde
richting of in de omgekeerde richting. Sommige tekens hebben een speciale
betekenis in VI en zullen dus in de zoektekst vooraf moeten worden gegaan
door een (\) omgekeerde schuine streep om ze hun speciale
betekenis te laten verliezen.
Tekens met speciale betekenis:
- ^
- Begin van de regel (aan het begin van een zoekopdracht)
- .
- Past op één teken.
- *
- Past op nul of meer van de vorige tekens.
- $
- Einde van de regel (aan het eind van een zoekopdracht)
- [
- Begin van een verzameling die past of juist niet past.
/f[iae]t bijvoorbeeld past voor elk van de combinaties:
fit fat fet. In het volgende voorbeeld /a[^bcd]
past alles behalve de combinaties ab ac ad.
- <
- kan met een omgekeerde schuine streep (\)in een
zoekopdracht worden verwerkt voor het vinden van het begin of eind van
een woord. Bijvoorbeeld \<de\> vindt alleen het
woord de en dus niet deze of
onder.
- >
- Zie de beschrijving van < hierboven.
Het zoeken op een teken gebeurd altijd in dezelfde regel om een teken te
vinden wat achter het commando is opgegeven. f en F
zoeken beide op een teken op de huidige regel waarbij f vooruit
zoekt en F achteruit. De cursor zal worden verplaatst naar het
teken dat wordt gevonden.
De commando's t en T zoeken ook op een teken waarbij
t voorwaarts zoekt en de cursor voor het gevonden
teken zet, terwijl T achterwaarts zoekt en de cursor
achter het gevonden teken zet.
De hierboven beschreven zoekopdrachten kunnen worden herhaald met het
";" commando of ",".
";" herhaalt het laatst gezochte in dezelfde
richting, terwijl "," dit doet in de
tegenovergestelde richting.
Met de optie "ic" (of ignorecase) aan (tik in:
:set ic) kan worden gezocht zonder te letten op hoofd-
of kleine letters.
Je kunt het gedrag van VI naar eigen smaak veranderen tijdens het
opstarten. Er zijn diverse opties in te stellen via het :set
commando. Hieronder de VI en EX opties die beschikbaar zijn op
Wiliki (je kunt deze lijst zelf bekijken door in VI het
commando :set all te geven):
noautoindent magic noshowmatch
autoprint mesg noshowmode
noautowrite nomodelines noslowopen
nobeautify nonumber tabstop=8
directory=/tmp nonovice taglength=0
nodoubleescape nooptimize tags=tags /usr/lib/tags
noedcompatible paragraphs=IPLPPPQPP LIpplpipnpbp term=xterm
noerrorbells prompt noterse
noexrc noreadonly timeout
flash redraw timeoutlen=500
hardtabs=8 remap ttytype=xterm
noignorecase report=5 warn
keyboardedit scroll=11 window=23
keyboardedit! sections=NHSHH HUuhsh+c wrapscan
nolisp shell=/bin/csh wrapmargin=0
nolist shiftwidth=8 nowriteany
Sommige opties hebben hierbij waardes die worden toegekend via het
'is gelijk' (=) teken, andere opties staan aan of uit (deze laatste
categorie opties hebben het type Boolean en worden
voorafgegaan door "no" indien ze uit staan). De
hier getoonde opties zijn de instellingen zonder dat deze zijn aangepast.
Hieronder een beschrijving van een aantal van deze opties, met hun
afkortingen. Het autoindent commando bijvoorbeeld kan gegeven
worden als :set autoindent of als :set ai. Om dit
weer uit te zetten kan worden volstaan met :set noautoindent
of :set noai.
- autoindent (ai)
- Deze optie stelt de editor dusdanig in dat nieuwe
regels die aan worden gemaakt hetzelfde inspringen als de regel erboven.
Wil je dit inspringen ongedaan maken dan moet je een ^d geven
aan het begin van de regel. Deze ^d werkt alleen in de
insert stand, niet in de command stand. Tevens kan de
mate van inspringen worden ingesteld met shiftwidth,
zoals hieronder uitgelegd.
- exrc
- Het bestand .exrc in de huidige directory wordt
tijdens opstart door VI ingelezen. Dit moet worden ingesteld in de
EXINIT omgevingsvariabele of in het
.exrc bestand in je home-directory.
- mesg
- Zet de ontvangst van berichten uit via :set nomesg
zodat niets je kan storen tijdens het editten.
- number (nu)
- Laat regelnummers zien aan de linkerkant.
- shiftwidth (sw)
- Deze optie moet van een waarde worden voorzien en
die bepaalt de mate van inspringen bij het geven van een softwarematige
tabulatorstop (Deze tabulatorstop wordt gebruikt bij de
<< en de >> commando's). Instellen op
inspringen met 4 posities kan bijvoorbeeld met :set sw=4.
- showmode (smd)
- Met deze optie wordt zichtbaar in welke stand de
editor staat. Als je in insert stand staat zal onder aan het
scherm INPUT MODE staan.
- warn
- Deze instelling waarschuwt je als je het bestand hebt
gewijzigd maar de wijzigingen nog niet hebt opgeslagen.
- window (wi)
- Hiermee wordt het aantal regels ingesteld die VI op
het scherm zal tonen. Als je dit bijvoorbeeld op 12 regels wilt zetten
(omdat je een langzaam modem hebt) dan kan dit als volgt: :set
wi=12
- wrapscan (ws)
- Deze instelling verandert het gedrag bij tekst
zoeken. Als de optie aan staat en de tekst wordt niet gevonden en VI is
aan het einde van het bestand dan zal VI verder gaan zoeken vanaf het
begin van het bestand.
- wrapmargin (wm)
- Bij een waarde groter dan nul zal VI automatisch
aan "word wrap" doen. Dit betekent dat als je een
bepaald aantal posities van de rechterkantlijn bent verwijderd, het
woord automatisch op de volgende regel wordt gezet zonder dat je een
Return hoeft in te tikken. Om bijvoorbeeld de marge op 2
posities in te stellen kun je het volgende geven: :set wm=2.
Afkortingen en toetsen toekennen aan andere toetsen
Een voor VI bruikbaar EX editor commando is het
abbreviate commando. Hiermee kun je afkortingen
instellen voor bepaalde stukken tekst. Het commando ziet er als volgt
uit: :ab afkorting Datgene wat afgekort moet worden. Als je
bijvoorbeeld herhaaldelijk
"Humuhumunukunukuapua`a" moet intikken maar
daar geen zin in hebt dan kun je een afkorting gebruiken. Die zou er als
volgt uitzien:
:ab 9u Humuhumunukunukuapua`a
Iedere keer dat je nu 9u intypt als een op zichzelf staand
woord zal VI dit vervangen door de betreffende tekst. Als je bijvoorbeeld
9university intypt zal de vervanging niet plaatsvinden.
Om de afkorting weer te verwijderen kan het commando unabbreviate worden
gebruikt. Voor het vorige voorbeeld wordt dit :una 9u. Om een
overzicht te zien van alle actieve afkortingen kun je gewoon
":ab" geven.
Een ander bruikbaar EX commando voor het instellen op eigen gebruik is
het map commando. Hiervan zijn twee varianten. Eén voor
de command stand en één voor de insert stand. De varianten
zijn respectievelijk :map en :map!. Net als bij de
afkortingen wordt ook hier een reeks tekens vervangen door een andere
reeks. In dit geval zal het echter meestal gaan om een reeks VI
commando's.
De omgevingsvariabele EXINIT en het bestand .exrc
Er zijn twee manieren om VI naar wens in te stellen. Als je een bestand
.exrc aanmaakt in je home-directory zullen, iedere keer dat je
VI opstart, alle commando's hieruit worden uitgevoerd. De tweede manier
is via de omgevingsvariabele EXINIT. De
opties kunnen dan worden ingesteld in je login script. Als je de C shell
(/bin/csh) gebruikt kun je het volgende commando in je
.cshrc bestand zetten:
setenv EXINIT '…'
Als je /bin/sh of /bin/ksh gebruikt is het
commando (in je .profile bestand) als volgt:
export EXINIT
EXINIT='…'
Als je bijvoorbeeld auto indent wilt hebben en regelnummering
en een wrap margin van drie posities dan zal het commando (voor
de C shell) er als volgt uitzien:
setenv EXINIT 'set ai nu wm=3'
Als je hierin meerdere commando's kwijt wilt, scheidt ze dan middels een
verticale streep (|). Om het commando g toe te
kennen aan de toets 'G' in command stand moet bijvoorbeeld het volgende
worden gegeven: :map g G. In combinatie met bovenstaand
commando wordt dit nu:
setenv EXINIT 'set ai nu wm=3|map g G'
Als je liever een bestand .exrc hebt dan kun je hier precies
hetzelfde inzetten als wat tussen aanhalingstekens staat gegeven in
bovenstaande voorbeelden.
Herstellen van werk als er wat met je terminal gebeurt
VI gebruikt een tijdelijke kopie van je bestand om de veranderingen door
te voeren en zal ze, nadat je hem hebt verteld deze veranderingen te
bewaren, doorvoeren in het originele bestand. Als er iets mis gaat tijdens
het veranderen zal VI proberen om het onder handen zijnde werk zoveel
mogelijk te bewaren voor een eventueel later herstel (Als VI wordt
afgebroken tijdens het werken aan je bestand zal het je een e-mail sturen
met daarin instructies hoe je het kunt herstellen). De optie
-r wordt gebruikt voor het herstellen
(recovery). Als je bezig was met het wijzigen van het bestand
belangrijketekst en je wordt per ongeluk uitgelogd dan kan de
-r optie van VI je uitkomst brengen. Het commando voor
het herstellen zal er ongeveer als volgt uitzien:
$ vi -r belangrijketekst. Meteen na het gebruik van deze optie
moet je je wijzigingen in het originele bestand
doorvoeren. De optie werkt namelijk maar één keer per
afgebroken sessie.
Waarschuwing bij gebruik van VI op een werkstation
Twee dingen moet je in de gaten houden bij het werken met VI op een
werkstation: hetzelfde bestand meerder keren tegelijk bewerken en het
veranderen van de schermgrootte.
Omdat VI wijzigingen op een kopie van je bestand aanbrengt en
het slechts als laatste in één keer wegschrijft in je
originele bestand moet je uitkijken indien je meerdere keren bent
ingelogd. Als je dan hetzelfde bestand wijzigt in meerdere sessies dan
zal het wegschrijven van de veranderingen van de tweede sessie die van
de eerste sessie overschrijven waarmee die veranderingen dus verloren
zijn. Vergewis je ervan dat je een bestand slechts in één
sessie aan het wijzigen bent.
Als je een terminal emulatieprogramma van je werkstation gebruikt dan kun
je de grootte van het scherm veranderen door het window van afmetingen te
laten veranderen. Als VI dit niet kan volgen dan is het volgende commando
op zijn plaats:
eval `resize`
Als dit niet werkt dan het volgende:
eval `/usr/bin/X11R6/resize `
Dit zou een zeldzaam probleem moeten zijn, zeker met modernere versies
van VI zoals Vim.
Overzicht van VI commando's
De volgende lijst is een samenvatting van VI commando's, ingedeeld op
functionaliteit. Er kunnen nog meer commando's zijn, zie hiervoor de
on-line manual on VI.
Je kunt onderstaande als referentie gebruiken door het als tekst in een
bestand te bewaren en die commando's er uit te halen waarvan je denkt dat
je ze toch niet zult gebruiken. Daarmee verkort je je referentie.
Kopiëren en weghalen van tekst
- "
- Geef een buffer op bij ieder commando wat buffers gebruikt. Laat
het volgen door een letter of cijfer die de buffer aangeeft.
- D
- Verwijder tekst vanaf de cursor tot aan einde regel
- P
- Kopieer de tekst van de gegeven buffer vóór de
cursor of regel. Als geen buffer is opgegeven (met het "
commando), gebruik dan de algemene buffer.
- X
- Verwijder het teken vóór de cursor.
- Y
- Kopieer de huidige regel in de gegeven buffer. Gebruik de
algemene buffer als geen buffer is opgegeven.
- d
- Verwijder tekst tot aan waar. dd verwijderd
de huidige regel. aantal verwijderd dat aantal regels. Datgene
wat wordt verwijderd wordt in het gegeven (") buffer
gezet en anders in de algemene buffer.
- p
- Kopieer de gegeven buffer in de tekst na de cursorpositie of op
de volgende regel. Haalt het uit de algemene buffer als geen buffer is
gegeven (").
- x
- Verwijder het teken onder de cursor. Aantal geeft aan
hoeveel tekens er moeten worden verwijderd. Dit zijn de tekens achter de
cursor.
- y
- Kopieer de tekst tot aan waar in een buffer.
yy kopieert de huidige regel. Aantal kopieert dat
aantal regels. De buffer kan met het " commando worden
gespecificeerd. De algemene buffer wordt gebruikt als er geen is
opgegeven.
Invoegen van nieuwe tekst
- A
- Voeg toe aan het eind van de huidige regel.
- I
- Voeg in vanaf het begin van de regel.
- O
- (Letter Oh) Ga naar insert stand op een nieuwe regel
boven de huidige cursorpositie.
- a
- Ga naar insert stand, de ingetypte tekens worden
ingevoegd in de tekst achter de cursorpositie. Een aantal zal
zoveel keer de totaal ingetypte tekst invoegen.
- i
- Ga naar insert stand, de ingetypte tekens worden
ingevoegd in de tekst voor de cursorpositie. Een aantal zal
zoveel keer de totaal ingetypte tekst invoegen.
- o
- Ga naar insert stand op een nieuwe regel onder de
huidige cursorpositie.
De cursor verplaatsen
- ^B
- Scroll één scherm terug. Een aantal zal
zoveel schermen terug gaan.
- ^D
- Scroll een half scherm verder. Een aantal zal zoveel
regels naar voren gaan.
- ^F
- Scroll een scherm verder. Een aantal zal zoveel
schermen naar beneden gaan.
- ^H
- Cursor één positie naar links. Een aantal
zal zoveel posities naar links gaan.
- ^J
- Cursor één regel naar beneden, in dezelfde kolom.
Een aantal zal zoveel regels naar beneden gaan.
- ^M
- Naar de eerste positie op de volgende regel.
- ^N
- Cursor één regel naar beneden, in dezelfde kolom.
Een aantal zal zoveel regels naar beneden gaan.
- ^P
- Cursor één regel naar boven, in dezelfde kolom.
Een aantal zal zoveel regels naar boven gaan.
- ^U
- Scroll een half scherm naar boven. Een aantal zal
zoveel regels naar boven gaan.
- $
- Naar het einde van de regel. Een aantal zal zoveel
regels verder naar het eind gaan.
- %
- Naar het bijbehorende haakje of accolade.
- ^
- Naar het begin van de regel.
- (
- Cursor naar het begin van een zin.
- )
- Cursor naar het begin van de volgende zin.
- {
- Cursor naar de vorige paragraaf.
- }
- Cursor naar de volgende paragraaf.
- |
- Ga naar de kolom, gegeven door aantal.
- +
- Naar het eerste niet-scheidingsteken (spatie, tab, return) op de
volgende regel.
- -
- Naar het eerste niet-scheidingsteken op de vorige regel.
- _
- Naar het eerste niet-scheidingsteken op deze regel.
- 0
- (Nul) Naar de eerste kolom op deze regel.
- B
- Eén woord terug, negeer daarbij leestekens (streepjes,
punten e.d.).
- E
- Naar het einde van een woord, negeer daarbij leestekens.
- G
- Ga naar het regelnummer wat in aantal is gegeven. Als
geen aantal is gegeven, ga dan naar het einde van het bestand.
- H
- Cursor naar het eerste niet-scheidingsteken boven aan het scherm.
- L
- Cursor naar het eerste niet-scheidingsteken onder aan het scherm.
- M
- Cursor naar het eerste niet-scheidingsteken midden in het scherm.
- W
- Naar het begin van het volgende woord, negeer daarbij leestekens.
- b
- Eén woord terug. Indien in het midden van een woord, dan
naar het begin van dat woord.
- e
- Eén woord verder. Indien in het midden van een woord, dan
naar het einde van dat woord.
- h
- Cursor één positie naar links
- j
- Cursor één regel naar beneden.
- k
- Cursor één regel naar boven.
- l
- Cursor één positie naar rechts.
- w
- Eén woord verder. Indien in het midden van een woord, dan
naar het begin van het volgende woord.
De cursor verplaatsen op het scherm
- ^E
- Scroll één regel verder. Aantal gaat
zoveel regels verder.
- ^Y
- Scroll één regel terug. Aantal gaat
zoveel regels terug.
- z
- Ververs het scherm met de volgende opties:
z<Return> zet de huidige regel bovenaan het scherm.
z. zet de huidige regel centraal op het scherm. z-
zet de huidige regel onder aan het scherm. Als je een aantal
opgeeft voor dit commando dan neemt hij het gegeven regelnummer als
huidige regel. 16z. bijvoorbeeld zet dan regel 16 midden op
het scherm.
Vervangen van tekst
- C
- Vervang de tekst vanaf de cursorpositie tot aan het einde van
de regel
- R
- Vervang de tekens op het scherm met degene die je intypt tot
aan de Escape toets.
- S
- Vervang de hele regel.
- c
- Vervang tot aan waar. cc vervangt de huidige
regel.
Aantal vervangt die hoeveelheid regels.
- r
- Vervang het teken onder de cursor. Geef een aantal om
die hoeveelheid tekens te vervangen.
- s
- Vervang het teken onder de cursor en ga naar de insert
stand. Geef een aantal om die hoeveelheid tekens te vervangen.
Het dollarteken ($) zal op de plaats staan van het laatste te vervangen
teken.
Zoeken naar tekst of tekens
- ,
- Herhaal het laatste f, F, t of T commando
in de tegenovergestelde richting.
- /
- Zoek voorwaarts in het bestand naar de tekst die is gegeven na
de /.
- ;
- Herhaal het laatste f, F, t of T commando.
- ?
- Zoek achterwaarts in het bestand naar de tekst die is gegeven na
de ?.
- F
- Zoek achterwaarts in de huidige regel naar het teken, gegeven
achter het F commando. Verplaats de cursor er naar toe indien
gevonden.
- N
- Herhaal de laatste zoekopdracht van / of ?
maar dan in tegenovergestelde richting.
- T
- Zoek achterwaarts in de huidige regel naar het teken, gegeven
achter het T commando. Verplaats de cursor naar de positie
daarachter indien gevonden.
- f
- Zoek in de huidige regel naar het teken, gegeven achter het
f commando. Verplaats de cursor er naar toe indien gevonden.
- n
- Herhaal de laatste zoekopdracht van / of ?.
- t
- Zoek in de huidige regel naar het teken, gegeven achter het
t commando. Verplaats de cursor naar de positie ervoor indien
gevonden.
Tekens veranderen/Regels formatteren
- ~
- Verander de letter onder de cursor van hoofd- in kleine letter
of andersom
- <
- Laat de regels tot aan waar één niveau
terugspringen. << laat de huidige regel
één niveau terugspringen en kan vooraf worden gegaan door
een aantal.
- >
- Laat de regels tot aan waar één niveau
inspringen. >> laat de huidige regel één
niveau inspringen en kan vooraf worden gegaan door een aantal.
- J
- Voeg de huidige en volgende regel samen tot één
regel. Een aantal voegt dat aantal regels samen.
Bewaren en eindigen
- ^\
- Ga uit "VI" stand terug naar "EX" stand. EX
is de regelgeoriënteerde editor waarop VI is gebaseerd. Het EX
commando om terug te gaan naar VI is :vi.
- Q
- Ga uit "VI" stand terug naar "EX" stand. EX
is de regelgeoriënteerde editor. Het EX commando om terug te gaan
naar VI is :vi.
- ZZ
- Verlaat de editor en bewaar eventuele veranderingen.
Overige
- ^G
- Laat de naam van het huidige bestand zien en zijn status.
- ^L
- Ververs het scherm.
- ^R
- Ververs het scherm, waarmee foute regels worden verwijderd.
- ^[
- Escape toets, breekt een halfgevormd commando af.
- ^^
- Ga terug naar het laatste bestand wat je hebt veranderd.
- !
- Voert een shell uit. Als een waar is opgegeven dan
worden deze regels aan het programma dat wordt opgestart met het
! commando als standaard invoer meegegeven en zullen
betreffende regels worden vervangen door de standaard uitvoer van dat
programma. !! gebruikt de huidige regel als invoer.
!4jsort bijvoorbeeld zal 5 regels van de huidige positie
nemen en sort uitvoeren. Na het intikken van het commando
verschijnt een enkel uitroepteken waar de rest van het commando ingetikt
kan worden.
- &
- Herhaal het vorige :s commando.
- .
- Herhaal het laatste commando dat het bestand veranderde.
- :
- Begin met het intikken van een EX commando. Het commando wordt
uitgevoerd zodra een Return is gegeven (zie ook onderstaande
paragraaf).
- @
- Laat het commando zien wat in de gegeven buffer staat.
- U
- Herstel de huidige regel in de staat waarin hij was voordat de
cursor er kwam.
- m
- Markeer de huidige positie van de cursor met het teken dat je
opgeeft na het m commando.
- u
- Draai de laatste verandering op het bestand terug. Nog een
u doet de verandering opnieuw.
EX commando's
VI is gebouwd op een andere editor die EX wordt genoemd. EX werkt op
regel-voor-regel basis. Vanuit VI kun je : gebruiken voor
het invoeren van een EX commando. De hier gegeven lijst is niet
compleet, de behandelde commando's zijn de algemeen gebruikte. Indien een
commando meerdere regels kan veranderen (zoals :s of
:w), dient er een bereik op te worden gegeven, voorafgaand aan
het commando. Om bijvoorbeeld iets op regels 3 tot en met 15 te veranderen
moet op worden gegeven: "3,15s/van/dit/g".
- :ab string strings
- Afkorting. Indien een woord in VI wordt
ingevoerd dat gelijk is aan string dan zal de editor dit
automatisch vervangen door strings. Het commando
":ab nl Koninkrijk der Nederlanden" zal de tekst
"Koninkrijk der Nederlanden" invoegen op iedere plek waar het
woord "nl" wordt ingevoerd.
- :map keys new_seq
- Toetsen toekennen. Een toetsindruk (of een
reeks) wordt daarbij vervangen door een andere toets (of reeks).
- :q
- Verlaat VI. Als er veranderingen zijn geweest op het bestand
zal de editor een waarschuwing geven.
- :q!
- Verlaat VI zonder eventuele veranderingen te bewaren.
- :s/pattern/to_pattern/options
-
Vervangen (substitueren). Dit vervangt het gegeven pattern
met het gegeven to_pattern. Zonder opties wordt alleen het
eerst gevonden patroon vervangen. Als een g als optie wordt
meegegeven dan worden alle gevonden patronen op de regel vervangen. Het
commando ":1,$s/Dwayne/Dwight/g" bijvoorbeeld zal
alle voorkomens van Dwayne vervangen door Dwight.
- :set [all]
- Stel een optie van de editor in.
":set all geeft alle mogelijke opties weer (zie ook de
paragraaf over het instellen van VI).
- :una string
- Verwijderd de afkorting die daarvoor was gedefinieerd.
- :unm keys
- Verwijderd de toekenning van de toets die daarvoor was
gedefinieerd.
- :vi filename
- Start met het editten van een nieuw bestand. Als
veranderingen niet vooraf bewaard zijn zal VI een waarschuwing geven.
- :w
- Bewaar veranderingen op het huidige bestand.
- :w filename
- Bewaar veranderingen in het gegeven bestand.
- :w >> filename
- Voeg de inhoud van de buffer toe achter aan
het bestand.
- :wq
- Bewaar de buffer en verlaat de editor.
Referenties
Last updated on Tuesday, December 10, 1996
Updated on Thursday, July 27, 1995
Updated on Monday, October 3, 1994
Copyright © 1996 University of Hawaii, College of Engineering,
Computer Facility
All rights reserved.