vi(1p): Skillnad mellan sidversioner
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...') |
Admin (diskussion | bidrag) |
||
| (2 mellanliggande sidversioner av samma användare visas inte) | |||
| Rad 3: | Rad 3: | ||
== PROLOG == | == PROLOG == | ||
Denna | 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 == | == NAMN == | ||
'''vi''' – skärmorienterad | '''vi''' – skärmorienterad visuell textredigerare | ||
== SYNOPSIS == | == SYNOPSIS == | ||
| Rad 17: | Rad 19: | ||
== BESKRIVNING == | == 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: | |||
<pre> | |||
:w | |||
:q | |||
:wq | |||
:set number | |||
:%s/gammalt/nytt/g | |||
</pre> | |||
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: | |||
<pre> | |||
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 | |||
</pre> | |||
=== Inmatningsläge === | |||
I inmatningsläge skrivs tecken in som text i filen. | |||
Vanliga kommandon för att gå till inmatningsläge: | |||
<pre> | |||
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 | |||
</pre> | |||
: | För att lämna inmatningsläget används: | ||
<pre> | |||
Esc | |||
</pre> | |||
=== Ex-läge === | |||
Ex-läget nås genom att skriva kolon i kommandoläge. Då kan man skriva ett '''ex'''-kommando. | |||
: | Exempel: | ||
<pre> | |||
:w | |||
:q | |||
:q! | |||
:wq | |||
:set number | |||
:set nonumber | |||
:%s/foo/bar/g | |||
</pre> | |||
== OPTIONER == | |||
'''-c''' ''kommando'' | |||
: Kör det angivna kommandot efter att den första filen har lästs in. | |||
Exempel: | |||
<pre> | <pre> | ||
vi fil | vi -c 'set number' fil.txt | ||
</pre> | </pre> | ||
'''-r''' | |||
: Återställ en fil efter en tidigare avbruten redigeringssession, om implementationen stöder sådan återställning. | |||
Exempel: | |||
<pre> | |||
vi -r fil.txt | |||
</pre> | |||
'''-R''' | |||
: Öppna filen i skrivskyddat läge. Detta motsvarar normalt att sätta redigerarens '''readonly'''-alternativ. | |||
Exempel: | |||
<pre> | |||
vi -R fil.txt | |||
</pre> | |||
'''-t''' ''taggsträng'' | |||
''' | : Öppna redigeraren vid den plats som motsvarar taggen ''taggsträng''. Detta används tillsammans med taggfiler, ofta skapade av '''ctags'''. | ||
: | Exempel: | ||
<pre> | |||
vi -t main | |||
</pre> | |||
'''-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: | |||
<pre> | |||
vi fil.txt | |||
vi fil1.txt fil2.txt | |||
</pre> | |||
Om flera filer anges kan man växla mellan dem med '''ex'''-kommandon som: | |||
<pre> | |||
:n | |||
:next | |||
:prev | |||
:rewind | |||
</pre> | |||
== 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: | |||
<pre> | <pre> | ||
vi fil.txt | |||
</pre> | </pre> | ||
Gå till inmatningsläge: | |||
<pre> | <pre> | ||
i | |||
</pre> | </pre> | ||
Skriv text. | |||
Gå tillbaka till kommandoläge: | |||
<pre> | <pre> | ||
Esc | |||
</pre> | </pre> | ||
Spara filen: | |||
<pre> | <pre> | ||
:w | |||
</pre> | </pre> | ||
Avsluta: | |||
<pre> | <pre> | ||
:q | |||
</pre> | </pre> | ||
Spara och avsluta: | |||
<pre> | <pre> | ||
:wq | |||
</pre> | </pre> | ||
Avsluta utan att spara: | |||
<pre> | <pre> | ||
:q! | |||
</pre> | </pre> | ||
== | == MARKÖRRÖRELSER == | ||
=== Enkla rörelser === | |||
'''h''' | '''h''' | ||
| Rad 259: | Rad 256: | ||
: Flytta ett tecken åt höger. | : 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''' | '''0''' | ||
: Flytta till radens | : Flytta till radens början. | ||
'''^''' | '''^''' | ||
| Rad 271: | Rad 278: | ||
: Flytta till radens slut. | : Flytta till radens slut. | ||
'''|''' | |||
: Flytta till en viss kolumn på raden. Om ett antal anges används detta som kolumnnummer. | |||
Exempel: | |||
<pre> | |||
10| | |||
</pre> | |||
=== Rörelser mellan ord === | |||
'''w''' | '''w''' | ||
: Flytta | : Flytta till början av nästa ord. | ||
'''W''' | '''W''' | ||
: Flytta | : Flytta till början av nästa stort ord. Ett stort ord avgränsas normalt endast av blanktecken. | ||
'''b''' | '''b''' | ||
: Flytta | : Flytta till början av föregående ord. | ||
'''B''' | '''B''' | ||
: Flytta | : Flytta till början av föregående stort ord. | ||
'''e''' | '''e''' | ||
: Flytta till slutet av | : Flytta till slutet av aktuellt eller nästa ord. | ||
'''E''' | '''E''' | ||
: Flytta till slutet av stort ord. | : Flytta till slutet av aktuellt eller nästa stort ord. | ||
== RAD- OCH FILRÖRELSER == | |||
'''G''' | '''G''' | ||
: Flytta till | : Flytta till sista raden i filen. Om ett antal anges flyttas markören till den raden. | ||
Exempel: | Exempel: | ||
<pre> | <pre> | ||
1G | G | ||
1G | |||
25G | 25G | ||
</pre> | </pre> | ||
'''+''' | |||
: 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''' | '''H''' | ||
: Flytta till översta raden | : Flytta till översta raden i skärmfönstret. | ||
'''M''' | '''M''' | ||
: Flytta till mittenraden | : Flytta till mittenraden i skärmfönstret. | ||
'''L''' | '''L''' | ||
: Flytta till nedersta raden | : Flytta till nedersta raden i skärmfönstret. | ||
== SKÄRMRULLNING == | |||
'''Ctrl-F''' | |||
: Rulla framåt en skärm. | |||
'''Ctrl-B''' | '''Ctrl-B''' | ||
: | : Rulla bakåt en skärm. | ||
'''Ctrl-D''' | '''Ctrl-D''' | ||
| Rad 344: | Rad 373: | ||
'''Ctrl-E''' | '''Ctrl-E''' | ||
: Rulla | : Rulla skärmen en rad nedåt. | ||
'''Ctrl-Y''' | '''Ctrl-Y''' | ||
: Rulla | : Rulla skärmen en rad uppåt. | ||
'''Ctrl-L''' | '''Ctrl-L''' | ||
: | : Rita om skärmen. | ||
'''Ctrl-R''' | '''Ctrl-R''' | ||
| Rad 360: | Rad 389: | ||
'''Ctrl-G''' | '''Ctrl-G''' | ||
: Visa | : Visa information om aktuell fil, radnummer och status. | ||
== SÖKNING == | == SÖKNING == | ||
'''/mönster | '''/''' ''mönster'' | ||
: Sök framåt efter ett | : Sök framåt efter ett mönster. | ||
'''?mönster | '''?''' ''mönster'' | ||
: Sök bakåt efter ett | : Sök bakåt efter ett mönster. | ||
'''n''' | '''n''' | ||
: Upprepa senaste sökningen i samma riktning. | : Upprepa den senaste sökningen i samma riktning. | ||
'''N''' | '''N''' | ||
: Upprepa senaste sökningen i motsatt riktning. | : Upprepa den senaste sökningen i motsatt riktning. | ||
Exempel: | Exempel: | ||
| Rad 389: | Rad 418: | ||
</pre> | </pre> | ||
== TECKENSÖKNING PÅ RAD == | == TECKENSÖKNING PÅ AKTUELL RAD == | ||
'''f''' ''tecken'' | '''f''' ''tecken'' | ||
: | : Flytta framåt till nästa förekomst av tecknet på raden. | ||
'''F''' ''tecken'' | '''F''' ''tecken'' | ||
: | : Flytta bakåt till föregående förekomst av tecknet på raden. | ||
'''t''' ''tecken'' | '''t''' ''tecken'' | ||
: | : Flytta framåt till tecknet före nästa förekomst av det angivna tecknet. | ||
'''T''' ''tecken'' | '''T''' ''tecken'' | ||
: | : Flytta bakåt till tecknet efter föregående förekomst av det angivna tecknet. | ||
''';''' | ''';''' | ||
| Rad 414: | Rad 443: | ||
: Upprepa senaste '''f''', '''F''', '''t''' eller '''T''' i motsatt riktning. | : Upprepa senaste '''f''', '''F''', '''t''' eller '''T''' i motsatt riktning. | ||
== PARENTESMATCHNING == | |||
'''%''' | |||
: Flytta till matchande parentes, hakparentes eller klammerparentes. | |||
Exempel: | |||
<pre> | |||
( ) | |||
[ ] | |||
{ } | |||
</pre> | |||
== INFOGA TEXT == | == INFOGA TEXT == | ||
| Rad 423: | Rad 466: | ||
'''I''' | '''I''' | ||
: Infoga text vid början av | : Infoga text vid början av aktuell rad, normalt före första icke-blanka tecken. | ||
'''a''' | '''a''' | ||
| Rad 431: | Rad 474: | ||
'''A''' | '''A''' | ||
: Lägg till text | : Lägg till text vid radens slut. | ||
'''o''' | '''o''' | ||
: Öppna ny rad under aktuell rad och | : Öppna en ny rad under aktuell rad och gå till inmatningsläge. | ||
'''O''' | '''O''' | ||
: Öppna ny rad ovanför aktuell rad och | : Öppna en ny rad ovanför aktuell rad och gå till inmatningsläge. | ||
== ÄNDRA TEXT == | == ERSÄTTA OCH ÄNDRA TEXT == | ||
'''r''' ''tecken'' | '''r''' ''tecken'' | ||
: Ersätt tecknet under markören med | : Ersätt tecknet under markören med det angivna tecknet. | ||
'''R''' | '''R''' | ||
: Gå | : Gå till ersättningsläge, där inskrivna tecken ersätter befintliga tecken. | ||
'''s''' | '''s''' | ||
: Ersätt aktuellt tecken med | : Ersätt aktuellt tecken med ny text. | ||
'''S''' | '''S''' | ||
: Ersätt hela aktuell rad med | : Ersätt hela aktuell rad med ny text. | ||
'''c''' ''rörelse'' | '''c''' ''rörelse'' | ||
| Rad 475: | Rad 514: | ||
C ändra till radslut | C ändra till radslut | ||
</pre> | </pre> | ||
== TA BORT TEXT == | == TA BORT TEXT == | ||
| Rad 494: | Rad 529: | ||
: Ta bort textområdet som anges av rörelsen. | : Ta bort textområdet som anges av rörelsen. | ||
Vanliga former: | |||
<pre> | <pre> | ||
| Rad 501: | Rad 536: | ||
d0 ta bort till radbörjan | d0 ta bort till radbörjan | ||
dd ta bort aktuell rad | dd ta bort aktuell rad | ||
D ta bort till radslut | |||
</pre> | |||
Med antal: | |||
<pre> | |||
3dd ta bort tre rader | 3dd ta bort tre rader | ||
5x ta bort fem tecken | |||
</pre> | </pre> | ||
== KOPIERA | == KOPIERA TEXT == | ||
'''y''' ''rörelse'' | '''y''' ''rörelse'' | ||
| Rad 511: | Rad 552: | ||
: Kopiera textområdet som anges av rörelsen. | : Kopiera textområdet som anges av rörelsen. | ||
Vanliga former: | |||
<pre> | <pre> | ||
| Rad 517: | Rad 558: | ||
y$ kopiera till radslut | y$ kopiera till radslut | ||
yy kopiera aktuell rad | yy kopiera aktuell rad | ||
Y kopiera aktuell rad | |||
</pre> | |||
Med antal: | |||
<pre> | |||
3yy kopiera tre rader | 3yy kopiera tre rader | ||
</pre> | </pre> | ||
== KLISTRA IN TEXT == | |||
'''p''' | '''p''' | ||
: Klistra in efter markören eller efter aktuell rad, beroende på | : Klistra in efter markören eller efter aktuell rad, beroende på vilken typ av text som kopierats eller tagits bort. | ||
'''P''' | '''P''' | ||
| Rad 533: | Rad 581: | ||
'''u''' | '''u''' | ||
: Ångra senaste | : Ångra senaste ändring. | ||
'''U''' | '''U''' | ||
: Ångra ändringar på aktuell rad | : Ångra ändringar på aktuell rad enligt klassiskt '''vi'''-beteende. | ||
'''.''' | '''.''' | ||
| Rad 547: | Rad 595: | ||
: Upprepa senaste substitutionskommando. | : Upprepa senaste substitutionskommando. | ||
== INDENTERING | == INDENTERING == | ||
'''<''' ''rörelse'' | '''<''' ''rörelse'' | ||
| Rad 557: | Rad 605: | ||
: Skjut textområdet åt höger. | : Skjut textområdet åt höger. | ||
'''!''' ''rörelse kommando'' | Vanliga former: | ||
<pre> | |||
>> skjut aktuell rad åt höger | |||
<< skjut aktuell rad åt vänster | |||
>G skjut från aktuell rad till filens slut åt höger | |||
</pre> | |||
== FILTRERA TEXT GENOM KOMMANDO == | |||
'''!''' ''rörelse'' ''kommando'' | |||
: | : Skicka textområdet till ett externt kommando och ersätt området med kommandots utmatning. | ||
Exempel: | Exempel: | ||
| Rad 568: | Rad 626: | ||
</pre> | </pre> | ||
== MÄRKEN | == MÄRKEN == | ||
'''m''' ''tecken'' | '''m''' ''tecken'' | ||
: Sätt ett märke | : Sätt ett märke på aktuell position. | ||
''''''' ''tecken'' | '''\'''' ''tecken'' | ||
: Hoppa till | : Hoppa till raden där märket finns. | ||
'''`''' ''tecken'' | '''`''' ''tecken'' | ||
| Rad 590: | Rad 648: | ||
</pre> | </pre> | ||
== | == BUFFERTAR == | ||
Många '''vi'''-kommandon kan använda namngivna buffertar. En buffert anges ofta med dubbelcitat följt av buffertnamn. | |||
Exempel: | |||
<pre> | |||
"ayy | |||
"ap | |||
</pre> | |||
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: | |||
<pre> | |||
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 | |||
</pre> | |||
== RÖRELSE SOM ARGUMENT == | |||
Flera kommandon använder ett rörelsekommando som argument. Det gäller bland annat: | |||
<pre> | |||
c | |||
d | |||
y | |||
! | |||
< | |||
> | |||
</pre> | |||
Exempel: | |||
<pre> | |||
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 | |||
</pre> | |||
== 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''' | '''':w''' | ||
: | : Skriv bufferten till fil. | ||
''':w | '''':w''' ''fil'' | ||
: | : Skriv bufferten till angiven fil. | ||
''':q''' | '''':q''' | ||
: Avsluta. | : Avsluta om inga osparade ändringar finns. | ||
''':q!''' | '''':q!''' | ||
: Avsluta utan att spara | : Avsluta utan att spara. | ||
''':wq''' | '''':wq''' | ||
: Spara och avsluta. | : Spara och avsluta. | ||
''' | '''':x''' | ||
: Spara och avsluta | : 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 == | ||
Substitution görs med '''ex'''-kommandot '''s'''. | |||
Byt första förekomsten på aktuell rad: | |||
<pre> | <pre> | ||
| Rad 652: | Rad 790: | ||
</pre> | </pre> | ||
Byt | Byt alla förekomster på aktuell rad: | ||
<pre> | <pre> | ||
| Rad 658: | Rad 796: | ||
</pre> | </pre> | ||
Byt alla förekomster | Byt alla förekomster i hela filen: | ||
<pre> | <pre> | ||
| Rad 664: | Rad 802: | ||
</pre> | </pre> | ||
Fråga före varje byte: | |||
<pre> | <pre> | ||
| Rad 670: | Rad 808: | ||
</pre> | </pre> | ||
Byt | Byt i ett radintervall: | ||
<pre> | |||
:10,20s/gammalt/nytt/g | |||
</pre> | |||
== 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: | |||
<pre> | |||
:w | |||
</pre> | |||
Spara till annat filnamn: | |||
<pre> | |||
:w nyfil.txt | |||
</pre> | |||
Avsluta: | |||
<pre> | |||
:q | |||
</pre> | |||
Avsluta utan att spara: | |||
<pre> | <pre> | ||
:q! | |||
</pre> | </pre> | ||
Spara och avsluta: | |||
<pre> | |||
:wq | |||
</pre> | |||
Klassiskt kortkommando för spara och avsluta: | |||
<pre> | <pre> | ||
ZZ | |||
</pre> | </pre> | ||
''' | == SKAL-KOMMANDON == | ||
''':!''' ''kommando'' | |||
: Kör ett skalkommando. | |||
: | Exempel: | ||
<pre> | |||
:!ls | |||
:!date | |||
</pre> | |||
: | ''':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: | |||
<pre> | <pre> | ||
:set number | |||
:set nonumber | |||
:set ignorecase | |||
:set noignorecase | |||
:set autoindent | |||
:set noautoindent | |||
</pre> | </pre> | ||
== 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. | |||
vi | |||
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 == | == PRAKTISK SNABBREFERENS == | ||
| Rad 771: | Rad 945: | ||
! Kommando !! Betydelse | ! Kommando !! Betydelse | ||
|- | |- | ||
| '''i''' || | | '''i''' || Börja infoga text före markören | ||
|- | |- | ||
| '''a''' || | | '''a''' || Börja infoga text efter markören | ||
|- | |- | ||
| '''Esc''' || Återgå till kommandoläge | | '''Esc''' || Återgå till kommandoläge | ||
|- | |- | ||
| '''h j k l''' || Flytta | | '''h''' || Flytta vänster | ||
|- | |||
| '''j''' || Flytta ned | |||
|- | |||
| '''k''' || Flytta upp | |||
|- | |||
| '''l''' || Flytta höger | |||
|- | |- | ||
| '''0''' || Gå till radens början | | '''0''' || Gå till radens början | ||
| Rad 794: | Rad 974: | ||
|- | |- | ||
| '''p''' || Klistra in efter | | '''p''' || Klistra in efter | ||
|- | |||
| '''P''' || Klistra in före | |||
|- | |- | ||
| '''u''' || Ångra | | '''u''' || Ångra | ||
| Rad 803: | Rad 985: | ||
| '''?text''' || Sök bakåt | | '''?text''' || Sök bakåt | ||
|- | |- | ||
| '''n''' || | | '''n''' || Upprepa sökning | ||
|- | |||
| '''N''' || Upprepa sökning åt andra hållet | |||
|- | |- | ||
| ''':w''' || Spara | | ''':w''' || Spara | ||
| Rad 812: | Rad 996: | ||
|- | |- | ||
| ''':wq''' || Spara och avsluta | | ''':wq''' || Spara och avsluta | ||
|- | |||
| '''ZZ''' || Spara och avsluta | |||
|} | |} | ||
== | == EXEMPEL == | ||
Öppna en fil: | |||
<pre> | |||
vi fil.txt | |||
</pre> | |||
Öppna en fil skrivskyddat: | |||
<pre> | |||
vi -R fil.txt | |||
</pre> | |||
Starta med radnummer aktiverade: | |||
<pre> | |||
vi -c 'set number' fil.txt | |||
</pre> | |||
Öppna vid taggen '''main''': | |||
<pre> | |||
vi -t main | |||
</pre> | |||
Sök efter ordet '''main''': | |||
<pre> | |||
/main | |||
</pre> | |||
Byt alla förekomster av '''foo''' till '''bar''': | |||
<pre> | |||
:%s/foo/bar/g | |||
</pre> | |||
Ta bort fem rader: | |||
<pre> | |||
5dd | |||
</pre> | |||
Kopiera tre rader och klistra in dem: | |||
<pre> | |||
3yy | |||
p | |||
</pre> | |||
== ANVÄNDNING I | == ANVÄNDNING I SKRIPT == | ||
'''vi''' är | '''vi''' är avsedd för interaktiv redigering. För automatiserad textbearbetning används normalt andra verktyg. | ||
Exempel på bättre verktyg i skript: | |||
* [[sed(1)]] | * [[sed(1)]] | ||
| Rad 835: | Rad 1 062: | ||
* [[ex(1p)]] | * [[ex(1p)]] | ||
== | == 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 == | == SE ÄVEN == | ||
| Rad 851: | Rad 1 084: | ||
* [[sed(1)]] | * [[sed(1)]] | ||
* [[awk(1)]] | * [[awk(1)]] | ||
* [[ctags(1)]] | |||
* [[stty(1)]] | * [[stty(1)]] | ||
== COPYRIGHT == | == COPYRIGHT == | ||
Delar av | 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 == | == KORT SAMMANFATTNING == | ||
'''vi''' är en klassisk | '''vi''' är en klassisk terminalbaserad textredigerare. | ||
Öppna fil: | |||
<pre> | <pre> | ||
| Rad 880: | Rad 1 105: | ||
</pre> | </pre> | ||
Infoga text: | |||
<pre> | <pre> | ||
i | i | ||
</pre> | |||
Lämna inmatningsläge: | |||
<pre> | |||
Esc | Esc | ||
</pre> | </pre> | ||
| Rad 912: | Rad 1 141: | ||
</pre> | </pre> | ||
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. | |||
Esc | |||
= | = 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.