Vi kun je op bijna elk Unix-systeem vinden. Een voorloper van vi is ed. (Je kunt ed voor de gein eens opstarten met ed. Hint: je gaat er weer uit met ctrl+d.) Vi is een commercieel programma. Voor Linux (en andere besturingssytemen) is er vim (VIsual editor iMproved), gemaakt door Bram Molenaar (ja, een Nederlander). Vi staat bekend als ongebruiksvriendelijk, maar als je er eenmaal aan gewend bent, is het handig en vooral ontzettend snel in gebruik. Het is zo gemaakt dat je je vingers niet van het toetsenbord af hoeft te halen en je nooit toetsen nodig hebt die ''ver weg'' zitten. Dat komt vooral omdat het op terminals gebruikt moest kunnen worden met toetsenborden waar minder toetsen op zitten dan die gebruikerlijk zijn bij een PC. Zelfs als je vim niet wilt gebruiken voor je normale editwerk is het heel erg nuttig op zijn minst een basis te leren. Op een resucue disk of een Unix-systeem kom je wellicht geen enkele andere editor tegen!
In vim werk je in 2 modes: de command mode en de insert mode. Standaard zit je in de command mode. De meeste toetsen op het toetsenbord hebben dan een functie. Zo haal je met x het karakter op de huidige cursorpositie weg. Om ex-commando's in te kunnen voeren, moet je op : intikken. Openen van bestanden, opslaan en de editor verlaten zijn allemaal ex-commando's. Om tekst toe te voegen moet je overschakelen naar de insert mode. Dat doe je met i. Om vervolgens weer terug te gaan naar commando mode gebruik je ESC.
Hier volgt een lijst van een aantal basisfuncties.
:q quit
:q! quit zonder bevestiging
:wq of ZZ write and quit
:wq! write and quit zonder bevestiging
:w test bewaar de buffer als test
:1,10 w test bewaar regel 1 t/m 10 als test
:e edit het bestand opnieuw
:n volgend (next) bestand, als je er meer geopend hebt (met vim file1 file2)
:rew terug naar eerste bestand, als je er meer geopend hebt
ctrl-g toon status, aantal regels en relatieve plaats
j omlaag (onthoudt: de stok van de j wijst omlaag)
k omhoog
h links (zit links van de j en k)
l rechts (zit rechts van de j en k)
i voeg iets toe op de cursorpositie (insert)
a voeg iets toe na de cursorpositie (append)
o voeg een nieuwe lijn in onder de cursor en ga over naar insert-mode
x delete (6x delete 6 karakters)
X backspace
dd delete regel (6dd delete 6 regels)
r# vervang (replace) teken onder cursor door #
R replace mode, als je tekst intikt wordt de oude overschreven
J plak de volgende regel achter de huidige (join)
yy kopieer de regel (yank)
6yy kopieer 6 regels
p plak geyankte of gedelete tekst achter de cursor
P plak geyankte of gedelete tekst voor de cursor
/ zoek vooruit, zet hier achter wat er gezocht moet worden
? zoek achteruit, zet hier achter wat er gezocht moet worden
n verder zoeken
N verder zoeken in tegenovergestelde richting
:s/oud/nieuw
vervang (substitute) oud met nieuw 1x op de op huidige regel:s/oud/nieuw/g
idem, maar dan overal in de regel (globally):1,10s/oud/nieuw/g
idem, maar zoekt in regel 1 t/m 10:%s/oud/nieuw/g
idem, maar zoekt in het gehele bestand10,30s/^/# /
plaats op regel 10-30 een #-teken vooraan de regel. , [ *
plaats een\
voor deze tekens om ze van hun speciale betekenis te ontdoen
u undo
U undo alles in de huidige regel, mits de cursor de regel niet verlaten heeft
:help toont help
:help w toont help over het commando w
:syntax on zet syntax highlighting aan
:set nu geef regelnummers weer
:set nonu haal regelnummers weg (alle opties zet je uit door er no voor te zetten)
:set ic ignore case (bij zoekaktie)
:r !cmd zet de output van het shell commando cmd in de tekst
:!cmd voer cmd uit, maar voegt niks in
:r file voeg de inhoud van bestand file in
Naast de toetsen h, j, k en l kun je de cursortoetsen ook wel gebruiken (in de originele vi werkt dat niet), maar de echte vi-er gebruikt die natuurlijk niet!
Als je stukken tekst wilt kopieren, verplaatsen of verwijderen, dan moet je normaal gesproken als je bijv. 10 regels wilt verwijderen 10dd intikken. Maar daarvoor moet je het aantal regels eerst gaan tellen. Als dat een klein aantal is, dan zie je dat zo. Is het een groter aantal, dan moet je echt gaan tellen. Om dat niet te hoeven doen je ook stukken tekst visueel gaan selecteren door op ctrl+v te drukken. Gebruik dan de pijltjestoetsen om een stuk tekst te selecteren. Heb je de regels geselecteerd waar je iets mee wilt doen, druk dan op : en vul dan een commando in. Bijv. d voor delete, y voor yank (kopieren) of w filenaam om het geselecteerde stuk onder filenaam op te slaan.
Met deze grafische selectie kun je ook verticaal dingen selecteren! Je kunt er kolommen mee uit een tabel verwijderen door het stuk te selecteren op dezelfde manier als hierboven werd uitgelegd en dan meteeen op x te drukken. Je kunt dat blok ook weer vertikaal in een ander stuk tabel terugplakken met p!
In het bestand ~/.vimrc kun je dezelfde (ex-)commando's zetten als wanneer je in vim werkt. Ze zullen elke keer dat je vim start worden uitgevoerd. Hier volgen wat handige dingen die je daar in kunt zetten.
Met set bs=2 kun je de backspace-toets gebruiken zoals je het waarschijnlijk gewend bent.
Standaard worden er maar liefst 8 spaties gemaakt als je op tab drukt. Dat is veel te lang om bijv. een overzichtelijk programma in C te maken. Met set tabstop=3 worden er 3 spaties aangemaakt bij een tab.
Met ab ee user@host worden elke keer dat je ee intikt de letters ee vervangen door je e-mailadres. Voor Engelse teksten zijn ab cant can't en ab dont don't bijvoorbeeld handig. Ab staat voor abbrevation (afkorting). Maak van alles wat je vaak moet intikken een abbrevation. Dat scheelt een hoop tikwerk!
Vim kent syntax highlighting voor een behoorlijk groot aantal scripttalen, programmeertalen en configuratiebestanden. Gebruik :syntax on om die aan te zetten.
Wat hier staat is een fractie van wat vim kan. Er zijn veel meer commando's. Hoe meer je er kent en hoe handiger je ze leert gebruiken, hoe sneller je tekst kunt editen met vim. Ik wil echt geen andere editor meer. Als ik daar nu in werk vind ik het tergend langzaam werken!
In /usr/(share/)doc/vim-common-versie/tutor staat een bestand dat je kunt openen met vim om er al doende mee om te leren gaan. Kopieer het naar je home directory om er in te kunnen editen. Bekijk ook de overige bestanden in die directory. De helpfunctie van vim is erg uitgebreid. Bekijk die ook zeker!
Meer informatie over vim kan gevonden worden op de officiele homepage (http://www.vim.org/) en een goed startpunt voor andere sites over vi(m) is http://www.thomer.com/thomer/vi/vi.html.