Unix-beheerders kunnen niet om vi heen. Als een systeem vastloopt in zijn boot cyclus, is deze editor vaak de enige die beschikbaar is om de configuratiebestanden aan te passen.
Zoals veel Unix-tools vraagt vi wel enige inspanning van de gebruiker voordat hij hier behoorlijk mee uit de voeten kan. Ondanks dat er ook legio andere tools voor het bewerken van kale tekstbestanden op het Unix-platform beschikbaar zijn, kan geen enkele beheerder het zich veroorloven niet de basis van vi te kennen. Gaat er iets mis met een systeem, bijvoorbeeld in de boot cyclus, 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 commando-modus. Als gebruiker ontwikkel je op termijn dan ook de sterke neiging om heel vaak op escape te drukken, regelmatig gevolgd door ":w" om je bestand te saven. Afsluiten doe je overigens met ":wq".
Bewegen door je tekst kan bijna altijd met de pijltjestoetsen, afhankelijk van je 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 kun je "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 je met bovenstaande genoeg van het vi-vocabulaire tot je beschikking hebt 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.
Je kunt het zo ingewikkeld maken als je maar wilt. Bovendien kun je 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
Je kunt geen artikel over vi 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 welliswaar een krachtige tool vanwaaruit ze heel veel kunnen doen, maar staat deze verder van de Unix-filosofie 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.
Nederlands (nl-NL)
English (United Kingdom) 
Plaats reactie