Werken met Vi
Geschikt voor: Versie: 10.04 LTS, 10.10, 11.04
Vi ( Visual Editor ) is een programma waarmee gebruikers platte tekst kunnen bewerken via de shell.
Vi is een redelijk intimiderend programma voor beginners, vooral ten opzichte van de heel gebruiksvriendelijke grafische programma's hiervoor, zoals Kate en Gedit, waarmee beginners meestal als eerste in contact komen.
Maar toch is het een goed idee om op uw tanden te bijten en de basis van het werken met Vi onder de knie te krijgen. In tegenstelling tot andere programma's om platte tekst te bewerken, is Vi aanwezig in virtueel alle UNIX-omgevingen, ongeacht de processorarchitectuur of implementatie. Dit is precies het doel van dit artikel.
Vi starten
U kunt Vi uiteraard starten door gewoon "vi" gevolgd door Return in uw shell in te typen. Maar deze manier is iets minder efficiënt als degene die we nu gaan bespreken, en we zullen er dus van uitgaan in de rest van dit artikel dat u deze methode niet gebruikt.
Een betere manier om Vi te starten is door het aan te roepen met een bestandsnaam als parameter. Zoals in het volgende voorbeeld:
vi ~/.bashrc
Zo zal Vi meteen dit bestand openen en zal Vi als u uw wijzigingen opslaat dit automatisch in dit bestand doen.
Als u als parameter de naam van een niet bestaand bestand meegeeft, zal Vi dit bestand automatisch aanmaken zodra u uw werk opslaat!
Dit is wat u nu zou moeten zien in uw shell:
De tildes stellen lege regels in het bestand voor. Op de onderste regel ziet u informatie over het bestand dat u net geopend hebt ( in dit geval zien we enkel "[New File]" achter de bestandsnaam omdat dit bestand nog niet bestond ). Als u de commandomodus activeert, dan naar de last-line submodus gaat en een commando intypt zal de oorspronkelijke inhoud van deze regel worden gewist.
De commandomodus en de invoegmodus
Vi werkt met twee modi die u afwisselend zal gebruiken tijdens het werken met tekst. Deze zijn de commandomodus en de invoermodus.
Deze modi zijn eigenlijk het kernconcept van Vi, dus is het uiterst belangrijk dat u hun functie perfect begrijpt voordat u verder gaat.
In de invoermodus kunt u enkel tekens ( inclusief de speciale tekens zoals het regeleinde weliswaar ) invoegen, niets meer, niets minder. Wilt u iets met de geplaatste tekens doen, zoals ze verwijderen, of wilt u algemene bewerkingen op het bestand uitvoeren, zoals het bestand opslaan, dan moet u dit doen met de commandomodus. U kunt wél beïnvloeden waar de tekens die u intypt geplaatst worden.
De commandomodus bestaat uit twee submodi, de normale commandomodus en de lastlinemodus. In de normale commandomodus kunt u navigeren in het bestand en bewerkingen uitvoeren op de tekst. In de lastlinemodus kunt u dit ook, maar u kunt in deze modus daarbovenop ook commando's die het hele bestand beïnvloeden uitvoeren.
Vi zal standaard starten in de invoermodus.
U kunt ten alle tijde naar de normale commandomodus gaan door op ESC te drukken. Om vervolgens naar de lastlinemodus te gaan typt u een dubbele punt ( ':' ).
Om naar de invoegmodus te gaan als u in de commandomodus bent kunt u een aantal commando's gebruiken. De commando's verschillen in waar de tekens die u vervolgens typt worden ingevoegd:
Commando |
Functie |
'i' |
Schakelt over naar de invoegmodus en voegt de tekens op de huidige cursorpositie in |
'a' |
Schakelt over naar de invoegmodus, verplaatst de cursor één positie naar rechts en voegt dan de tekens in |
'I' |
Schakelt over naar de invoegmodus en voegt de tekens in aan het begin van de huidige regel |
'A' |
Schakelt over naar de invoegmodus en voegt de tekens in aan het einde van de huidige regel |
'o' |
Schakelt over naar de invoegmodus, maakt een nieuwe, lege regel aan en voegt de tekens aan het begin van deze regel in |
Werken met de invoegmodus
Werken met de invoegmodus is heel erg simpel: u typt gewoon de informatie die u in het bestand wilt hebben. Moeilijker dan dat is het echt niet. Maar onthoud wel dat dat ook echt het enige is wat u met deze modi kunt.
Werken met de commandomodus
De volgende commando's kunt u het beste uit het hoofd leren, want e zijn het belangrijkst om te kunnen werken met Vi:
De commando's zijn makkelijker te begrijpen en vanbuiten te leren als u ze terwijl u de volgende secties leest op een echt tekstbestand uitprobeert!
Navigeren in het bestand
De uiterste basiscommando's zijn de volgende:
Commando |
Functie |
'k' |
Verplaatst de cursor één regel naar boven |
'j' |
Verplaatst de cursor één regel naar beneden |
'h' |
Verplaatst de cursor één karakter naar links |
'l' |
Verplaatst de cursor één karakter naar rechts |
In nieuwere versies van Vi kunt u ook de pijltjestoetsen gebruiken om op deze manier te navigeren, maar ga er niet van uit dat u dit kunt!
Er zijn ook wat geavanceerdere commando's die nuttig kunnen zijn om door grote bestanden te bladeren, maar deze hoeft u niet per se zeer goed te kennen:
Commando |
Functie |
'b' |
Verplaatst de cursor naar het vorige woord |
'w' |
Verplaatst de cursor naar het volgende woord |
'0' (het cijfer!) |
Verplaatst de cursor naar het begin van de huidige regel |
'$' |
Verplaatst de cursor naar het einde van de huidige regel |
'H' |
Verplaatst de cursor naar de top van het huidige scherm |
'M' |
Verplaatst de cursor naar het midden van het huidige scherm |
'L' |
Verplaatst de cursor naar de bodem van het huidige scherm |
'CTRL+B' |
Verplaatst de cursor naar het begin van het vorige scherm |
'CTRL+F' |
Verplaatst de cursor naar het begin van het volgende scherm |
'G' |
Verplaatst de cursor naar het einde van het bestand |
'nG' |
Verplaatst de cursor naar regel 'n' |
Tekst verwijderen
De basiscommando's voor het wissen van tekst zijn:
Commando |
Functie |
'x' |
Wist één teken rechts van de cursor |
'X' |
Wist één teken links van de cursor |
Er zijn ook wat geavanceerdere commando's die nuttig kunnen zijn om grote hoeveelheden tekst te verwijderen, maar deze hoeft u niet per se zeer goed te kennen:
Commando |
Functie |
"dw" |
Wist één woord rechts van de cursor |
"d0" (met cijfer 0!) |
Wist alles links van de cursor, tot aan het begin van de huidige regel |
"d$" |
Wist alles rechts van de cursor, tot aan het einde van de huidige regel |
"dd" |
Wist de huidige regel |
Prefixes en andere tijdbesparende methodes
U kunt in de commandomodus door een getal in te voeren voor het commando dit commando zoveel keer opnieuw laten uitvoeren door Vi.
Bijvoorbeeld:
10dd
Dit zal de huidige regel en de volgende negen regels wissen.
Ook kunt u het latst gebruikte commando opnieuw een enkele keer uitvoeren door een punt ( '.' ) te typen.
Uw werk opslaan in Vi
U kunt in Vi uw werk opslaan met het commando 'w'. Omdat deze operatie van toepassing is op het hele bestand moet u hem uiteraard in de lastlinemodus uitvoeren.
Vi afsluiten
U kunt Vi afsluiten met het commando 'q'. Omdat dit commando ook een globale invloed heeft, moet u het ook in de lastlinemodus uitvoeren.
Verdere referenties
Na het lezen van dit artikel en het uitproberen van de commando's erin kunt u al aardig overweg met Vi, maar Vi is heel erg krachtig en kan veel meer als wat wij besproken hebben. Daarom zijn hier nog wat links naarr documenten die u zullen helpen om nog meer meester te worden van dit onmisbare hulpmiddel:
- Verdere referenties komen hier