vi(1p): Skillnad mellan sidversioner

Från Wiki.linux.se -Linux wikipedia på Svenska.
Hoppa till navigering Hoppa till sök
Ingen redigeringssammanfattning
 
Rad 1 142: Rad 1 142:


Det viktigaste att komma ihåg är att '''vi''' har olika lägen. Om något inte fungerar som väntat, tryck '''Esc''' för att återgå till kommandoläge.
Det viktigaste att komma ihåg är att '''vi''' har olika lägen. Om något inte fungerar som väntat, tryck '''Esc''' för att återgå till kommandoläge.
= Sidslut =
Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/vi.1p.html
Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
<BR><BR>Tack till [https://datorhjalp.se/web/datorhjalp-hemma// Datorhjälp hemma] som har  sponsrat [https://www.linux.se Linux.se] med webbhotell.
[[Kategori:Linuxmanual grupp 1]]
[[Kategori:Linuxmanual]]

Nuvarande version från 1 juni 2026 kl. 06.16


PROLOG

Denna sida bygger på POSIX-manualsidan vi(1p).

POSIX-manualen beskriver det standardiserade gränssnittet för vi. En faktisk Linux-implementation kan skilja sig från POSIX-beskrivningen. Vissa system använder till exempel nvi, vim, busybox vi eller andra implementationer.

NAMN

vi – skärmorienterad visuell textredigerare

SYNOPSIS

vi [-rR] [-c kommando] [-t taggsträng] [-w storlek] [fil...]

BESKRIVNING

vi är en skärmorienterad textredigerare. Den används för att redigera textfiler direkt i en terminal.

POSIX-definitionen av vi beskriver framför allt redigerarens visuella läge och öppna läge. vi är nära kopplad till linjeredigeraren ex. Många kommandon i vi är i själva verket ex-kommandon som körs genom att man skriver kolon följt av kommandot.

Exempel:

:w
:q
:wq
:set number
:%s/gammalt/nytt/g

I vi finns texten som redigeras i en redigeringsbuffert. Ändringar påverkar inte filen på disken förrän användaren skriver bufferten till fil, till exempel med kommandot ':w.

Terminalskärmen fungerar som ett fönster in i redigeringsbufferten. Markörens position visar aktuell plats i bufferten.

VIKTIGA LÄGEN

Kommandoläge

När vi startar befinner sig redigeraren normalt i kommandoläge. I detta läge tolkas tangenttryckningar som kommandon.

Exempel:

h    flytta markören åt vänster
j    flytta markören nedåt
k    flytta markören uppåt
l    flytta markören åt höger
x    ta bort tecknet under markören
dd   ta bort aktuell rad
:w   skriv filen
:q   avsluta

Inmatningsläge

I inmatningsläge skrivs tecken in som text i filen.

Vanliga kommandon för att gå till inmatningsläge:

i    infoga före markören
a    infoga efter markören
I    infoga vid radens början
A    infoga vid radens slut
o    öppna en ny rad under aktuell rad
O    öppna en ny rad över aktuell rad

För att lämna inmatningsläget används:

Esc

Ex-läge

Ex-läget nås genom att skriva kolon i kommandoläge. Då kan man skriva ett ex-kommando.

Exempel:

:w
:q
:q!
:wq
:set number
:set nonumber
:%s/foo/bar/g

OPTIONER

-c kommando

Kör det angivna kommandot efter att den första filen har lästs in.

Exempel:

vi -c 'set number' fil.txt

-r

Återställ en fil efter en tidigare avbruten redigeringssession, om implementationen stöder sådan återställning.

Exempel:

vi -r fil.txt

-R

Öppna filen i skrivskyddat läge. Detta motsvarar normalt att sätta redigerarens readonly-alternativ.

Exempel:

vi -R fil.txt

-t taggsträng

Öppna redigeraren vid den plats som motsvarar taggen taggsträng. Detta används tillsammans med taggfiler, ofta skapade av ctags.

Exempel:

vi -t main

-w storlek

Anger fönsterstorlek eller relaterad skärminställning enligt implementationens och ex-manualens beskrivning.

OPERANDER

fil

En eller flera filer som ska öppnas för redigering.

Exempel:

vi fil.txt
vi fil1.txt fil2.txt

Om flera filer anges kan man växla mellan dem med ex-kommandon som:

:n
:next
:prev
:rewind

STANDARDINMATNING

vi är en interaktiv terminalredigerare. Om standardinmatningen inte är en terminal är resultatet odefinierat enligt POSIX.

STANDARDUTMATNING OCH STANDARDFEL

vi förutsätter normalt att både inmatning och utmatning sker via en terminal. Skärmen används för redigeringsfönstret, meddelanden, statusrader och kommandorad.

Diagnostiska meddelanden skrivs normalt till terminalen.

MILJÖVARIABLER

Följande miljövariabler är särskilt viktiga för vi-liknande redigerare.

TERM

Anger terminaltyp. Redigeraren använder terminaltypen för att veta hur skärmen ska styras.

HOME

Används ofta för att hitta användarens konfigurationsfiler.

SHELL

Anger vilket skal som används när externa kommandon körs.

EXINIT

Kan användas av vissa implementationer för initialiseringskommandon.

GRUNDLÄGGANDE ARBETSGÅNG

Öppna en fil:

vi fil.txt

Gå till inmatningsläge:

i

Skriv text.

Gå tillbaka till kommandoläge:

Esc

Spara filen:

:w

Avsluta:

:q

Spara och avsluta:

:wq

Avsluta utan att spara:

:q!

MARKÖRRÖRELSER

Enkla rörelser

h

Flytta ett tecken åt vänster.

j

Flytta en rad nedåt.

k

Flytta en rad uppåt.

l

Flytta ett tecken åt höger.

mellanslag

Flytta ett tecken åt höger.

Backspace

Flytta ett tecken åt vänster, om implementationen stöder detta.

Rörelser inom rad

0

Flytta till radens början.

^

Flytta till första icke-blanka tecknet på raden.

$

Flytta till radens slut.

|

Flytta till en viss kolumn på raden. Om ett antal anges används detta som kolumnnummer.

Exempel:

10|

Rörelser mellan ord

w

Flytta till början av nästa ord.

W

Flytta till början av nästa stort ord. Ett stort ord avgränsas normalt endast av blanktecken.

b

Flytta till början av föregående ord.

B

Flytta till början av föregående stort ord.

e

Flytta till slutet av aktuellt eller nästa ord.

E

Flytta till slutet av aktuellt eller nästa stort ord.

RAD- OCH FILRÖRELSER

G

Flytta till sista raden i filen. Om ett antal anges flyttas markören till den raden.

Exempel:

G
1G
25G

+

Flytta till första icke-blanka tecknet på nästa rad.

-

Flytta till första icke-blanka tecknet på föregående rad.

Enter

Flytta till första icke-blanka tecknet på nästa rad.

H

Flytta till översta raden i skärmfönstret.

M

Flytta till mittenraden i skärmfönstret.

L

Flytta till nedersta raden i skärmfönstret.

SKÄRMRULLNING

Ctrl-F

Rulla framåt en skärm.

Ctrl-B

Rulla bakåt en skärm.

Ctrl-D

Rulla nedåt, normalt en halv skärm.

Ctrl-U

Rulla uppåt, normalt en halv skärm.

Ctrl-E

Rulla skärmen en rad nedåt.

Ctrl-Y

Rulla skärmen en rad uppåt.

Ctrl-L

Rita om skärmen.

Ctrl-R

Rita om skärmen.

Ctrl-G

Visa information om aktuell fil, radnummer och status.

SÖKNING

/ mönster

Sök framåt efter ett mönster.

? mönster

Sök bakåt efter ett mönster.

n

Upprepa den senaste sökningen i samma riktning.

N

Upprepa den senaste sökningen i motsatt riktning.

Exempel:

/main
?include
n
N

TECKENSÖKNING PÅ AKTUELL RAD

f tecken

Flytta framåt till nästa förekomst av tecknet på raden.

F tecken

Flytta bakåt till föregående förekomst av tecknet på raden.

t tecken

Flytta framåt till tecknet före nästa förekomst av det angivna tecknet.

T tecken

Flytta bakåt till tecknet efter föregående förekomst av det angivna tecknet.

;

Upprepa senaste f, F, t eller T i samma riktning.

,

Upprepa senaste f, F, t eller T i motsatt riktning.

PARENTESMATCHNING

%

Flytta till matchande parentes, hakparentes eller klammerparentes.

Exempel:

( )
[ ]
{ }

INFOGA TEXT

i

Infoga text före markören.

I

Infoga text vid början av aktuell rad, normalt före första icke-blanka tecken.

a

Lägg till text efter markören.

A

Lägg till text vid radens slut.

o

Öppna en ny rad under aktuell rad och gå till inmatningsläge.

O

Öppna en ny rad ovanför aktuell rad och gå till inmatningsläge.

ERSÄTTA OCH ÄNDRA TEXT

r tecken

Ersätt tecknet under markören med det angivna tecknet.

R

Gå till ersättningsläge, där inskrivna tecken ersätter befintliga tecken.

s

Ersätt aktuellt tecken med ny text.

S

Ersätt hela aktuell rad med ny text.

c rörelse

Ändra textområdet som anges av rörelsen.

Exempel:

cw     ändra ord
c$     ändra till radslut
cc     ändra hela raden
C      ändra till radslut

TA BORT TEXT

x

Ta bort tecknet under markören.

X

Ta bort tecknet före markören.

d rörelse

Ta bort textområdet som anges av rörelsen.

Vanliga former:

dw     ta bort ord
d$     ta bort till radslut
d0     ta bort till radbörjan
dd     ta bort aktuell rad
D      ta bort till radslut

Med antal:

3dd    ta bort tre rader
5x     ta bort fem tecken

KOPIERA TEXT

y rörelse

Kopiera textområdet som anges av rörelsen.

Vanliga former:

yw     kopiera ord
y$     kopiera till radslut
yy     kopiera aktuell rad
Y      kopiera aktuell rad

Med antal:

3yy    kopiera tre rader

KLISTRA IN TEXT

p

Klistra in efter markören eller efter aktuell rad, beroende på vilken typ av text som kopierats eller tagits bort.

P

Klistra in före markören eller före aktuell rad.

ÅNGRA OCH UPPREPA

u

Ångra senaste ändring.

U

Ångra ändringar på aktuell rad enligt klassiskt vi-beteende.

.

Upprepa senaste ändringskommando.

&

Upprepa senaste substitutionskommando.

INDENTERING

< rörelse

Skjut textområdet åt vänster.

>' rörelse

Skjut textområdet åt höger.

Vanliga former:

>>     skjut aktuell rad åt höger
<<     skjut aktuell rad åt vänster
>G     skjut från aktuell rad till filens slut åt höger

FILTRERA TEXT GENOM KOMMANDO

! rörelse kommando

Skicka textområdet till ett externt kommando och ersätt området med kommandots utmatning.

Exempel:

!!sort
!}fmt

MÄRKEN

m tecken

Sätt ett märke på aktuell position.

\' tecken

Hoppa till raden där märket finns.

` tecken

Hoppa till exakt position för märket.

Exempel:

ma
'a
`a

BUFFERTAR

Många vi-kommandon kan använda namngivna buffertar. En buffert anges ofta med dubbelcitat följt av buffertnamn.

Exempel:

"ayy
"ap

Detta kopierar en rad till buffert a och klistrar sedan in från buffert a.

KOMMANDON MED ANTAL

Många kommandon kan föregås av ett antal.

Exempel:

5j      flytta fem rader nedåt
3w      flytta tre ord framåt
10x     ta bort tio tecken
4dd     ta bort fyra rader
2yy     kopiera två rader

RÖRELSE SOM ARGUMENT

Flera kommandon använder ett rörelsekommando som argument. Det gäller bland annat:

c
d
y
!
<
>

Exempel:

dw      ta bort till nästa ord
cw      ändra till nästa ord
y$      kopiera till radslut
d}      ta bort till nästa stycke
!Gsort  sortera från aktuell rad till filens slut

MENINGAR, STYCKEN OCH SEKTIONER

(

Flytta till början av föregående mening.

)

Flytta till början av nästa mening.

{

Flytta till början av föregående stycke.

}

Flytta till början av nästa stycke.

[[

Flytta till föregående sektionsgräns.

]]

Flytta till nästa sektionsgräns.

EX-KOMMANDON I VI

Kolon används för att köra ex-kommandon.

':w

Skriv bufferten till fil.

':w fil

Skriv bufferten till angiven fil.

':q

Avsluta om inga osparade ändringar finns.

':q!

Avsluta utan att spara.

':wq

Spara och avsluta.

':x

Spara och avsluta.

':e fil

Redigera en annan fil.

':e!

Läs om aktuell fil från disk och kasta osparade ändringar.

':r fil

Läs in en fil efter aktuell rad.

':set alternativ

Sätt ett redigeringsalternativ.

':set all

Visa alla alternativ.

':set number

Visa radnummer.

':set nonumber

Dölj radnummer.

SUBSTITUTION

Substitution görs med ex-kommandot s.

Byt första förekomsten på aktuell rad:

:s/gammalt/nytt/

Byt alla förekomster på aktuell rad:

:s/gammalt/nytt/g

Byt alla förekomster i hela filen:

:%s/gammalt/nytt/g

Fråga före varje byte:

:%s/gammalt/nytt/gc

Byt i ett radintervall:

:10,20s/gammalt/nytt/g

TAGGAR

Ctrl-]

Hoppa till taggen under markören.

:tag namn

Hoppa till angiven tagg.

Taggar används vanligen tillsammans med en taggfil som skapats med ctags.

SPARA OCH AVSLUTA

Spara:

:w

Spara till annat filnamn:

:w nyfil.txt

Avsluta:

:q

Avsluta utan att spara:

:q!

Spara och avsluta:

:wq

Klassiskt kortkommando för spara och avsluta:

ZZ

SKAL-KOMMANDON

:! kommando

Kör ett skalkommando.

Exempel:

:!ls
:!date

:sh

Starta ett skal. Återgå till redigeraren genom att avsluta skalet.

REDIGERINGSALTERNATIV

Vanliga alternativ i vi eller ex:

number

Visa radnummer.

nonumber

Dölj radnummer.

readonly

Ange att filen är skrivskyddad.

ignorecase

Gör sökning okänslig för versaler och gemener.

noignorecase

Gör sökning känslig för versaler och gemener.

autoindent

Behåll indrag vid ny rad.

noautoindent

Stäng av automatisk indragning.

Exempel:

:set number
:set nonumber
:set ignorecase
:set noignorecase
:set autoindent
:set noautoindent

FEL OCH DIAGNOSTIK

Om ett kommando inte kan utföras ska vi normalt ge en signal till användaren, ofta genom ett ljud, en visuell signal eller ett felmeddelande på kommandoraden.

Exempel på fel:

  • försök att avsluta utan att spara ändringar
  • försök att skriva till en fil utan behörighet
  • okänd kommandoform
  • sökmönster som inte hittas
  • rörelse förbi filens början eller slut

AVSLUTNINGSSTATUS

POSIX anger normalt att verktyg returnerar 0 när de slutförts utan fel och ett värde större än 0 när ett fel inträffat. För interaktiva redigerare kan exakt beteende bero på implementationen.

PRAKTISK SNABBREFERENS

Kommando Betydelse
i Börja infoga text före markören
a Börja infoga text efter markören
Esc Återgå till kommandoläge
h Flytta vänster
j Flytta ned
k Flytta upp
l Flytta höger
0 Gå till radens början
$ Gå till radens slut
w Nästa ord
b Föregående ord
x Ta bort tecken
dd Ta bort rad
yy Kopiera rad
p Klistra in efter
P Klistra in före
u Ångra
. Upprepa senaste ändring
/text Sök framåt
?text Sök bakåt
n Upprepa sökning
N Upprepa sökning åt andra hållet
:w Spara
:q Avsluta
:q! Avsluta utan att spara
:wq Spara och avsluta
ZZ Spara och avsluta

EXEMPEL

Öppna en fil:

vi fil.txt

Öppna en fil skrivskyddat:

vi -R fil.txt

Starta med radnummer aktiverade:

vi -c 'set number' fil.txt

Öppna vid taggen main:

vi -t main

Sök efter ordet main:

/main

Byt alla förekomster av foo till bar:

:%s/foo/bar/g

Ta bort fem rader:

5dd

Kopiera tre rader och klistra in dem:

3yy
p

ANVÄNDNING I SKRIPT

vi är avsedd för interaktiv redigering. För automatiserad textbearbetning används normalt andra verktyg.

Exempel på bättre verktyg i skript:

SKILLNAD MELLAN VI OCH MODERNA IMPLEMENTATIONER

POSIX beskriver en standardiserad kärna av vi.

Moderna implementationer kan ha många extra funktioner, till exempel:

  • syntaxfärgning
  • flera ångranivåer
  • fönster och flikar
  • utökade reguljära uttryck
  • plugins
  • Unicode-funktioner
  • musintegration

Sådana funktioner är inte nödvändigtvis portabla enligt POSIX.

SE ÄVEN

COPYRIGHT

Delar av originaltexten i POSIX-manualen är återgivna och reproducerade i elektronisk form från IEEE Std 1003.1-2017, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 7, 2018 Edition.

Om det finns någon avvikelse mellan denna bearbetade svenska version och den ursprungliga standarden från IEEE och The Open Group är den ursprungliga standarden den avgörande referensen.

Den ursprungliga standarden kan hämtas online från The Open Group.

KORT SAMMANFATTNING

vi är en klassisk terminalbaserad textredigerare.

Öppna fil:

vi fil.txt

Infoga text:

i

Lämna inmatningsläge:

Esc

Spara:

:w

Avsluta:

:q

Spara och avsluta:

:wq

Avsluta utan att spara:

:q!

Det viktigaste att komma ihåg är att vi har olika lägen. Om något inte fungerar som väntat, tryck Esc för att återgå till kommandoläge.

Sidslut

Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/vi.1p.html Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp hemma som har sponsrat Linux.se med webbhotell.