Net als veel Unixtools vraagt vi wel enige inspanning van de gebruiker voordat hij hier behoorlijk mee uit de voeten kan. Ondanks dat er ook legio andere tools zijn voor het bewerken van kale tekstbestanden op het Unix-platform, kan geen enkele beheerder het zich veroorloven niet de basis van vi te kennen. Gaat er iets mis met een systeem, bijvoorbeeld in de bootcyclus, dan kan vi de enige editor zijn die beschikbaar is om de configuratiebestanden aan te passen.

Wie de vi-commando's afgrijslijk vindt, kunnen we wellicht troosten door te melden dat het in oude tijden nog erger was. Vi - spreek uit vie-aai - is namelijk de opvolger van ex, een zogenaamde line editor, waarin je alleen steeds afzonderlijke tekstregels kunt bewerken. Vi is dan ook kort voor visual, wat meer dan dertig jaar geleden inderdaad een hele verbetering was.

Verschillende modi

Wie op de command line van de Unix-shell vi (vim, gvim) intikt, meestal gevolgd door een bestandsnaam, komt in de commando-modus terecht. Dat betekent dat je niet direct kunt gaan typen, maar daarvoor eerst naar een van de editing-modi moet gaan.

Het meest gebruikt is de insert-modus, te bereiken door naar de juiste plaats in de tekst te bewegen en simpelweg een "i" in te typen. Alles wat je daarna tikt zal in de tekst zelf worden ingevoegd. Andere veel gebruikte manieren om in insert-modus te komen zijn "o" (begin op een volgende, lege regel), "O" (begin op een lege regel hierboven), "a" (append: voeg in achter huidige karakter) en "A" (voeg in aan het einde van de regel).

Naast deze insert-modus is er ook de replace-modus, te bereiken door het intoetsen van "R". Daarbij wordt de nieuwe tekst niet ingevoegd maar overschrijft deze de oude. Om vanuit een van deze twee editing-modi weer terug in de commando-modus te komen, druk je op Escape.

Een enkel karakter vervangen doe je met "r"; een karakter verwijderen met "x". Met de "." wordt de laatste opdracht herhaald. De "u" maakt de laatste opdracht ongedaan.

Schakelen

Een typische vi-gebruiker zal razendsnel tussen de verschillende modi schakelen. Editen in vi bestaat uit steeds opnieuw het bewegen naar de juiste plek, overstappen naar een van de editing-modi, daar wat tekst intypen en weer terug naar de commandomodus. Als gebruiker ontwikkelt u op termijn dan ook de sterke neiging om heel vaak op escape te drukken, regelmatig gevolgd door ":w" om het bestand te saven. Afsluiten doe je overigens met ":wq".

Bewegen door de tekst kan bijna altijd met de pijltjestoetsen, afhankelijk van de terminal-instellingen. Lukt dat niet (kan gebeuren als je bijvoorbeeld na de mislukte boot van een Unix-systeem in single-user-modus terecht komt), dan kunt u "h", "j", "k" en "l" gebruiken. Andere belangrijke opdrachten zijn "w" (woord vooruit), "b" (woord achteruit), "0" (begin regel), "$" (einde regel), "-" (begin vorige regel) en "+" (begin volgende regel). Je kunt naar het einde van het document springen met "G". Voor een bepaalde regel toets je eerst het nummer in en dan de "G". Zoeken gebeurt met de "/", naar boven toe met een "?".

Efficiënt

Hoewel u met bovenstaande genoeg van het vi-vocabulaire tot uw beschikking heeft om een configuratiebestandje aan te passen, zijn het de ingewikkelder opdrachten en de combinaties van opdrachten die vi niet alleen leuk maar ook heel efficiënt maken. Wat eenvoudige voorbeelden: "20x" verwijderd twintig karakters, "xp" wisselt twee karakters om, "3cw" vervangt drie woorden, "d$" verwijdert alles tot aan het einde van de regel, "dd" verwijdert een hele regel, "dG" verwijdert alles tot aan het einde van het bestand, en "6." herhaalt de laatste opdracht zes keer.

U kunt het zo ingewikkeld maken als u maar wilt. Bovendien kunt u combinaties van opdrachten heel eenvoudig opnemen (letterlijk!) in een macro ("qa"-"q"), om deze vervolgens op een andere plaats opnieuw "af te spelen" ("@a"). Vergelijkbare handigheidjes zijn tenslotte de "map" waarbij zelf opdrachten gedefinieerd kunnen worden en de afkortingen ("abbr") die tijdens het editen automatisch vervangen worden.

De editor-oorlog

Er is geen artikel over vi te schrijven zonder ook iets te zeggen over Emacs. Waar het doel van vi was om de gebruiker alles te kunnen laten doen zonder speciale toetscombinaties, hangt Emacs juist van de CTRL-, SHIFT- en andere combinaties aan elkaar. Op die manier biedt deze editor wel een heel scala aan speciale omgevingen; voor mail, voor LaTeX, voor allerlei programmeertalen, noem maar op. Daarmee hebben Emacs-gebruiker weliswaar een krachtige tool van waaruit ze heel veel kunnen doen, maar staat deze verder van de Unixfilosofie af.

Vi- en Emacs-gebruikers hebben elkaar altijd (op ludieke wijze) bestreden. Voor beheerders zal de keuze echter eerder naar vi neigen. Basiskennis van deze editor is voor hen immers verplichte kost. Bron: Techworld