lu.se

Datavetenskap

Lunds Tekniska Högskola

Denna sida på svenska This page in English

vi

vi är en editor med oförtjänt dåligt rykte. Det är dock en god idé att ha en hum om den; ibland är vi det enda som kan rädda ett krashat läge. Exempelvis är vi ett ovärderligt verktyg när man måste minska storleken på t.ex. en mailfil som ligger över quota-gränsen: vi skapar nämligen inte någon backupfil.

vi är en editor som har två s.k. moder (kallas ibland lägen) som man växlar mellan:
1. inmatningsmode
2. kommandomode

I inmatningsmoden skriver man in text så som man vill ha den.

I kommandomoden ger man kommandon såsom skriv filen till disk, ta bort rader eller avsluta programmet (med eller utan att spara eventuella ändringar). En liten varning kan utfärdas: vi skiljer på små och STORA tecken vad gäller kommandoläget.

När man startar programmet är man i kommandoläge. Man går vanligen över i inmatningsläge genom att trycka i (insert) och kommer tillbaka från det genom att trycka på escape-tangenten.

Kommandon som har att göra med att spara filer, avsluta vi etc. börjar alltid med : (kolon - givetvis måste man vara i kommandoläget när man trycker kolon).

krumeluren ^ betyder nedan control (d.v.s. att man trycker på control-tangenten).

 

 

Kort-kort vi-handledning

iGå till inmatningsläge.
ESCLämna inmatningsläge och gå till kommandoläge (där man kan spara filen, avsluta programmet etc.)
:xSpara filen och avsluta vi (ZZ gör samma sak)
(Var uppmärksam så att du inte trycker på X (stora x); då kommer vi att fråga efter nyckel som dokumentet kommer att krypteras med!)
:qAvsluta vi (:q! avslutar utan att spara eventuella ändringar)
u
[Undo]
Ångrar senaste ändringen
högerpil, vänsterpil, uppåtpil, nedåtpilFlytta markör en ett steg till höger, vänster, uppåt respektive nedåt
xTa bort tecken
(med en siffra, n, framför tas n tecken bort)
ddta bort en rad
(med en siffra, n, framför tas n rader bort)
cw
[Change Word]
Ändra ett ord
(med en siffra, n, framför, ändras n ord i ett svep)
dw
[Delete Word]
Ta bort ett ord
(med en siffra, n, framför, tas n ord i ett svep)
 

Något mera avancerade saker

Blandade kommandon

/textSök [framåt i texten] efter text
?textSök [bakåt i texten] efter text
:set icGör sökningar icke-case-sensitive
:[rad1[,rad2]]s/sök/ers/[cgp]Sök/ändra i texten från rad1 till rad2 (annars på den rad man står)
c = Prompt before each substitution
g = Replace all matches on a line
p = Print line after substitution
rxErsätt ett enstaka tecken med x
RErsätt alla tecken framöver (avslutas med escape)
CÄndra resten av raden [Change]
DRadera resten av raden [Delete]
JSlå ihop rader [Join]
Y
[Yank = rycka, slita, dra]
Kopiera aktuell rad till utklippsbuffert
(med en siffra, n, framför kopieras n rader)
P
[Paste]
Klistra in den rad som finns i utklippsbufferten
(med en siffra, n, framför klistras n rader in)
.Upprepa senaste insert/delete/modify
(VARNING utfärdas: se till att du vet vad du gör!)
:shStartar ett [externt] shell. När detta avslutas med exit återvänder man till vi
^Ändrar skiftläge (d.v.s. gemen text blir VERSAL och tvärtom)
fxSök efter nästa förekomsten av x
FxSök efter föregående förekomst av x
 

Gå till inmatningsläge

aSätt markören efter aktuell position och gå in i insert-mode
ASätt markören sist på raden och gå in i insert-mode
iGå in i insert-mode där markören står
ISätt markören före första skrivbara tecknet på raden och gå in i insert-mode
oGå till insert som börjar på en ny tom rad nedanför
OGå till insert som börjar på en ny tom rad ovanför
 

Förflytta sig i dokumentet

^lRita om skärmen
^fRulla en hel sida framåt
^dRulla en halv sida framåt
^bRulla en hel sida bakåt
^uRulla en halv sida bakåt
^eRulla skärmen en rad uppåt
^yRulla skärmen en rad nedåt
 

Flytta markören

högerpil alternativtlFlytta markören ett steg till höger
vänsterpil alternativthFlytta markören ett steg till vänster
uppåtpil alternativt k alternativt -Flytta markören ett steg till uppåt
nedåtpil alternativt j alternativt + alternativt ReturnFlytta markören ett steg till nedåt
wFlytta markören ett ord framåt
(W flyttar sig till nästa ord som är separerat av mellanslag)
bFlytta markören ett ord bakåt
(B flyttar sig till föregående ord som är separerat av mellanslag)
0 (siffran noll, inte bokstaven ”o”) Sätt markören vid början av raden
$Sätt markören vid radens slut
HSätt markören på den översta raden på skärmen
MSätt markören på den mellersta raden på skärmen
LSätt markören på den nedersta raden på skärmen
eFlytta markören till slutet av ordet
nGGå till rad n (om n utelämnas antas sista raden)
)
(
Flytta markören till raden efter nästa return
Flytta markören till raden före föregående return
}
{
Flytta markören till raden efter nästa tomrad
Flytta markören till raden före föregående tomrad
 

Filmanipulation

:w
[Write]
Skriv filen
(:w! skriver över en skrivskyddad fil - om det går)
:x
[eXit]
Skriv filen och avsluta vi
(:x! gör som :w! ovan)
:q
[Quit]
Avslutar vi
(:q! avsluta utan att spara några ändringar)
:exxx
[Edit]
Editera filen xxx

Tag bort rad X till rad Y i FIL:
vi +'X,Yd' +wq FIL

Ersätta OLD med NEW i ”vi”

På aktuell rad:
:s/OLD/NEW/g

På alla rader:
:%s/OLD/NEW/g