Linuxcursus Les 5 werken met vi
Paul Wiegmans (paul@bonhoeffer.nl)
laatst gewijzigd
Introductie
Vi is een teksteditor onder UNIX en Linux . Er zijn heel veel andere
editors - bijvoorbeeld Emacs - maar Vi is de editor die je op vrijwel
elke Linux en zelfs elke UNIX zult kunnen vinden. Linux is meestal
voorzien van de teksteditor Vim , wat staat voor vi Improved. Deze
editor heeft nog eens heel veel extra functies en is stukken
vriendelijker dat de oorspronkelijke Vi.
De beste manier om vi te leren is door het te doen. Het praktikum aan
het einde van deze tekst is daarvoor heel geschikt. De grote waarde van
het leren van vi is dat je het op elke Linux kunt gebruiken. Het is als
standaard altijd geinstalleerd op elk Linux systeem. .
In dit hoofdstuk worden alle toetsaanslagen aangeduid zoals <a>
voor de a toets.
Vi kan worden gestart met het commando
vi
of wanneer je niet met een lege buffer wilt beginnen, maar een bestaand
bestand bewerken
vi bestandsnaam
Command en edit mode
In vi hebben bepaalde toetsen een andere functie afhankelijk van in
welk mode Vi zich bevindt. Vi kent de commandomode en de editmode. In
editmode wordt alle toetsen geinterpreteerd als ingevoerd tekst, en in
commandomde worden alle toetsen beschouwd als commando. Bovendien bevat
Vi de functie van een regel-geoienteerde editor , ex, voor nog meer
commandos. Je kunt dit eigenlijk beschouwen als een derde mode, de
ex-mode.
Wanneer je Vi start, begint vi altijd in commando mode.
Van commandomode ga je naar editmode met de toets <i>, <o>,
..
Van editmode ga je naar commandomode met de toets <Esc>.
Van commandomode ga je naar ex-mode met de toets <:>.
Van exmode ga je naar commandomode met de toets <Esc>
Navigeren
Je beweegt de cursor in vi met de toetsen <h>, <j>,
<k>, <l>. Deze toetsen zitten allevier op een rijtje zodat
je met 4 vingers van 1 hand de cursor in 4 richtingen kan sturen. De
cursortoetsen werken in Vim ook. Je kunt <0> naar het begin van
de regel gaan. Met <$> ga je naar het einde van een regel. Met
het intikken van een regelnummer gevolgd door <g> ga je naar die
regel. Zonder regelnummer ga je met <g> naar het einde van de
file, en met <G> naar het begin.
Tekst invoeren
Met de <i> ga je naar insertmodus, een nieuwe regel invoegen gaat
met <o> ("open"), en met de <a> ("append") ga je tekst
achter de regel invoegen. Met al deze toetscommandos kom je in de
editmode .
Met de <r> kom je in replacemodus. Hier kun je een teken
intikken, en dan wordt het teken onder de cursor vervangen door dit
teken. Je blijft hierbij in commandomode.
Een teken weghalen gaat met <x>, met de <del> en
<bkspc> toetsen werken in Vim ook.
Find en replace
Zoeken van tekst gaat met </>. De cursor gaat naar de onderste
regel en je kunt tikken welk woord je wilt zoeken. Met
<return> ga vi zoeken naar het zoekwoord. Als je het woord heb
gevonden, kom je met <n> (van "next") naar het volgende instantie
van het woord.
Zoeken en vervangen gat met het commando subsititute (s) in exmode.
:1,10s/piet/jeroen/g
vervangt in regel 1 t/m 10 het woord piet door jeroen. Al het meer dan
eens voorkomt, wordt vanwege de optie g (global) alle woorden vervangen.
Bewaren en opslaan
Om de file te bewaren ("write") tik je <:><w><enter>
. Als het bestand nog geen naam heeft , dan kun je een naam zo
geven : <:><w>bestandnaam<enter>
Verlaten van vi ("quit') doe je met <:><q><enter>.
Als er nog wijzigingen zijn gemaakt, die niet zijn opgeslagen zal vi
daarover klagen. Je moet dan , OF de wijzigingen opslaan OF de
wijzigingen weggooien. Opslaan en stoppen doe je tegelijkertijd
met <:><w><q> . Als je de wijzigingen wilt weggooien
doe <:><q><!><enter>. Je zegt eigenlijk :
quit en DOE HET!.
Een snelle manier om te stoppen en opslaan is vanuit commandomode met
<Z><Z> . Dit zijn twee hoofdletters.
Om de bestandsnaam te zien doe <:><f><enter> .
Om een naam te geven doe je <:><f>naam<enter> .
Hierna heeft het bestand de opgegeven naam en kun je hem opslaan onder
deze naam met <:><w><enter>. Om een bestand in de
editor te laden doe je <:><e>bestandsnaam <enter>.
Undo
De letter <u> in commandomode geeft je de mogelijk om de laatste
wijziging ongedaan te maken. Wat die wijziging is , behelst alles wat
je hebt gedaan sinds de laatste keer dat je in de commandomode was. De
originele vi kent 1 niveau van undo , terwijl Vim diverse niveua van
undo kent , m.a.w. in Vim kun je diverse wijzigingen teruggaan.
Editor
Vi is een editor en geen tekstverwerker. Het verschil met een
tekstverwerker is dat een editor geen opmaak kent, zoals een
tekstverwerker die kent. Dingen zoals het instellen van lettertype,
kleur en grootte kan niet in vi. Je ziet in vi slechts de platte tekst,
en verder niets. Vim kent daarentegen
wel syntax highlighting, dat er voor zorgt dat woorden met een
speciale betekenis in een andere kleur oplichten. Dit kan vooral van
pas komen bij het bewerken van broncode ("sourcecode") en is voor
programmeurs erg handig. Ook bij het bewerken van HTML bestanden kunt
je syntax highlighting goed gebruiken., om de structuur van de HTML
code zichtbaar te maken. Vim kent syntax highlighting mode voor een
groot aantal bestanden.
Incarnaties van Vi
In linux werk je meestal met Vim zonder dat je het op het eerste
gezicht in de gaten hebt. Je werkt met Vim als je manpages bekijkt, of
het commando less
of crontab
-e gebruikt . Wanneer je het commando man of less gebruikt,
zorgen links ervoor dat Vim wordt gestart op de juiste manier en met
het juiste gedrag.
Help
Informatie over hoe vi werkt kun je op diverse manieren te weten komen.
Ten eerste is het natuurlijk de manpage
van vi :
man vi
Ten tweede kun je binnen vi uitgebreide "online help" krijgen wanneer
je :? intikt . Als
laatste mogelijkheid wil ik je wijzen op diverse webpaginas op het
internet, die op 1 bladzijde alle belangrijke toetsen en functies van
vi opsommen. Intikken op Google "vi cheat sheet" geeft je genoeg
aanknopingspunten. Een heel overzichtelijke vind je op http://www.kcomputing.com/vi.html