Werken met Vim

Over vim

De vim editor is zeer krachtig en heeft een uitgebreide ingebouwde hulpfunktie, die je kan raadplegen door in het programma de opdracht :help in te geven. Dit geeft vollediger informatie dan bijvoorbeeld man vim of info vim. Wij bespreken hier enkel de basis, zodat je aan de slag kan.

Maak je geen zorgen als alle informatie over vim een beetje overweldigend wordt. Ook gevorderde gebruikers weten lang niet alles over vim, omdat het zo'n veelzijdige editor is, die door iedereen op een andere manier gebruikt wordt. Onderstaande grafiek illustreert dit:

Figuur 7.1. Vim kennisverdeling

Niemand kent vim 100%.

Jan en Mieke zijn beiden geavanceerde vim gebruikers. Maar zelfs een geavanceerde gebruiker weet gemiddeld slechts 25 tot 30% van alles wat er over vim te weten valt. En van die 30% hebben de meeste gebruikers slechts 10% gemeen. Zodoende is het altijd interessant om met andere vim gebruikers te praten: ze weten gegarandeerd een of ander truukje waar je nog nooit van gehoord hebt. En omgekeerd zal jijzelf op termijn hier en daar wel wat curiositeiten ontdekken in de handleidingen waar een ander paf van staat.

[Opmerking]Uitspraak

Spreek vim uit als “vim”, wanneer we het over de algemene versie hebben zoals ze ook op UNIX voorkomt, zeggen we “vie-aai”, zoals in het Engels.

Twee modes

Het feit dat vi en vim twee gebruikersmodes hebben, maakt het voor beginnende gebruikers nogal verwarrend. Je start de editor immers op in commandomode, wat betekent dat bepaalde toetsencombinaties een bepaald effect zullen hebben op de tekst. Die akties in commandomode kunnen onder andere karakters verwijderen, copiëren en plakken of de cursor naar een andere plaats bewegen. In deze mode is het echter onmogelijk om tekst te typen.

Via bepaalde toetsencombinaties kan je in de invoegmode komen, daarin kan je tekst typen.

Het bestaan van deze twee modes betekent effectief dat elke toets op het toetsenbord voor vi twee betekenissen heeft: in commandomode stelt een toets een commando voor, in invoegmode stelt een toets eenvoudigweg het karakter voor dat erop staat.

Basiscommando's in Vim

Door de tekst bewegen

[Opmerking]Theorie

De volgende paragrafen geven een overzicht van de vim functionaliteiten, ter referentie. In het praktisch gedeelte gaan we aan de slag.

De cursor doorheen de tekst bewegen kan je gewoonlijk doen met behulp van de pijltjestoetsen. Mocht dat toch niet gaan, bijvoorbeeld omdat je met een oudere versie van vi of vim werkt, dan kan je de volgende toetsen gebruiken:

  • h: beweeg de cursor naar links.

  • l: beweeg de cursor naar rechts.

  • k: beweegt de cursor omhoog.

  • j: beweegt de cursor omlaag.

De combinatie Shift+G brengt je naar de laatste lijn van de tekst. Met :1 ga je naar de eerste lijn.

Basisbewerkingen

  • n dd: het dd commando verwijdert lijnen, het getal n specifieert hoeveel. Zonder specificatie gaat vim ervan uit dat n gelijk is aan 1.

  • n dw: verwijdert n woorden rechts van de cursor. Een woord wordt afgebakend door spaties.

  • x: verwijdert het karakter waar de cursor op staat.

  • :n: met n tussen 1 en het aantal lijnen van het bestand: ga naar de zoveelste lijn.

  • :w : bewaart de veranderingen.

  • :q: verlaat de editor.

  • :q!: forceer het sluiten van de applicatie in geval je de aangebrachte veranderingen niet wilt opslaan.

  • :w nieuwe_naam: de “opslaan als” funktie.

  • :wq!: heft de alleen-lezen eigenschap van een bestand op, op voorwaarde dat je voldoende permissies hebt om dit te kunnen doen.

  • /zoekwoord: brengt de cursor naar de eerstevolgende plek waar het zoekwoord staat.

  • /: voert dezelfde zoekaktie opnieuw uit.

  • :1, $s/zoekwoord/vervangwoord/g: zoeken en vervangen.

  • yy: kopieert een lijn

  • n p: voegt de gekopieerde lijn n keer in onder de plaats van de cursor.

  • :recover: repareer een bestand na een onverwachte onderbreking.

Switch commando's

Van commandomode naar invoegmode

Je kan op een aantal manier in invoegmode komen, de meest populaire zijn als volgt:

  • a: je kan tekst invoegen rechts van de huidige stand van de cursor.

  • i: je kan tekst invoegen op de plaats van de cursor.

  • o: je kan tekst invoegen op een lege lijn onder de huidige stand van de cursor.

Nieuwere versies van vi, zoals onze vim, tonen dat je in invoegmode bent door onderaan het scherm de boodschap “-- INSERT --” te plaatsen.

Van invoegmode naar commandomode

Teruggaan naar commandomode doe je altijd met de Esc toets. Als je op een oudere versie van vi niet zeker bent in welke mode je zit, kan je altijd Esc drukken, dan ben je zeker terug in commandomode. Sommige systemen geven een hoorbaar of zichtbaar alert als je Esc drukt terwijl je al in commandomode bent. Dat is normaal gedrag.

Praktisch

Alle toetsencombinaties van vim lezen is een vervelend karwei. Bovendien ben je zonder praktische oefeningen zo weer vergeten wat je gelezen hebt. Daarom werd vimtutor ontwikkeld. Het is een mini-cursus die 30 tot 60 minuten in beslag neemt en je meteen de basisvaardigheden van vim bijbrengt. Natuurlijk kan je vim niet leren op een half uurtje; het leerprogramma is ontworpen om je genoeg commando's te leren zodat je gemakkelijk met vim of vi uit de voeten kan en de editor kan gebruiken voor algemene toepassingen.

[Belangrijk]Aan de slag

Start het leerprogramma op door vanop de commandoregel in een terminal venster het commando vimtutor op te geven. Er zijn ook een aantal vertalingen beschikbaar, zoals bijvoorbeeld de Franse. Die kan je oproepen door vimtutor fr in te geven. De Nederlandse versie is echter nog niet beschikbaar. Voor diegenen die het moeilijk hebben met Engels, bevat Bijlage C, Oplossingen van de oefeningen de vertaling van de eerste vier lessen van vimtutor.

[Opmerking]Modes in de tutor

In de tutor wordt commandomode de “normale” mode genoemd.