web2 logo

Vim gebruiken om tekstbestanden te bewerken

In Linux kan je eenvoudige intuïtieve teksteditors gebruiken om tekstbestanden te bewerken, of als je zin hebt in een uitdaging, Vim gebruiken.
Vim heeft 2 modes:
Command mode: Bij het starten van Vim kom je terecht in de command mode, hier kan je door het venster heen lopen en tekst wissen en tekst kopiëren.
Insert mode: Hier kan je tekst invoeren, dit kan niet in command mode.
Je bent in indert mode als er links onder in het venster
-- INVOEGEN --
staat.

Toetsen overzicht

i    Naar insert mode
Esc    Naar command mode
x of Del    Wis een karakter
X    Wis vorige karakter (backspace)
u    Ongedaan maken
Ctrl + r    Ongedaam actie ongedaan maken
yy    Regel kopiëren
dd    Regel wissen
p    Plakken
/    Zoeken en dan door de gevonden items gaan met n en N
[[ of gg    Ga naar het begin van het bestand
]] of G    Ga naar het einde van het bestand
:%s/foo/bar/gci    Zoek en vervang met bevestiging
Esc + :w    Veranderingen opslaan
Esc + :wq of Esc + ZZ    Opslaan en Vim afsluiten
Esc + :q!    Vim sluiten zonder iets op te slaan

Naar insert mode gaan

Als je in command mode zit, dan zijn er meerdere toetsen die je naar insert mode brengen:
i -- Nieuwe tekst komt voor de cursor
a -- Nieuwe tekst komt na de cursor
I -- Nieuwe tekst komt aan het begin van de regel
A -- Nieuwe tekst komt aan het einde van de regel
o -- Nieuwe regel na de huidige regel
O -- Nieuwe regel voor de huidige regel

Terug naar command mode gaan

Via de Esc-toets ga je terug naar de command mode. De tekst
-- INVOEGEN --
verdwijnt dan onderaan het venster.

De cursor verplaatsen

Je muis werkt niet in Vim, dus alles moet met het toetsenbord. De pijltoetsen werken wel, zowel in insert mode als in command mode.

H -- Naar de eerste regel in het venster.
L -- Naar de laatste regel in het venster.
M -- Naar de middelste regel van het venster.
[[ of gg -- Naar de eerste regel van het bestand.
]] of G -- Naar de laatste regel van het bestand.
nG -- Naar regelnummer n.
{ Naar het begin van de paragraaf.
} Naar het einde van de paragraaf.
w Naar het volgende woord.

Cijfers werken als vermenigvuldigers voor commando's. Om 6 woorden vooruit te gaan gebruik je bijvoorbeeld 6w. Om tekst 3 keer in het bestand op te nemen, maar slechts 1 keer in te typen, gebruik je 3i om naar insert mode te gaan en dan je tekst in te typen. Na op Esc gedrukt te hebben, zie je je ingetypte tekst dan 3 keer staan, achter elkaar.

Regelnummers tonen

Om regelnummers te krijgen in Vim ga je naar command mode en type je:
:set number

Tekst knippen en wissen

Knippen en wissen zijn hetzelfde in Vim, als je tekst wist, dan wordt deze in een buffer geplaatst van waar je deze later weer kan plakken.
In Vim zijn een aantal toetscombinaties om tekst te knippen en te wissen. De normale Delete en Backspace toetsen werken ook.

x -- Gelijk aan de Delete toets.
X -- Gelijk aan de Backspace toets.
dw -- Knip/wis woord tot en met de spatie na het woord.
dd -- Knip/wis de huidige regel.
d$ -- Knip/wis tot aan het einde van de huidige regel.
dG -- Knip/wis tot aan het einde van het bestand.

Teksten kopiëren en plakken

Kopiëren kan in Vim met de volgende toetscombinaties in command mode:

yw -- Kopiëer woord plus de spatie erachter.
yy -- Kopiëer huidige regel.
y$ -- Kopiëer tot en met het einde van de regel.
yG -- Kopiëer tot en met het einde van het bestand.

Plakken kan met de volgende toetsen in command mode:

p -- Plak de inhoud van de Vim-buffer voor de huidige cursorpositie.
P -- Plak de inhoud van de Vim-buffer na de huidige cursorpositie.

Plakken van tekst die niet in de Vim-buffer staat, maar die ergens anders gekopiëerd is, kan met de standaard Linux terminal toetscombinaties als je in insert mode bent in Vim:

Ctrl+Shift+C -- Om te kopiëren.
Ctrl+Shift+V -- Om te plakken.

Tekst zoeken in Vim

Het zoeken van tekst kan in command mode met de forward slash toets '/'. Daarna typ je in wat je zoekt, gevolgt door Enter. Met de n toets ga je naar de volgende vindplaats van de tekst die je zoekt en met de N toets ga je naar de vorige. Het zoeken van teksten is hoofdlettergevoelig. Om de hoofdlettergevoeligheid te negeren tijdens het zoeken kan je de optie \c gebruiken:

/\cZoekTekst

Tekst vervangen in Vim

Het commando om tekst te zoeken en vervangen is :s (de s is van het Engelse woord substitute). Hier kunnen reguliere expressies (RegEx) bij worden gebruikt.
Voorbeeld, 'zoektekst' in een bestand vervangen door 'vervangtekst':

:%s/zoektekst/vervangtekst/gci

De g optie aan het einde zorgt ervoor dat de vervanging voor alle exemplaren van zoektekst in het bestand plaatsvindt, zonder de g optie wordt alleen de eerste vondst vervangen.
Als je het % teken weglaat, vindt de vervanging alleen plaats in de huidige regel in plaats van het hele bestand.
Het zoeken en vervangen is hoofdlettergevoelig, om de hoofdlettergevoeligheid te negeren wordt in dit voorbeeld de i optie gebruikt.
Om niet meteen alles automatisch te vervangen, maar eerst alles te laten bevestigen, wordt in dit voorbeeld de c (van confirm) optie gebruikt.
Deze c (van confirm) optie geeft steeds de volgende vraag:

vervang door vervangtekst (y/n/a/q/l/^E/^Y)?

De mogelijkheden hier zijn:

y -- Ja, deze vervangen.
n -- Nee, deze niet vervangen en doorgaan naar de volgende.
a -- Vervang alle gevonden exemplaren.
q -- Stop zonder iets te vervangen.
l -- Vervang dit exemplaar en stop dan
^E -- Scroll omhoog.
^Y -- Scroll omlaag.

Vim beëindigen

Om het programma te verlaten moet je eerst naar de command mode (Esc-toets). Dan zijn er de volgende mogelijkheden:

:w -- Aanpassingen opslaan, maar het programma niet sluiten.
:wq -- Opslaan en sluiten.
:q! -- Geforceerd sluiten (er word niets opgeslagen).
:q -- Sluiten (indien er nog niet opgeslagen aanpassingen zijn, volgt er een waarschuwing:

E37: niets opgeslagen sinds laatste wijziging (voeg ! toe om te forceren)
Toets ENTER of typ een opdracht om verder te gaan

Toegevoegd door: Kees de Keijzer
Twitter: @kdkq

~ linux ~

~ Onderwerpen ~

Dit is een website zonder pop-ups

~ Links ~

Design & Development by Cyberwebdesign.nl for web2.nl © 2020.