5.4. Den klassiske Unix-editor vi

Indtil videre har du set, hvordan du kan manipulere filer, men det er ofte meget nyttigt at kunne redigere i en tekstfil.

En editor, som man ikke kan komme uden om er vi. Som gamle Unix-folk vil vi forfattere give dig det råd, at du lærer at bruge vi og bruger editoren til at foretage mindre rettelser i filer. Editoren vi (som udtales vi-aj) har eksisteret i mange år, og det er nok en af de mest udbredte editorer i verden. Grunden er bl.a., at vi findes på alle Unix-systemer og er så lille, at den næsten altid startes op uanset belastning af maskinen. En anden meget god grund til (også) at lære en tekstbaseret editor som vi er at den dag din Linux-maskine har f.eks. et hardware-problem og du måske ikke kan starte i grafiktilstand eller skal køre i enkeltbrugertilstand (kun som systemadministrator), så er det editorer som vi du skal kunne bruge sikkert.

Du skal vide at vi nok kan være en pine for nybegynderen, men for den erfarne er vi en ganske kraftig teksteditor, med mulighed for kald af makroer/funktioner. vi findes også til andre styresystemer end Linux/Unix.

Lad os antage, at du vil skrive en eller anden tekst, og du vil have, at filen skal hedde minFil.txt. Editoren vi startes på følgende måde:

[tyge@hven MitKatalog]$  vi minFil.txt

Til at begynde med står der intet andet end en masse ~-tegn (kaldet tilde) – ét ~-tegn på hver linje. Det betyder, at disse linjer ikke eksisterer i filen endnu. vi arbejder i et af to modi: indsæt- eller kommando-modus. Trykker du på i, når du er i kommando-modus, går du over i indsæt-modus, mens du skal trykke på Escape, hvis du ønsker at komme i kommando-modus. Du kan se, hvilket modus du er i nederst på skærmen: Når der står -- INSERT --, er du i indsæt-modus.

En god måde at komme i gang med vi er at køre hjælplektionen (eng. tutor) igennem. Du finder tutor-filen under dokumentationen for vi og kopierer den over i dit eget katalog, så du ikke ødelægger den oprindelige, når du gennemgår lektionerne. Placeringen af tutor-filen kan variere lidt alt efter Linux-distribution og version af vi (5.6 nedenfor er versionnummeret).

[tyge@hven MitKatalog]$  cp /usr/doc/vim-common-5.6/tutor/tutor .

vi har en række funktioner, som du kan bruge i kommando-modus. Her er de mest almindelige.

Tabel 5-1. Oversigt over de mest anvendte vi-kommandoer.

Kommando Forklaring
:help Hjælp. Tast :q for at komme tilbage.
i Skift til indsæt-modus. Nu kan der føjes til filen, fra hvor man står.
a Skift til indsæt-modus for at tilføje. Nu kan der føjes til filen, efter der hvor man står.
A Gå til slutning af linjen og skift til indsæt-modus.
R Skift til overskrivnings-modus.
o Skift til indsæt-modus (open line) og indsæt ny linje under markør.
O Skift til indsæt-modus (open line) og indsæt ny linje over markør.
ESC Skift tilbage til kommando-modus.
h j k l I kommando-modus virker disse som piletasterne til at flytte rundt i filen.
Piletaster Bruges til at flytte rundt i filen.
_ Gå til første tegn på linjen.
$ Gå til slutning af linjen.
w Gå et ord frem.
b Gå et ord tilbage.
gg Gå til første linje i filen.
G Gå til sidste linje i filen.
<n>G Gå til n'te linje i filen.
} Gå et tekstafsnit frem.
{ Gå et tekstafsnit tilbage.
ma Sæt mærke med tegnet 'a'.
'a Gå til mærket 'a'.
tA Gå fremad til tegnet 'A'.
x Slet bogstav.
X Slet bogstav til venstre for markør.
J Slet linjeskift (join).
dw Slet ord (delete word).
dd Slet linje.
D Slet resten af linjen fra markøren.
3dd Slet tre linjer startende med linjen, du står i.
d} Slet tekstafsnit fremad (frem til næste blanke linje).
dtA Slet frem til tegnet 'A'.
u Fortryd sidste ændring (undo).
Ctrl-R Gentag sidste ændring (redo).
/tekst Søg fremad efter "tekst". Tryk / ENTER eller n for at søge videre.
?tekst Søg bagud efter "tekst". Tryk ? ENTER eller n for at søge videre.
: %s/STR1/STR2/g Søg i alle linjer og erstat STR1 med STR2.
Y Kopiér linjen du står i (yank).
4Y Kopiér 4 linjer til buffer startende med linjen, du står i (yank).
p Indsæt fra buffer (put). Dette virker både efter yank- og delete-ordrerne.
:set number Vis linjenumre.
:set nonumber Vis ikke linjenumre.
<n>G Gå til linje <n>.
Ctrl-f Gå en side frem.
Ctrl-b Gå en side tilbage.
Ctrl-g Viser nuværende linjenummer
:w Gem filen.
:w! Gem filen ubetinget.
:q! Stop vi uden at gemme filen.
:wq! Gem filen ubetinget, og stop editoren.
ZZ Gem filen, og stop editoren (samme som :wq!).
:w <NAVN> Gem filen som <NAVN>.
:e <NAVN> Hent filen <NAVN>.
:set wrap Sæt linjeombrydning til.
:set nowrap Slå linjeombrydning fra.
:set ts=2 Sæt tab-stop til 2 mellemrum.

En lidt nemmere måde at styre blok-markeringer i vi (eller rettere vim) er ved at bruge visuel modus. Tast v, V eller Ctrl-v og brug derefter piletasterne. Tast dernæst d for at klippe og y for at kopiere. Jump-kommandoer såsom G virker også.

Nok er vi en teksteditor, som er meget udbredt i Unix-verdenen, men du kan også læse lidt frem; der er alternativer, som er nemmere, såsom pico og mcedit samt nogle, der kan meget mere, såsom emacs.

Se mere om vi og udvidede versioner på http://www.vim.org. En ting man kan finde her, er at den udvidede vi, kaldet vim har syntaksfremhævning :)

Andre gode ressourcer er