vi(1p)

Från Wiki.linux.se -Linux wikipedia på Svenska.
Version från den 1 juni 2026 kl. 05.42 av Admin (diskussion | bidrag) (Skapade sidan med '{{DISPLAYTITLE:vi(1p)}} == PROLOG == Denna manualsida är en del av POSIX Programmer's Manual. Linux-implementationen av detta gränssnitt kan skilja sig från POSIX-beskrivningen. Se motsvarande Linux-manualsida för detaljer om Linux-specifikt beteende. Det är också möjligt att gränssnittet inte är implementerat på Linux. == NAMN == '''vi''' – skärmorienterad, visuell textredigerare == SYNOPSIS == <pre> vi [-rR] [-c kommando] [-t taggsträng] [-w storlek...')
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök


PROLOG

Denna manualsida är en del av POSIX Programmer's Manual. Linux-implementationen av detta gränssnitt kan skilja sig från POSIX-beskrivningen. Se motsvarande Linux-manualsida för detaljer om Linux-specifikt beteende. Det är också möjligt att gränssnittet inte är implementerat på Linux.

NAMN

vi – skärmorienterad, visuell textredigerare

SYNOPSIS

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

BESKRIVNING

Verktyget vi är en skärmorienterad textredigerare.

Denna POSIX-manual beskriver endast redigerarens open- och visual-lägen. Se även linjeredigeraren ex(1p) för ytterligare redigeringsmöjligheter som används i vi.

Användaren kan växla mellan vi och ex och köra ex-kommandon inifrån vi.

Denna manualsida använder termen redigeringsbuffert för att beskriva den text som för närvarande redigeras. Termen innebär inte någon särskild intern implementation. Alla redigeringsändringar utförs i redigeringsbufferten, och inga ändringar påverkar någon fil förrän ett redigerarkommando skriver filen.

När vi används fungerar terminalskärmen som ett fönster in i redigeringsbufferten. Ändringar i bufferten ska återspeglas på skärmen. Markörens position på skärmen anger positionen i redigeringsbufferten.

Vissa terminaler saknar alla funktioner som krävs för att stödja hela POSIX-definitionen av vi. När kommandon inte kan stödjas på sådana terminaler ska detta inte nödvändigtvis rapporteras som ett vanligt kommandofel. Implementationer kan antingen försöka utföra kommandot eller rapportera ett fel som beskriver terminalens begränsning.

OPTIONER

vi följer POSIX.1-2017, Base Definitions, avsnitt 12.2, Utility Syntax Guidelines, med undantaget att + kan tolkas som optionsavgränsare utöver -.

-c kommando

Se beskrivningen av optionen -c för ex(1p). Används för att köra ett kommando vid start.

-r

Se beskrivningen av optionen -r för ex(1p). Används vanligen för att återställa filer efter krasch.

-R

Se beskrivningen av optionen -R för ex(1p). Startar normalt i skrivskyddat läge.

-t taggsträng

Se beskrivningen av optionen -t för ex(1p). Öppnar vid en tagg.

-w storlek

Se beskrivningen av optionen -w för ex(1p).

OPERANDER

Se avsnittet OPERANDER i manualen för ex(1p) för en beskrivning av de operander som stöds av vi.

Vanligtvis anger operanden en eller flera filer som ska öppnas:

vi fil.txt
vi fil1.txt fil2.txt

STANDARDINMATNING

Om standardinmatningen inte är en terminalenhet är resultatet odefinierat.

Standardinmatningen består av en följd av kommandon och inmatad text, enligt den utökade beskrivningen.

Om läsning från standardinmatningen ger ett fel, eller om redigeraren upptäcker filslut från standardinmatningen, ska det motsvara en asynkron SIGHUP-händelse.

INDATAFILER

Se avsnittet INDATAFILER i manualen för ex(1p).

MILJÖVARIABLER

Se avsnittet MILJÖVARIABLER i manualen för ex(1p) för miljövariabler som påverkar vi.

Vanliga miljövariabler som i praktiken ofta påverkar vi-liknande redigerare är bland annat:

TERM

Anger terminaltyp.

HOME

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

EXINIT

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

SHELL

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

ASYNKRONA HÄNDELSER

Se avsnittet ASYNKRONA HÄNDELSER i manualen för ex(1p).

STANDARDUTMATNING

Om standardutmatningen inte är en terminalenhet är resultatet odefinierat.

Standardutmatningen kan användas för att skriva prompter till användaren, informationsmeddelanden och rader från filen.

STANDARDFEL

Om standardutmatningen inte är en terminalenhet är resultatet odefinierat.

Standardfel ska endast användas för diagnostiska meddelanden.

UTFILER

Se avsnittet UTFILER i manualen för ex(1p).

UTÖKAD BESKRIVNING

Om terminalen saknar de funktioner som krävs för att stödja någon del av POSIX-definitionen av vi, ska implementationer börja i ex-läge eller open-läge.

Efter initiering ska vi normalt vara i kommandoläge. Textinmatningsläge kan nås med flera kommandon som används för att infoga eller ändra text.

I textinmatningsläge används Esc för att återgå till kommandoläge.

LÄGEN I VI

Kommandoläge

Detta är standardläget när vi startar. Tangenter tolkas som kommandon, till exempel för att flytta markören, ta bort text, söka, spara eller avsluta.

Exempel:

h    flytta vänster
j    flytta ned
k    flytta upp
l    flytta höger
x    ta bort tecken
:w   spara
:q   avsluta

Textinmatningsläge

I detta läge skrivs tecken in i bufferten som vanlig text.

Du går in i textinmatningsläge med kommandon som:

i    infoga före markören
a    infoga efter markören
o    öppna ny rad under aktuell rad
O    öppna ny rad över aktuell rad

Du lämnar textinmatningsläget med:

Esc

Ex-läge

Kommandon som börjar med kolon, :, körs som ex'-kommandon.

Exempel:

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

SYMBOLER I KOMMANDOBESKRIVNINGAR

buffer

Se beskrivningen av buffer i manualen för ex(1p).

count

Ett positivt heltal som kan användas som valfritt argument till många kommandon. Det anger oftast repetitionsantal eller storlek. Om inget anges används normalt 1.

Exempel:

3j
5x
10dd

motion

Ett rörelsekommando som används som argument till kommandon som påverkar textområden, till exempel:
!
<
>
c
d
y

Exempel:

dw     ta bort till nästa ord
d$     ta bort till radslut
y}     kopiera till nästa stycke
c0     ändra till radens början

RÖRELSEKOMMANDON

Följande kommandon kan användas för markörrörelse och som rörelseargument till andra kommandon:

h j k l
0 $ ^
w W b B e E
( ) { }
[[ ]]
G
H M L
/ ?
n N
f F t T
; ,
| %
' `
+ -
Enter
Space
Backspace

GRUNDLÄGGANDE MARKÖRRÖ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.

0

Flytta till radens första tecken.

^

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

$

Flytta till radens slut.

w

Flytta framåt till början av nästa ord.

W

Flytta framåt till nästa stort ord, där ord avgränsas av blanktecken.

b

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

B

Flytta bakåt till föregående stort ord.

e

Flytta till slutet av ordet.

E

Flytta till slutet av stort ord.

G

Flytta till en rad. Utan antal går kommandot till sista raden.

Exempel:

1G      gå till första raden
G       gå till sista raden
25G     gå till rad 25

H

Flytta till översta raden på skärmen.

M

Flytta till mittenraden på skärmen.

L

Flytta till nedersta raden på skärmen.

%

Flytta till matchande parentes, hakparentes eller klammerparentes.

SID- OCH SKÄRMRÖRELSER

Ctrl-B

Sida bakåt.

Ctrl-F

Sida framåt.

Ctrl-D

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

Ctrl-U

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

Ctrl-E

Rulla framåt en rad.

Ctrl-Y

Rulla bakåt en rad.

Ctrl-L

Rensa och rita om skärmen.

Ctrl-R

Rita om skärmen.

Ctrl-G

Visa filinformation. Motsvarar i POSIX beskrivningen av ex file.

SÖKNING

/mönster

Sök framåt efter ett reguljärt uttryck.

?mönster

Sök bakåt efter ett reguljärt uttryck.

n

Upprepa senaste sökningen i samma riktning.

N

Upprepa senaste sökningen i motsatt riktning.

Exempel:

/main
?include
n
N

TECKENSÖKNING PÅ RAD

f tecken

Sök framåt till nästa förekomst av tecken på raden.

F tecken

Sök bakåt till föregående förekomst av tecken på raden.

t tecken

Sök framåt till tecknet före nästa förekomst av tecken.

T tecken

Sök bakåt till tecknet efter föregående förekomst av tecken.

;

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

,

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

INFOGA TEXT

i

Infoga text före markören.

I

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

a

Lägg till text efter markören.

A

Lägg till text i slutet av raden.

o

Öppna ny rad under aktuell rad och börja infoga text.

O

Öppna ny rad ovanför aktuell rad och börja infoga text.

Esc

Avsluta textinmatningsläge och återgå till kommandoläge.

ÄNDRA TEXT

r tecken

Ersätt tecknet under markören med tecken.

R

Gå in i ersättningsläge.

s

Ersätt aktuellt tecken med inmatad text.

S

Ersätt hela aktuell rad med inmatad 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

~

Växla skiftläge på aktuellt tecken eller textområde enligt implementationens beteende.

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.

Exempel:

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

KOPIERA OCH KLISTRA IN

y rörelse

Kopiera textområdet som anges av rörelsen.

Exempel:

yw     kopiera ord
y$     kopiera till radslut
yy     kopiera aktuell rad
3yy    kopiera tre rader
Y      kopiera rad

p

Klistra in efter markören eller efter aktuell rad, beroende på buffertens typ.

P

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

ÅNGRA OCH UPPREPA

u

Ångra senaste ändringen.

U

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

.

Upprepa senaste ändringskommando.

&

Upprepa senaste substitutionskommando.

INDENTERING OCH FILTER

< rörelse

Skjut textområdet åt vänster.

>' rörelse

Skjut textområdet åt höger.

! rörelse kommando

Filtrera textområdet genom ett skalkommando och ersätt texten med kommandots utmatning.

Exempel:

!!sort
!}fmt

MÄRKEN OCH HOPP

m tecken

Sätt ett märke med namnet tecken på aktuell position.

'' tecken

Hoppa till början av raden där märket finns.

` tecken

Hoppa till exakt position för märket.

Exempel:

ma
'a
`a

TAGGAR

Ctrl-]

Sök efter taggen under markören. Detta motsvarar ett ex tag-kommando med ordet under markören som argument.

SPARA OCH AVSLUTA

:w

Spara filen.

:w filnamn

Spara till angiven fil.

:q

Avsluta.

:q!

Avsluta utan att spara ändringar.

:wq

Spara och avsluta.

ZZ

Spara och avsluta om ändringar finns.

:x

Spara och avsluta, i många implementationer endast om filen ändrats.

RADKOMMANDON OCH EX-KOMMANDON

Kommandon som börjar med kolon körs som ex-kommandon.

Exempel:

:set number
:set nonumber
:1
:$
:25
:%s/gammalt/nytt/g
:read fil.txt
:write
:quit

SUBSTITUTION

Ett vanligt ex-kommando i vi är substitution:

:s/gammalt/nytt/

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

:s/gammalt/nytt/g

Byt alla förekomster på aktuell rad.

:%s/gammalt/nytt/g

Byt alla förekomster i hela filen.

:%s/gammalt/nytt/gc

Byt alla förekomster i hela filen, men fråga före varje ändring.

BUFFERT, ORD OCH STORA ORD

I POSIX-lokalen känner vi igen både ord och stora ord.

Ett ord är normalt en maximal följd av bokstäver, siffror och understreck, eller en maximal följd av andra icke-blanka skiljetecken.

Ett stort ord är en maximal följd av icke-blanka tecken som avgränsas av blanktecken.

Detta påverkar rörelsekommandon som:

w W b B e E

MENINGAR, STYCKEN OCH SEKTIONER

vi definierar gränser för meningar, stycken och sektioner. Dessa används av rörelsekommandon som:

( )
{ }
[[ ]]

(

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

)

Flytta framåt till början av nästa mening.

{

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

}

Flytta framåt till början av nästa stycke.

[[

Flytta bakåt till föregående sektionsgräns.

]]

Flytta framåt till nästa sektionsgräns.

FELHANTERING

Om ett fel inträffar vid tolkning eller körning av ett vi-kommando ska terminalen varnas. Kommandots körning stoppas, och markören ska inte modifieras vidare.

Om felet uppstod under expansion av en mappning ska tecken från expansionen normalt kastas bort.

Om felet uppstod under körning av en buffert ska inga ytterligare kommandon från bufferten köras.

EXEMPEL

Öppna en fil:

vi fil.txt

Öppna flera filer:

vi fil1.txt fil2.txt

Starta och kör ett kommando direkt:

vi -c 'set number' fil.txt

Öppna filen och hoppa till en tagg:

vi -t main

Återställ en fil efter krasch, om implementationen stöder det:

vi -r fil.txt

Öppna skrivskyddat:

vi -R fil.txt

PRAKTISK SNABBREFERENS

Kommando Betydelse
i Infoga före markören
a Infoga efter markören
Esc Återgå till kommandoläge
h j k l Flytta vänster, ned, upp, 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
u Ångra
. Upprepa senaste ändring
/text Sök framåt
?text Sök bakåt
n Nästa sökträff
:w Spara
:q Avsluta
:q! Avsluta utan att spara
:wq Spara och avsluta

AVSLUTNINGSSTATUS

POSIX-manualens avslutningsstatus för vi hänvisar till beteendet i ex och implementationens hantering av fel.

I praktiken returneras normalt 0 vid lyckad körning och ett värde större än 0 vid fel.

KONSEKVENSER AV FEL

Se motsvarande avsnitt för ex(1p) och POSIX-beskrivningen.

ANVÄNDNING I PROGRAM

vi är i första hand en interaktiv redigerare och lämpar sig normalt inte som filter i skript.

För skriptmässig textbearbetning används normalt verktyg som:

BAKGRUND OCH MOTIVERING

vi bygger historiskt på ex och den äldre UNIX-redigerartraditionen. POSIX beskriver de delar som krävs för portabelt beteende i open- och visual-lägena.

Många moderna implementationer, till exempel Vim, nvi och BusyBox vi, erbjuder fler funktioner än POSIX kräver.

FRAMTIDA RIKTNINGAR

Inga särskilda framtida riktningar anges i den här sammanfattade MediaWiki-versionen.

SE ÄVEN

POSIX.1-2017, Base Definitions:

  • Avsnitt 12.2, Utility Syntax Guidelines

COPYRIGHT

Delar av denna text ä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, Copyright (C) 2018 by Institute of Electrical and Electronics Engineers, Inc och The Open Group.

Om det finns någon avvikelse mellan denna 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 på:

http://www.opengroup.org/unix/online.html

Typografiska fel eller formateringsfel på denna manualsida har troligen uppstått vid konvertering av källfilerna till manualsidesformat. Sådana fel kan rapporteras enligt informationen på:

https://www.kernel.org/doc/man-pages/reporting_bugs.html

KORT SAMMANFATTNING

vi är en klassisk skärmorienterad textredigerare.

Starta:

vi fil.txt

Skriv text:

i
text...
Esc

Spara:

:w

Avsluta:

:q

Spara och avsluta:

:wq

Avsluta utan att spara:

:q!

De viktigaste lägena är:

  • kommandoläge
  • textinmatningsläge
  • ex-läge

De viktigaste tangenterna att komma ihåg är:

i    börja infoga text
Esc  tillbaka till kommandoläge
:w   spara
:q   avsluta
:q!  avsluta utan att spara

ANMÄRKNING OM DENNA ÖVERSÄTTNING

Manualsidan vi(1p) är mycket omfattande och innehåller en mycket lång formell POSIX-definition av alla öppna och visuella kommandon, rörelser, textregioner, buffertar, reguljära uttryck, kommandolägen och felvillkor.

Denna MediaWiki-fil innehåller en svensk översättning och praktisk bearbetning av huvuddelarna, inledningen, optionerna, centrala POSIX-begrepp och de viktigaste kommandona. Den är avsedd som en användbar svensk wikiartikel snarare än en ord-för-ord-kopia av hela den mycket långa POSIX-specifikationen.