vi(1p): Skillnad mellan sidversioner

Från Wiki.linux.se -Linux wikipedia på Svenska.
Hoppa till navigering Hoppa till sök
(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...')
 
Ingen redigeringssammanfattning
Rad 1: Rad 1:
{{DISPLAYTITLE:vi(1p)}}
{{DISPLAYTITLE:vi(1p)}}
''Detta är en ny komplett MediaWiki-fil för den uppladdade manualsidan '''vi(1p)'''. Alla POSIX-avsnitt från originalet finns med. Tekniska kommandon, tangentnamn och specialtecken har bevarats.''


== PROLOG ==
== 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.
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 ==
== NAMN ==


'''vi''' skärmorienterad, visuell textredigerare
'''vi''' skärmorienterad, visuell textredigerare


== SYNOPSIS ==
== SYNOPSIS ==
Rad 17: Rad 19:
== BESKRIVNING ==
== BESKRIVNING ==


Verktyget '''vi''' är en skärmorienterad textredigerare.
Detta verktyg ska tillhandahållas på system som både stöder optionen User Portability Utilities och definierar symbolen POSIX2_CHAR_TERM. På andra system är det valfritt.
 
Verktyget '''vi''' är en skärmorienterad textredigerare. Endast redigerarens '''open'''- och '''visual'''-lägen beskrivs i POSIX.1-2008. Se även radredigeraren [[ex(1p)]] för ytterligare redigeringsfunktioner som används i '''vi'''. Användaren kan växla fram och tillbaka mellan '''vi''' och '''ex''' och köra '''ex'''-kommandon inifrån '''vi'''.
 
Denna referenssida använder termen ''redigeringsbuffert'' för den text som för närvarande redigeras. Termen innebär inte någon särskild intern implementation. Alla redigeringsändringar utförs på redigeringsbufferten, och inga ändringar påverkar någon fil förrän ett redigerarkommando skriver filen.
 
Vissa terminaler saknar alla funktioner som krävs för att stödja hela POSIX-definitionen av '''vi'''. När dessa kommandon inte kan stödjas på sådana terminaler ska detta inte nödvändigtvis betraktas som ett vanligt kommandofel. Implementationer kan antingen försöka utföra kommandot eller rapportera ett fel som beskriver terminalens bristande funktionalitet.
 
== OPTIONER ==
 
Verktyget '''vi''' ska följa POSIX.1-2017, Base Definitions, avsnitt 12.2, ''Utility Syntax Guidelines'', med undantaget att '''+''' får kännas igen som optionsavgränsare, liksom '''-'''.
 
Följande optioner ska stödjas:
 
'''-c''' ''kommando''
: Se beskrivningen av '''-c''' i manualen för [[ex(1p)]].
 
'''-r'''
: Se beskrivningen av '''-r''' i manualen för [[ex(1p)]].
 
'''-R'''
: Se beskrivningen av '''-R''' i manualen för [[ex(1p)]].
 
'''-t''' ''taggsträng''
: Se beskrivningen av '''-t''' i manualen för [[ex(1p)]].
 
'''-w''' ''storlek''
: Se beskrivningen av '''-w''' i manualen för [[ex(1p)]].
 
== OPERANDER ==
 
See the operander avsnitt of the ex kommando for a description of the operander supported by the vi kommando.
 
== STDIN ==
 
If standard inmatning är not en terminal device, results är odefinierad. standard inmatning consists av en series av kommandon och inmatning text, som described i EXTENDED DESCRIPTION avsnitt.
 
If en läs från standard inmatning returns en fel, eller if redigerare detects en slut-av-fil condition från standard inmatning, it ska vara equivalent till en SIGHUP asynchronous event.
 
== INDATAFILER ==
 
See the inmatning filer avsnitt of the ex kommando for a description of the inmatning filer supported by the vi kommando.
 
== MILJÖVARIABLER ==
 
See the ENVIRONMENT VARIABLES avsnitt of the ex kommando for the environment variables that affect the execution of the vi kommando.
 
== ASYNKRONA HÄNDELSER ==
 
See the ASYNCHRONOUS EVENTS avsnitt of the ex for the asynchronous events that affect the execution of the vi kommando.
 
== STDOUT ==
 
If standard utmatning is not a terminal device, odefinierad results occur.
 
standard utmatning kan be used for writing prompts to the user, for informations meddelanden, and for writing rader from the fil.
 
== STDERR ==
 
If standard utmatning is not a terminal device, odefinierad results occur.
 
Standardfel ska endast användas för diagnostiska meddelanden.
 
== UTFILER ==
 
See the utmatning filer avsnitt of the ex kommando for a description of the utmatning filer supported by the vi kommando.
 
== UTÖKAD BESKRIVNING ==
 
Om terminalen saknar de funktioner som krävs för att stödja en ospecificerad del av definitionen av vi, ska implementationer initialt starta i ex-läge eller open-läge. I annat fall ska vi efter initiering vara i kommandoläge; textinmatningsläge kan aktiveras med något av flera kommandon som används för att infoga eller ändra text. i text inmatning läge, <ESC> can vara used till return till kommando läge; other uses av <ESC> är described later i denna avsnitt; see Terminate kommando eller inmatning läge .
 
'''Initiering i ex och vi'''
 
See Initialization in ex and vi for a description of ex and vi
 
initialization for the vi verktyg.
 
'''Kommandobeskrivningar i vi'''
 
Följande symboler används på denna referenssida för att representera argument till kommandon.
 
buffert See the description of buffert in the EXTENDED DESCRIPTION avsnitt of the ex verktyg; see kommando Descriptions in ex .
 
i open och visuellt läge, när en kommando synopsis shows both [ buffert ] och [ count ] föregående kommando name, they can vara angiven i either order.
 
count Ett positivt heltal som används som valfritt argument till de flesta kommandon, antingen för att ange ett repetitionsantal eller en storlek. Detta argument är valfritt och ska som standard vara 1 om inget annat anges.
 
<pre>
Synopsis rader för vi kommandon <kontroll>-G, <kontroll>-L, <kontroll>-R, <kontroll>-], % , & , ^ , D , m , M ,
</pre>
 
Q , u , U , och ZZ do not have count som en valfri argument. Regardless, it ska not vara en fel till specify en count till dessa kommandon, och någon angiven count ska vara ignorerad.
 
rörelse en valfri trailing argument used av ! , < , > , c , d , och y kommandon, which är used till indicate område av text som ska vara påverkad av kommando. rörelse can vara either one av kommando tecken repeated eller one av several other vi kommandon (listed i följande table). Each av applicable kommandon specifies område av text matched av repeating kommando; each kommando som can vara used som en rörelse kommando specifies område av text it affects.
 
kommandon som take rörelse argument operate på either rader eller tecken, depending på circumstances. när operating på rader, alla rader som fall partially eller wholly within text område angiven för kommando ska vara påverkad. när operating på tecken, endast exact tecken i angiven text område ska vara påverkad. Each rörelse kommando specifies denna individually.
 
när kommandon som kan vara rörelse kommandon är not used som rörelse kommandon, they ska set aktuell position till aktuell rad och kolumn som angiven.
 
Följande kommandon ska vara giltiga markörrörelsekommandon:
 
<apostrophe> ( - j H <carriage-return> ) $ k L <comma> [[ % l M <kontroll>-H ]] _ n N <kontroll>-N { ; t T <kontroll>-P } ? w W <grave-accent> ^ b B <nyrad> + e E <mellanslag> | f F <zero> / h G
 
någon count som är angiven till en kommando som has en kopplad rörelse kommando ska vara applied till rörelse kommando. If en count är applied till both kommando och its kopplad rörelse kommando, effect ska vara multiplicative.
 
Följande symboler används i detta avsnitt för att ange positioner i redigeringsbufferten:
 
aktuell tecken
 
Tecknet som för närvarande markeras av markören.
 
slut of a rad
 
point located mellan sista non-<nyrad> (if någon) och terminating <nyrad> av en rad. för en empty rad, denna location coincides med början av rad.
 
slut of the edit buffert
 
Platsen som motsvarar slutet av den sista raden i redigeringsbufferten.
 
Följande symboler används i detta avsnitt för att ange kommandoåtgärder:
 
bigword In the POSIX lokal, vi ska recognize four kinds of
 
bigwords :
 
1. en maximal sequence av non-<blank> tecken preceded och followed av <blank> tecken eller början eller slut av en rad eller edit buffert
 
2. One or more sequential blank rader
 
3. första tecken i edit buffert
 
<pre>
4. The sista non-<nyrad> in the edit buffert
</pre>
 
ord I POSIX-lokalen ska vi känna igen fem slags ord:
 
1. A maximal sequence of letters, digits, and underscores, delimited at both ends by:
 
-- tecken other than letters, digits, or underscores
 
-- början eller slut av en rad
 
-- början eller slut av edit buffert
 
2. A maximal sequence of tecken other than letters, digits, underscores, or <blank> tecken, delimited at both ends by:
 
-- A letter, digit, underscore
 
<pre>
-- <blank> tecken
</pre>
 
-- början eller slut av en rad
 
-- början eller slut av edit buffert
 
3. One or more sequential blank rader
 
4. första tecken i edit buffert
 
<pre>
5. The sista non-<nyrad> in the edit buffert
</pre>
 
avsnitt boundary
 
En sektionsgräns är något av följande:
 
<pre>
1. en rad whose första tecken är en <form-feed>
</pre>
 
<pre>
2. en rad whose första tecken är en open curly brace ( '{' )
</pre>
 
3. en rad whose första tecken är en <period> och whose second och third tecken matcha en two-tecken pair i avsnitt edit option (see ex )
 
4. en rad whose första tecken är en <period> och whose endast other tecken matches första tecken av en two-tecken pair i avsnitt edit option, där second tecken av two-tecken pair är en <mellanslag>
 
5. första rad av edit buffert
 
<pre>
6. The sista rad of the edit buffert if the sista rad of the edit buffert is empty or if it is a ]] or }
</pre>
 
<pre>
kommando; otherwise, the sista non-<nyrad> of the sista rad of the edit buffert
</pre>
 
stycke boundary
 
En styckegräns är något av följande:
 
1. A avsnitt boundary
 
2. en rad whose första tecken är en <period> och whose second och third tecken matcha en two-tecken pair i stycken edit option (see ex )
 
3. en rad whose första tecken är en <period> och whose endast other tecken matches första tecken av en two-tecken pair i stycken edit option, där second tecken av two-tecken pair är en <mellanslag>
 
4. One or more sequential blank rader
 
ihågkommen sökning direction
 
See description av ihågkommen sökning direction i ex .
 
mening boundary
 
En meningsgräns är något av följande:
 
1. A stycke boundary
 
<pre>
2. första non-<blank> som occurs efter en stycke boundary
</pre>
 
3. första non-<blank> som occurs efter en <period> ( '.' ), <exclamation-märke> ( '!' ), eller <question-märke> ( '?' ), followed av two <mellanslag> tecken eller slut av en rad; någon nummer av closing parenthesis ( ')' ), closing brackets ( ']' ), double-quote ( '"' ), eller single- quote (<apostrophe>) tecken can appear mellan punctuation märke och two <mellanslag> tecken eller slut-av-rad
 
I resten av beskrivningen av verktyget vi, term ``buffert rad'' refers till en rad i edit buffert och term ``visning rad'' refers till rad eller rader på visning skärm used till visning one buffert rad. term ``aktuell rad'' refers till en specific ``buffert rad''.
 
If there är visning rader på skärm för which there är no corresponding buffert rader because they correspond till rader som would vara efter slut av fil, they ska vara displayed som en single <tilde> ( '~' ) tecken, plus terminating <nyrad>.
 
Den sista raden på skärmen ska användas för att rapportera fel eller visa informationsmeddelanden. It ska also vara used till visning inmatning för ``rad-oriented kommandon'' ( / , ? , : , och ! ). när en rad-oriented kommando är executed, redigerare ska enter text inmatning läge på sista rad på skärm, using respective kommando tecken som prompt tecken. (i skiftläge av !
 
kommando, kopplad rörelse ska vara entered av user före redigerare enters text inmatning läge.) rad entered av user ska vara terminated av en <nyrad>, en non-<kontroll>-V-escaped <carriage-return>, eller unescaped <ESC>. It är ospecificerad if more tecken än require en visning width minus one kolumn nummer av skärm kolumner can vara entered.
 
If någon kommando är executed som overwrites en portion av skärm other än sista rad av skärm (för example, ex
 
suspend eller ! kommandon), other än ex
 
skal kommando, user ska vara prompted för en tecken före skärm är refreshed och edit session continued.
 
<tabb> tecken ska take up nummer av kolumner på skärm set av tabstop edit option (see ex ), unless there är less än som nummer av kolumner före visning margin som kommer att cause displayed rad till vara folded; i denna skiftläge, they ska endast take up nummer av kolumner up till som boundary.
 
Markören ska placeras på den aktuella raden och i förhållande till aktuell kolumn så som anges av varje kommando som beskrivs i följande avsnitt.
 
i open läge, if aktuell rad är not already displayed, then it ska vara displayed.
 
i visuellt läge, if aktuell rad är not displayed, then rader som är displayed ska vara expanded, scrolled, eller redrawn till cause en ospecificerad portion av aktuell rad till vara displayed. If skärm är redrawn, no more än nummer av visning rader angiven av värde av fönster edit option ska vara displayed (unless aktuell rad cannot vara completely displayed i nummer av visning rader angiven av fönster
 
edit option) och aktuell rad ska vara positioned som close till center av displayed rader som possible (within constraints imposed av distance av rad från början eller slut av edit buffert). If aktuell rad är före första rad i visning och skärm är scrolled, en ospecificerad portion av aktuell rad ska vara placed på första rad av visning. If aktuell rad är efter sista rad i visning och skärm är scrolled, en ospecificerad portion av aktuell rad ska vara placed på sista rad av visning.
 
i visuellt läge, if en rad från edit buffert (other än aktuell rad) does not entirely fit into rader at bottom av visning som är tillgänglig för its presentation, redigerare kan choose not till visning någon portion av rad. rader av visning som do not contain text från edit buffert för denna reason ska each consist av en single '@' tecken.
 
i visuellt läge, redigerare kan choose för ospecificerad reasons till not update rader i visning till correspond till underlying edit buffert text. rader av visning som do not correctly correspond till text från edit buffert för denna reason ska consist av en single '@' tecken (plus terminating <nyrad>), och <kontroll>-R kommando ska cause redigerare till update skärm till correctly represent edit buffert.
 
open och visuellt läge kommandon som set aktuell kolumn set it till en kolumn position i visning, och not en tecken position i rad. i denna skiftläge, however, kolumn position i visning ska vara calculated för en infinite width visning; för example, kolumn related till en tecken som är part av en rad som has varit folded onto additional skärm rader kommer att vara offset från visning rad kolumn där buffert rad begins, not från början av en particular visning rad.
 
visning markör kolumn i visning är based på värde av aktuell kolumn, som follows, med each rule applied i turn:
 
1. If aktuell kolumn är efter sista visning rad kolumn used av displayed rad, visning markör kolumn ska vara set till sista visning rad kolumn occupied av sista non-<nyrad> i aktuell rad; otherwise, visning markör kolumn ska vara set till aktuell kolumn.
 
2. If tecken av which some portion är displayed i visning rad kolumn angiven av visning markör kolumn requires more än en single visning rad kolumn:
 
en. If i text inmatning läge, visning markör kolumn ska vara adjusted till första visning rad kolumn i which någon portion av som tecken är displayed.
 
b. Otherwise, visning markör kolumn ska vara adjusted till sista visning rad kolumn i which någon portion av som tecken är displayed.
 
aktuell kolumn ska not vara ändrad av dessa adjustments till visning markör kolumn.
 
If an fel occurs during the parsing or execution of a vi
 
kommando:
 
* terminal ska vara alerted. Execution av vi kommando ska stop, och markör (för example, aktuell rad och kolumn) ska not vara further modified.
 
* Unless otherwise angiven av följande kommando avsnitt, it är ospecificerad whether en informations meddelande ska vara displayed.
 
* någon partially entered vi kommando ska vara discarded.
 
* If vi kommando resulted från en map expansion, alla tecken från som map expansion ska vara discarded, except som otherwise angiven av map kommando (see ex ).
 
* If vi kommando resulted från execution av en buffert, no further kommandon caused av execution av buffert ska vara executed.
 
Page Backwards
 
Synopsis :
 
<pre>
[ count ] <kontroll>-B
</pre>
 
If i open läge, <kontroll>-B kommando ska behave identically till z kommando. Otherwise, if aktuell rad är första rad av edit buffert, it ska vara en fel.
 
If fönster edit option är less än 3, visning en skärm där sista rad av visning ska vara some portion av:
 
( aktuell första rad ) -1
 
otherwise, visning en skärm där första rad av visning ska vara some portion av:
 
( aktuell första rad ) - count x ((fönster edit option) -2)
 
If denna calculation would result i en rad som är före första rad av edit buffert, första rad av visning ska visning some portion av första rad av edit buffert.
 
aktuell rad : If no rader från föregående visning remain på skärm, set till sista rad av visning; otherwise, set till ( rad - nummer av new rader displayed på denna skärm).
 
aktuell kolumn : Set to non-<blank>.
 
Scroll Forward
 
Synopsis :
 
<pre>
[ count ] <kontroll>-D
</pre>
 
If the aktuell rad is the sista rad of the edit buffert, it ska be an fel.
 
If no count is angiven, count ska standard to the count
 
kopplad med föregående <kontroll>-D eller <kontroll>-U kommando. If there was no föregående <kontroll>-D eller <kontroll>-U kommando, count
 
ska standard till värde av scroll edit option.
 
If i open läge, skriv rader starting med rad after aktuell rad, until count rader eller sista rad av fil have varit skriven.
 
aktuell rad : If aktuell rad + count är past sista rad av edit buffert, set till sista rad av edit buffert; otherwise, set till aktuell rad + count .
 
aktuell kolumn : Set to non-<blank>.
 
Scroll Forward by rad
 
Synopsis :
 
<pre>
[ count ] <kontroll>-E
</pre>
 
visning the rad count rader after the sista rad currently displayed.
 
If sista rad av edit buffert är displayed, it ska vara en fel. If there är no rad count rader efter sista rad currently displayed, sista rad av visning ska visning some portion av sista rad av edit buffert.
 
aktuell rad : Unchanged if föregående aktuell tecken är displayed; otherwise, set till första rad displayed.
 
aktuell kolumn : Unchanged.
 
Page Forward
 
Synopsis :
 
<pre>
[ count ] <kontroll>-F
</pre>
 
If i open läge, <kontroll>-F kommando ska behave identically till z kommando. Otherwise, if aktuell rad är sista rad av edit buffert, it ska vara en fel.
 
If fönster edit option är less än 3, visning en skärm där första rad av visning ska vara some portion av:
 
( aktuell sista rad ) +1
 
otherwise, visning en skärm där första rad av visning ska vara some portion av:
 
( aktuell första rad ) + count x ((fönster edit option) -2)
 
If denna calculation would result i en rad som är efter sista rad av edit buffert, sista rad av visning ska visning some portion av sista rad av edit buffert.
 
aktuell rad : If no rader från föregående visning remain på skärm, set till första rad av visning; otherwise, set till ( rad + nummer av new rader displayed på denna skärm).
 
aktuell kolumn : Set to non-<blank>.
 
visning Information
 
Synopsis :
 
<pre>
<kontroll>-G
</pre>
 
This kommando ska be equivalent to the ex
 
fil kommando.
 
flytta markör Backwards
 
Synopsis :
 
<pre>
[ count ] <kontroll>-H
</pre>
 
<pre>
[ count ] h the aktuell erase tecken (see stty)
</pre>
 
If there are no tecken before the aktuell tecken on the aktuell rad, it ska be an fel. If there are less than count
 
föregående tecken på aktuell rad, count ska vara adjusted till nummer av föregående tecken på rad.
 
If used som en rörelse kommando:
 
1. text område ska vara från tecken före starting markör up till och including count th tecken före starting markör.
 
2. någon text copied till en buffert ska vara i tecken läge.
 
If not used som en rörelse kommando:
 
aktuell rad : Unchanged.
 
aktuell kolumn : Set to ( kolumn - the nummer of kolumner occupied by
 
count tecken ending med föregående aktuell kolumn).
 
flytta Down
 
Synopsis :
 
<pre>
[ count ] <nyrad>
</pre>
 
<pre>
[ count ] <kontroll>-J
</pre>
 
<pre>
[ count ] <kontroll>-M
</pre>
 
<pre>
[ count ] <kontroll>-N
</pre>
 
<pre>
[ count ] j
</pre>
 
<pre>
[ count ] <carriage-return>
</pre>
 
<pre>
[ count ] +
</pre>
 
If there are less than count rader after the aktuell rad in the edit buffert, it ska be an fel.
 
If used som en rörelse kommando:
 
1. text område ska include starting rad och nästa
 
count - 1 rader.
 
2. någon text copied till en buffert ska vara i rad läge.
 
If not used som en rörelse kommando:
 
aktuell rad : Set till aktuell rad + count .
 
aktuell kolumn : Set till non-<blank> för <carriage-return>, <kontroll>-M, och + kommandon; otherwise, unchanged.
 
Clear and Redisplay
 
Synopsis :
 
<pre>
<kontroll>-L
</pre>
 
If i open läge, clear skärm och redisplay aktuell rad. Otherwise, clear och redisplay skärm.
 
aktuell rad : Unchanged.
 
aktuell kolumn : Unchanged.
 
flytta Up
 
Synopsis :
 
<pre>
[ count ] <kontroll>-P
</pre>
 
<pre>
[ count ] k
</pre>
 
<pre>
[ count ] -
</pre>
 
If there are less than count rader before the aktuell rad in the edit buffert, it ska be an fel.
 
If used som en rörelse kommando:
 
1. text område ska include starting rad och föregående count rader.
 
2. någon text copied till en buffert ska vara i rad läge.
 
If not used som en rörelse kommando:
 
aktuell rad : Set to aktuell rad - count .
 
aktuell kolumn : Set to non-<blank> for the - kommando; otherwise, unchanged.
 
Redraw skärm
 
Synopsis :
 
<pre>
<kontroll>-R
</pre>
 
If någon rader have varit borttagen från visning skärm och flagged som borttagen på terminal using @ convention (see början av EXTENDED DESCRIPTION avsnitt), they ska vara redisplayed till matcha contents av edit buffert.
 
It är ospecificerad whether rader flagged med @ because they do not fit på terminal visning ska vara påverkad.
 
aktuell rad : Unchanged.
 
aktuell kolumn : Unchanged.
 
Scroll Backward
 
Synopsis :
 
<pre>
[ count ] <kontroll>-U
</pre>
 
If aktuell rad är första rad av edit buffert, it ska vara en fel.
 
If no count is angiven, count ska standard to the count
 
kopplad med föregående <kontroll>-D eller <kontroll>-U kommando. If there was no föregående <kontroll>-D eller <kontroll>-U kommando, count
 
ska standard till värde av scroll edit option.
 
aktuell rad : If count is greater than the aktuell rad, set to 1; otherwise, set to the aktuell rad - count .
 
aktuell kolumn : Set to non-<blank>.
 
Scroll Backward by rad
 
Synopsis :
 
<pre>
[ count ] <kontroll>-Y
</pre>
 
visning rad count rader before första rad currently displayed.
 
If aktuell rad är första rad av edit buffert, it ska vara en fel. If denna calculation would result i en rad som är före första rad av edit buffert, första rad av visning ska visning some portion av första rad av edit buffert.
 
aktuell rad : Unchanged if föregående aktuell tecken är displayed; otherwise, set till första rad displayed.
 
aktuell kolumn : Unchanged.
 
Edit the Alternate fil
 
Synopsis :
 
<pre>
<kontroll>-^
</pre>
 
This kommando ska be equivalent to the ex
 
edit kommando, with the alternate pathname as its argument.
 
Terminate kommando eller inmatning läge
 
Synopsis :
 
<pre>
<ESC>
</pre>
 
If a partial vi kommando (as defined by at least one, non- count
 
tecken) has been entered, discard the count and the kommando tecken(s).
 
Otherwise, if no kommando tecken have varit entered, och <ESC> was result av en map expansion, terminal ska vara alerted och <ESC> tecken ska vara discarded, but it ska not vara en fel.
 
Otherwise, it ska be an fel.
 
aktuell rad : Unchanged.
 
aktuell kolumn : Unchanged.
 
sökning för tagstring
 
Synopsis :
 
<pre>
<kontroll>-]
</pre>
 
If the aktuell tecken is not a ord or <blank>, it ska be an fel.
 
This kommando ska be equivalent to the ex
 
tag kommando, with the argument to that kommando defined as follows.
 
<pre>
If the aktuell tecken is a <blank>:
</pre>
 
1. Skip alla <blank> tecken efter markör up till slut av rad.
 
2. If the slut of the rad is reached, it ska be an fel.
 
Then, the argument to the ex
 
tag kommando ska vara aktuell tecken och alla subsequent tecken, up till första non-ord tecken eller slut av rad.
 
flytta markör Forward
 
Synopsis :
 
<pre>
[ count ] <mellanslag>
</pre>
 
<pre>
[ count ] l (ell)
</pre>
 
If there är less än count non-<nyrad> tecken efter markör på aktuell rad, count ska vara adjusted till nummer av non-<nyrad> tecken efter markör på rad.
 
If used som en rörelse kommando:
 
1. If aktuell eller count th tecken efter markör är sista non-<nyrad> i rad, text område ska vara comprised av aktuell tecken up till och including sista non-<nyrad> i rad. Otherwise, text område ska vara från aktuell tecken up till, but not including, count th tecken efter markör.
 
2. någon text copied till en buffert ska vara i tecken läge.
 
If not used som en rörelse kommando:
 
If there are no non-<nyrad> tecken after the aktuell tecken on the aktuell rad, it ska be an fel.
 
aktuell rad : Unchanged.
 
aktuell kolumn : Set till the sista kolumn that displays någon portion av the count th tecken after the aktuell tecken.
 
ersätt text med Results från skal kommando
 
Synopsis :
 
<pre>
[ count ] ! rörelse skal-kommandon <nyrad>
</pre>
 
If rörelse kommando är ! kommando repeated:
 
1. If the edit buffert is empty and no count was supplied, the kommando ska be the equivalent of the ex
 
:läs ! kommando, med text inmatning, och no text ska vara copied till någon buffert.
 
2. Otherwise:
 
a. If there are less than count -1 rader after the aktuell rad in the edit buffert, it ska be an fel.
 
b. text område ska vara från aktuell rad up till och including nästa count -1 rader.
 
Otherwise, text område ska vara rader i which någon tecken av text område angiven av rörelse kommando appear.
 
någon text copied till en buffert ska vara i rad läge.
 
This kommando ska be equivalent to the ex
 
! kommando för angiven rader.
 
flytta markör till slut-av-rad
 
Synopsis :
 
<pre>
[ count ] $
</pre>
 
It ska be an fel if there are less than ( count -1) rader after the aktuell rad in the edit buffert.
 
If used som en rörelse kommando:
 
1. If count is 1:
 
a. It ska be an fel if the rad is empty.
 
b. Otherwise, text område ska consist av alla tecken från starting markör till sista non-<nyrad> i rad, inclusive, och någon text copied till en buffert ska vara i tecken läge.
 
2. Otherwise, if starting markör position är at eller före första non-<blank> i rad, text område ska consist av aktuell och nästa count -1 rader, och någon text saved till en buffert ska vara i rad läge.
 
3. Otherwise, text område ska consist av alla tecken från starting markör till sista non-<nyrad> i rad som är count -1 rader forward från aktuell rad, och någon text copied till en buffert ska vara i tecken läge.
 
If not used som en rörelse kommando:
 
aktuell rad : Set till aktuell rad + count -1.
 
aktuell kolumn : The aktuell kolumn is set to the sista visning rad kolumn of the sista non-<nyrad> in the rad, or kolumn position 1 if the rad is empty.
 
aktuell kolumn ska vara adjusted till vara på sista visning rad kolumn av sista non-<nyrad> av aktuell rad som subsequent kommandon ändra aktuell rad, until en kommando changes aktuell kolumn.
 
flytta to matchande tecken
 
Synopsis :
 
%
 
If tecken at aktuell position är not en parenthesis, bracket, eller curly brace, sökning forward i rad till första one av de tecken. If no such tecken är found, it ska vara en fel.
 
matchande tecken ska vara parenthesis, bracket, eller curly brace matchande parenthesis, bracket, eller curly brace, respectively, som was at aktuell position eller som was found på aktuell rad.
 
matchande ska be determined as follows, for an open parenthesis:
 
1. Set a counter to 1.
 
2. sökning forwards until en parenthesis är found eller slut av edit buffert är reached.
 
3. If the slut of the edit buffert is reached, it ska be an fel.
 
4. If an open parenthesis is found, increment the counter by 1.
 
5. If a close parenthesis is found, decrement the counter by 1.
 
6. If the counter is zero, the aktuell tecken is the matchande tecken.
 
matchande för en close parenthesis ska vara equivalent, except som sökning ska vara backwards, från starting tecken till början av buffert, en close parenthesis ska increment counter av 1, och en open parenthesis ska decrement counter av 1.
 
matchande för brackets och curly braces ska vara equivalent, except som searching ska vara done för open och close brackets eller open och close curly braces. It är implementation-defined whether other tecken är searched för och matched som well.
 
If used som en rörelse kommando:
 
1. If matchande markör was efter starting markör i edit buffert, och starting markör position was at eller före första non-<blank> non-<nyrad> i starting rad, och matchande markör position was at eller efter sista non-<blank> non-<nyrad> i matchande rad, text område ska consist av aktuell rad till matchande rad, inclusive, och någon text copied till en buffert ska vara i rad läge.
 
2. If matchande markör was före starting markör i edit buffert, och starting markör position was at eller efter sista non-<blank> non-<nyrad> i starting rad, och matchande markör position was at eller före första non-<blank> non-<nyrad> i matchande rad, text område ska consist av aktuell rad till matchande rad, inclusive, och någon text copied till en buffert ska vara i rad läge.
 
3. Otherwise, text område ska consist av starting tecken till matchande tecken, inclusive, och någon text copied till en buffert ska vara i tecken läge.
 
If not used som en rörelse kommando:
 
aktuell rad : Set to the rad where the matchande tecken is located.
 
aktuell kolumn : Set till the sista kolumn where någon portion av the matchande tecken är displayed.
 
upprepa substitution
 
Synopsis :
 
&
 
upprepa föregående substitution kommando. denna kommando ska vara equivalent till ex
 
& kommando med aktuell rad som its addresses, och utan optioner , count , eller flags .
 
Return till föregående Context at början av rad
 
Synopsis :
 
' tecken
 
It ska be an fel if there is no rad in the edit buffert marked by tecken .
 
If used som en rörelse kommando:
 
1. If starting markör är efter marked markör, then locations av starting markör och marked markör i edit buffert ska vara logically swapped.
 
2. text område ska consist av starting rad up till och including marked rad, och någon text copied till en buffert ska vara i rad läge.
 
If not used som en rörelse kommando:
 
aktuell rad : Set till rad referenced av märke.
 
aktuell kolumn : Set to non-<blank>.
 
Return till föregående Context
 
Synopsis :
 
` tecken
 
It ska vara en fel if marked rad är no longer i edit buffert. If marked rad no longer contains en tecken i saved numbered tecken position, it ska vara som if marked position är första non-<blank>.
 
If used som en rörelse kommando:
 
1. It ska vara en fel if marked markör references samma tecken i edit buffert som starting markör.
 
2. If starting markör är efter marked markör, then locations av starting markör och marked markör i edit buffert ska vara logically swapped.
 
3. If starting rad är empty eller starting markör är at eller före första non-<blank> non-<nyrad> av starting rad, och marked markör rad är empty eller marked markör references första tecken av marked markör rad, text område ska consist av alla rader containing tecken från starting markör till rad före marked markör rad, inclusive, och någon text copied till en buffert ska vara i rad läge.
 
4. Otherwise, if marked markör rad är empty eller marked markör references en tecken at eller före första non-<blank> non-<nyrad> av marked markör rad, område av text ska vara från starting markör till sista non-<nyrad> av rad före marked markör rad, inclusive, och någon text copied till en buffert ska vara i tecken läge.
 
5. Otherwise, område av text ska vara från starting markör (inclusive), till marked markör (exclusive), och någon text copied till en buffert ska vara i tecken läge.
 
If not used som en rörelse kommando:
 
aktuell rad : Set till rad referenced av märke.
 
aktuell kolumn : Set till sista kolumn i which någon portion av tecken referenced av märke är displayed.
 
Return till föregående avsnitt
 
Synopsis :
 
<pre>
[ count ] [[
</pre>
 
flytta markör backward through edit buffert till första tecken av föregående avsnitt boundary, count times.
 
If used som en rörelse kommando:
 
1. If starting markör was at första tecken av starting rad eller starting rad was empty, och första tecken av boundary was första tecken av boundary rad, text område ska consist av aktuell rad up till och including rad där count th nästa boundary starts, och någon text copied till en buffert ska vara i rad läge.
 
2. If boundary was sista rad av edit buffert eller sista non-<nyrad> av sista rad av edit buffert, text område ska consist av sista tecken i edit buffert up till och including starting tecken, och någon text saved till en buffert ska vara i tecken läge.
 
3. Otherwise, text område ska consist av starting tecken up till but not including första tecken i
 
count th nästa boundary, och någon text copied till en buffert ska vara i tecken läge.
 
If not used som en rörelse kommando:
 
aktuell rad : Set till rad where count th nästa boundary i edit buffert starts.
 
aktuell kolumn : Set till sista kolumn i which någon portion av första tecken av count th nästa boundary är displayed, eller kolumn position 1 if rad är empty.
 
flytta till nästa avsnitt


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'''.
Synopsis :


Användaren kan växla mellan '''vi''' och '''ex''' och köra '''ex'''-kommandon inifrån '''vi'''.
<pre>
[ count ] ]]
</pre>


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.
flytta markör forward through edit buffert till första tecken av nästa avsnitt boundary, count times.


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.
If used som en rörelse kommando:


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.
1. If starting markör was at första tecken av starting rad eller starting rad was empty, och första tecken av boundary was första tecken av boundary rad, text område ska consist av aktuell rad up till och including rad där count th föregående boundary starts, och någon text copied till en buffert ska vara i rad läge.


== OPTIONER ==
2. If boundary was första rad av edit buffert, text område ska consist av första tecken i edit buffert up till but not including starting tecken, och någon text copied till en buffert ska vara i tecken läge.
 
3. Otherwise, text område ska consist av första tecken i count th föregående avsnitt boundary up till but not including starting tecken, och någon text copied till en buffert ska vara i tecken läge.
 
If not used som en rörelse kommando:
 
aktuell rad : Set till rad där count th föregående boundary i edit buffert starts.


'''vi''' följer POSIX.1-2017, Base Definitions, avsnitt 12.2, ''Utility Syntax Guidelines'', med undantaget att '''+''' kan tolkas som optionsavgränsare utöver '''-'''.
aktuell kolumn : Set till sista kolumn i which någon portion av första tecken av count th föregående boundary är displayed, eller kolumn position 1 if rad är empty.


'''-c''' ''kommando''
<pre>
flytta till första Non-<blank> Position på aktuell rad
</pre>


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


'''-r'''
^


: Se beskrivningen av optionen '''-r''' för [[ex(1p)]]. Används vanligen för att återställa filer efter krasch.
If used som en rörelse kommando:


'''-R'''
1. If rad has no non-<blank> non-<nyrad> tecken, eller if markör är at första non-<blank> non-<nyrad> av rad, it ska vara en fel.


: Se beskrivningen av optionen '''-R''' för [[ex(1p)]]. Startar normalt i skrivskyddat läge.
2. If markör är före första non-<blank> non-<nyrad> av rad, text område ska vara comprised av aktuell tecken, up till, but not including, första non-<blank> non-<nyrad> av rad.


'''-t''' ''taggsträng''
3. If markör är efter första non-<blank> non-<nyrad> av rad, text område ska vara från tecken före starting markör up till och including första non-<blank> non-<nyrad> av rad.


: Se beskrivningen av optionen '''-t''' för [[ex(1p)]]. Öppnar vid en tagg.
4. någon text copied till en buffert ska vara i tecken läge.


'''-w''' ''storlek''
If not used som en rörelse kommando:


: Se beskrivningen av optionen '''-w''' för [[ex(1p)]].
aktuell rad : Unchanged.


== OPERANDER ==
aktuell kolumn : Set to non-<blank>.


Se avsnittet OPERANDER i manualen för [[ex(1p)]] för en beskrivning av de operander som stöds av '''vi'''.
aktuell and rad Above


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


<pre>
<pre>
vi fil.txt
[ count ] _
vi fil1.txt fil2.txt
</pre>
</pre>


== STANDARDINMATNING ==
If there are less than count -1 rader after the aktuell rad in the edit buffert, it ska be an fel.
 
If used som en rörelse kommando:


Om standardinmatningen inte är en terminalenhet är resultatet odefinierat.
1. If count är less än 2, text område ska vara aktuell rad.


Standardinmatningen består av en följd av kommandon och inmatad text, enligt den utökade beskrivningen.
2. Otherwise, text område ska include starting rad och nästa count -1 rader.


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.
3. någon text copied till en buffert ska vara i rad läge.


== INDATAFILER ==
If not used som en rörelse kommando:
 
aktuell rad : Set till aktuell rad + count -1.


Se avsnittet INDATAFILER i manualen för [[ex(1p)]].
aktuell kolumn : Set to non-<blank>.


== MILJÖVARIABLER ==
flytta Back till början av mening


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


Vanliga miljövariabler som i praktiken ofta påverkar '''vi'''-liknande redigerare är bland annat:
<pre>
[ count ] (
</pre>


'''TERM'''
flytta backward till början av en mening. denna kommando ska vara equivalent till [[ kommando, med exception som mening boundaries ska vara used instead av avsnitt boundaries.


: Anger terminaltyp.
flytta Forward till början av mening


'''HOME'''
Synopsis :


: Används ofta för att hitta användarens konfigurationsfiler.
<pre>
[ count ] )
</pre>


'''EXINIT'''
flytta forward till början av en mening. denna kommando ska vara equivalent till ]] kommando, med exception som mening boundaries ska vara used instead av avsnitt boundaries.


: Kan användas av vissa implementationer för initialiseringskommandon.
flytta Back till föregående stycke


'''SHELL'''
Synopsis :


: Anger skal som används när redigeraren kör externa kommandon.
<pre>
[ count ] {
</pre>


== ASYNKRONA HÄNDELSER ==
flytta back till början av föregående stycke. denna kommando ska vara equivalent till [[ kommando, med exception som stycke boundaries ska vara used instead av avsnitt boundaries.


Se avsnittet ASYNKRONA HÄNDELSER i manualen för [[ex(1p)]].
flytta Forward till nästa stycke


== STANDARDUTMATNING ==
Synopsis :


Om standardutmatningen inte är en terminalenhet är resultatet odefinierat.
<pre>
[ count ] }
</pre>


Standardutmatningen kan användas för att skriva prompter till användaren, informationsmeddelanden och rader från filen.
flytta forward till början av nästa stycke. denna kommando ska vara equivalent till ]] kommando, med exception som stycke boundaries ska vara used instead av avsnitt boundaries.


== STANDARDFEL ==
flytta to Specific kolumn Position


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


Standardfel ska endast användas för diagnostiska meddelanden.
<pre>
[ count ] |
</pre>
 
för purposes av denna kommando, rader som är too long för aktuell visning och som have varit folded ska vara treated som having en single, 1-based, nummer av kolumner.
 
If there är less än count kolumner i which tecken från aktuell rad är displayed på skärm, count ska vara adjusted till vara sista kolumn i which någon portion av rad är displayed på skärm.


== UTFILER ==
If used som en rörelse kommando:


Se avsnittet UTFILER i manualen för [[ex(1p)]].
1. If rad är empty, eller markör tecken är samma som tecken på count th kolumn av rad, it ska vara en fel.


== UTÖKAD BESKRIVNING ==
2. If markör är före count th kolumn av rad, text område ska vara comprised av aktuell tecken, up till but not including tecken på count th kolumn av rad.


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.
3. If markör är efter count th kolumn av rad, text område ska vara från tecken före starting markör up till och including tecken på count th kolumn av rad.


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.
4. någon text copied till en buffert ska vara i tecken läge.


I textinmatningsläge används '''Esc''' för att återgå till kommandoläge.
If not used som en rörelse kommando:


== LÄGEN I VI ==
aktuell rad : Unchanged.


=== Kommandoläge ===
aktuell kolumn : Set till the sista kolumn i which någon portion av the tecken that är displayed i the count kolumn av the rad är displayed.


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.
Reverse Find tecken


Exempel:
Synopsis :


<pre>
<pre>
h    flytta vänster
[ count ] ,
j    flytta ned
k    flytta upp
l    flytta höger
x    ta bort tecken
:w  spara
:q  avsluta
</pre>
</pre>


=== Textinmatningsläge ===
If sista F , f , T , eller t kommando was F , f , T , eller t , denna kommando ska vara equivalent till en f , F , t , eller T kommando, respectively, med angiven count och samma sökning tecken.


I detta läge skrivs tecken in i bufferten som vanlig text.
If there was no föregående F , f , T , eller t kommando, it ska vara en fel.


Du går in i textinmatningsläge med kommandon som:
upprepa
 
Synopsis :
 
[ count ] .


<pre>
<pre>
i    infoga före markören
upprepa sista ! , < , > , en , C , D , I , J , O , P , R , S , X , Y , en , c , d ,
a    infoga efter markören
o    öppna ny rad under aktuell rad
O   öppna ny rad över aktuell rad
</pre>
</pre>


Du lämnar textinmatningsläget med:
i , o , p , r , s , x , y , eller ~ kommando. It ska vara en fel if none av dessa kommandon have varit executed. kommandon (other än kommandon som enter text inmatning läge) executed som en result av map expansions, ska not ändra värde av sista repeatable kommando.
 
Repeated kommandon med kopplad rörelse kommandon ska upprepa rörelse kommando som well; however, någon angiven count ska ersätt count (s) som were originally angiven till repeated kommando eller its kopplad rörelse kommando.
 
If rörelse component av repeated kommando är f , F , t , eller T , repeated kommando ska not set ihågkommen sökning tecken för ; och , kommandon.
 
If repeated kommando är p eller P , och buffert kopplad med som kommando was en numeric buffert namngiven med en nummer less än 9, buffert kopplad med repeated kommando ska vara set till vara buffert namngiven av name av föregående buffert logically incremented av 1.
 
If the repeated tecken is a text inmatning kommando, the inmatning text kopplad with that kommando is repeated literally:
 
* inmatning tecken är neither macro eller abbreviation-expanded.
 
* inmatning tecken är not interpreted i någon special way med exception som <nyrad>, <carriage-return>, och <kontroll>-T behave som described i inmatning läge kommandon i vi .
 
aktuell rad : Set as described for the repeated kommando.
 
aktuell kolumn : Set as described for the repeated kommando.
 
Find Regular Expression
 
Synopsis :
 
/
 
If inmatning rad contains no non-<nyrad> tecken, it ska vara equivalent till en rad containing endast sista regular expression encountered. enhanced regular expressions supported av vi är described i Regular Expressions i ex .
 
Otherwise, the rad ska be interpreted as one or more regular expressions, optionally followed by an adress offset or a vi
 
z
 
kommando.
 
If regular expression är not sista regular expression på rad, eller if en rad offset eller z kommando är angiven, regular expression ska vara terminated av en unescaped '/'
 
tecken, which ska not vara used som part av regular expression. If regular expression är not första regular expression på rad, it ska vara preceded av zero eller more <blank> tecken, en <semicolon>, zero eller more <blank> tecken, och en leading '/' tecken, which ska not vara interpreted som part av regular expression. It ska vara en fel till precede någon regular expression med någon tecken other än dessa.
 
Each sökning ska begin från tecken efter första tecken av sista matcha (eller, if it är första sökning, efter markör). If wrapscan edit option är set, sökning ska continue till tecken före starting markör tecken; otherwise, till slut av edit buffert. It ska vara en fel if någon sökning fails till find en matcha, och en informations meddelande till denna effect ska vara displayed.
 
An valfri adress offset (see Addressing in ex ) can be angiven after the sista regular expression by including a trailing '/'
 
tecken efter regular expression och specifying adress offset. denna offset kommer att vara från rad containing matcha för sista regular expression angiven. It ska vara en fel if rad offset would indicate en rad adress less än 1 eller greater än sista rad i edit buffert. en adress offset av zero ska vara supported. It ska vara en fel till follow adress offset med någon other tecken än <blank> tecken.
 
If not used som en rörelse kommando, en valfri z kommando (see Redraw
 
fönster ) can vara angiven efter sista regular expression av including en trailing '/' tecken efter regular expression, zero eller more <blank> tecken, en 'z' , zero eller more <blank> tecken, en valfri new fönster edit option värde, zero eller more <blank> tecken, och en location tecken. effect ska vara som if z kommando was executed efter / kommando. It ska vara en fel till follow z kommando med någon other tecken än <blank> tecken.
 
ihågkommen sökning direction ska vara set till forward.
 
If used som en rörelse kommando:
 
1. It ska vara en fel if sista matcha references samma tecken i edit buffert som starting markör.
 
2. If någon adress offset är angiven, the sista matcha ska vara adjusted av the angiven offset som described previously.
 
3. If starting markör är efter sista matcha, then locations av starting markör och sista matcha i edit buffert ska vara logically swapped.
 
4. If någon adress offset är angiven, text område ska consist av alla rader containing tecken från starting markör till sista matcha rad, inclusive, och någon text copied till en buffert ska vara i rad läge.
 
5. Otherwise, if starting rad är empty eller starting markör är at eller före första non-<blank> non-<nyrad> av starting rad, och sista matcha rad är empty eller sista matcha starts at första tecken av sista matcha rad, text område ska consist av alla rader containing tecken från starting markör till rad före sista matcha rad, inclusive, och någon text copied till en buffert ska vara i rad läge.
 
6. Otherwise, if sista matcha rad är empty eller sista matcha begins at en tecken at eller före första non-<blank> non-<nyrad> av sista matcha rad, område av text ska vara från aktuell markör till sista non-<nyrad> av rad före sista matcha rad, inclusive, och någon text copied till en buffert ska vara i tecken läge.
 
7. Otherwise, område av text ska vara från aktuell markör (inclusive), till första tecken av sista matcha (exclusive), och någon text copied till en buffert ska vara i tecken läge.
 
If not used som en rörelse kommando:
 
aktuell rad : If en matcha är found, set till the sista matched rad plus the adress offset, if någon; otherwise, unchanged.
 
aktuell kolumn : Set till sista kolumn på which någon portion av första tecken i sista matched string är displayed, if en matcha är found; otherwise, unchanged.
 
flytta till första tecken i rad
 
Synopsis :
 
0 (zero)
 
flytta till första tecken på aktuell rad. tecken '0'
 
ska not be interpreted as a kommando if it is immediately preceded by a digit.
 
If used som en rörelse kommando:
 
1. If markör tecken är första tecken i rad, it ska vara en fel.
 
2. text område ska vara från tecken före markör tecken up till och including första tecken i rad.
 
3. någon text copied till en buffert ska vara i tecken läge.
 
If not used som en rörelse kommando:
 
aktuell rad : Unchanged.
 
aktuell kolumn : sista kolumn i which någon portion av första tecken i rad är displayed, eller if rad är empty, unchanged.
 
Execute an ex kommando
 
Synopsis :
 
:
 
Execute one or more ex kommandon.
 
If någon portion av skärm other än sista rad av skärm was overwritten av någon ex kommando (except skal ), vi ska visning en meddelande indicating som it är waiting för en inmatning från user, och ska then läs en tecken. denna action kan also vara taken för other, ospecificerad reasons.
 
If nästa tecken entered är en ':' , another ex kommando ska vara accepted och executed. någon other tecken ska cause skärm till vara refreshed och vi ska return till kommando läge.
 
aktuell rad : As angiven for the ex kommando.
 
aktuell kolumn : As angiven for the ex kommando.
 
upprepa Find
 
Synopsis :


<pre>
<pre>
Esc
[ count ] ;
</pre>
</pre>


=== Ex-läge ===
This kommando ska be equivalent to the sista F , f , T , or t


Kommandon som börjar med kolon, ''':'', körs som '''ex'''-kommandon.
kommando, med angiven count , och med samma sökning tecken used för sista F , f , T , eller t kommando. If there was no föregående F , f , T , eller t kommando, it ska vara en fel.


Exempel:
Shift Left
 
Synopsis :
 
<pre>
[ count ] < rörelse
</pre>


<pre>
<pre>
:w
If rörelse kommando är < kommando repeated:
:q
:wq
:q!
:set number
:%s/gammalt/nytt/g
</pre>
</pre>


== SYMBOLER I KOMMANDOBESKRIVNINGAR ==
1. If there are less than count -1 rader after the aktuell rad in the edit buffert, it ska be an fel.


'''buffer'''
2. text område ska vara från aktuell rad, up till och including nästa count -1 rader.


: Se beskrivningen av ''buffer'' i manualen för [[ex(1p)]].
Shift någon rad i text område angiven av count och rörelse kommando one shiftwidth (see ex


'''count'''
shiftwidth option) toward the start of the rad, as described by the ex


: 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.
< kommando. unshifted rader ska vara copied till unnamed buffert i rad läge.


Exempel:
aktuell rad : If rörelse was från aktuell markör position toward slut av edit buffert, unchanged. Otherwise, set till första rad i edit buffert som är part av text område angiven av rörelse kommando.
 
aktuell kolumn : Set to non-<blank>.
 
Shift Right
 
Synopsis :


<pre>
<pre>
3j
[ count ] > rörelse
5x
10dd
</pre>
</pre>


'''motion'''
<pre>
If rörelse kommando är > kommando repeated:
</pre>


: Ett rörelsekommando som används som argument till kommandon som påverkar textområden, till exempel:
1. If there are less than count -1 rader after the aktuell rad in the edit buffert, it ska be an fel.
 
2. text område ska vara från aktuell rad, up till och including nästa count -1 rader.
 
Shift någon rad med tecken i text område angiven av
 
count och rörelse kommando one shiftwidth (see ex
 
shiftwidth
 
option) away from the start of the rad, as described by the ex


<pre>
<pre>
!
<
>
>
c
d
y
</pre>
</pre>


Exempel:
kommando. unshifted rader ska vara copied into unnamed buffert i rad läge.
 
aktuell rad : If rörelse was från aktuell markör position toward slut av edit buffert, unchanged. Otherwise, set till första rad i edit buffert som är part av text område angiven av rörelse kommando.
 
aktuell kolumn : Set to non-<blank>.
 
Scan Backwards for Regular Expression
 
Synopsis :
 
?
 
Scan backwards; ? kommando ska vara equivalent till /
 
kommando (see Find Regular Expression ) med följande exceptions:
 
1. inmatning prompt ska vara en '?' .
 
2. Each sökning ska begin från tecken före första tecken av sista matcha (eller, if it är första sökning, tecken före markör tecken).
 
3. sökning direction ska vara från markör toward början av edit buffert, och wrapscan edit option ska affect whether sökning wraps till slut av edit buffert och continues.
 
4. ihågkommen sökning direction ska vara set till backward.
 
Execute
 
Synopsis :
 
@ buffert
 
If buffert är angiven som @ , sista buffert executed ska vara used. If no föregående buffert has varit executed, it ska vara en fel.
 
Behave som if contents av namngiven buffert were entered som standard inmatning. efter each rad av en rad-läge buffert, och alla but sista rad av en tecken läge buffert, behave som if en <nyrad> were entered som standard inmatning.
 
If an fel occurs during this process, an fel meddelande ska be skriven, and no more tecken resulting from the execution of this kommando ska be processed.
 
If en count är angiven, behave som if som count were entered som user inmatning före tecken från @ buffert were entered.
 
aktuell rad : As angiven for the individual kommandon.
 
aktuell kolumn : As angiven for the individual kommandon.
 
Reverse skiftläge
 
Synopsis :
 
<pre>
[ count ] ~
</pre>
 
Reverse skiftläge av aktuell tecken och nästa count -1 tecken, such som lowercase tecken som have uppercase counterparts ska vara ändrad till uppercase tecken, och uppercase tecken som have lowercase counterparts ska vara ändrad till lowercase tecken, som prescribed av aktuell lokal. No other tecken ska vara påverkad av denna kommando.
 
If there är less än count -1 tecken efter markör i edit buffert, count ska vara adjusted till nummer av tecken efter markör i edit buffert minus 1.
 
för purposes av denna kommando, nästa tecken after sista non-<nyrad> på rad ska vara nästa tecken i edit buffert.
 
aktuell rad : Set till rad including ( count -1)th tecken efter markör.
 
aktuell kolumn : Set till sista kolumn i which någon portion av ( count -1)th tecken efter markör är displayed.
 
lägg till
 
Synopsis :
 
<pre>
[ count ] a
</pre>
 
Enter text inmatning läge efter aktuell markör position. No tecken already i edit buffert ska vara påverkad av denna kommando. en count ska cause inmatning text till vara appended count
 
-1 more times to the slut of the inmatning.
 
aktuell rad/kolumn : As angiven for the text inmatning kommandon (see
 
inmatning läge kommandon i vi ).
 
lägg till at slut-av-rad
 
Synopsis :
 
<pre>
[ count ] A
</pre>
 
This kommando ska be equivalent to the vi kommando:
 
<pre>
$ [ count
</pre>
 
<pre>
] a
</pre>
 
(see lägg till ).
 
flytta Backward till föregående ord
 
Synopsis :
 
<pre>
[ count ] b
</pre>
 
med exception som ord är used som avgränsare instead av bigwords, denna kommando ska vara equivalent till B kommando.
 
flytta Backward till föregående Bigword
 
Synopsis :
 
<pre>
[ count ] B
</pre>
 
If edit buffert är empty eller markör är på första tecken av edit buffert, it ska vara en fel. If less än
 
count bigwords begin mellan markör och start av edit buffert, count ska vara adjusted till nummer av bigword beginnings mellan markör och start av edit buffert.
 
If used som en rörelse kommando:
 
1. text område ska vara från första tecken av
 
count th föregående bigword början up till but not including markör tecken.
 
2. någon text copied till en buffert ska vara i tecken läge.
 
If not used som en rörelse kommando:
 
aktuell rad : Set to the rad containing the aktuell kolumn .
 
aktuell kolumn : Set till sista kolumn upon which någon part av första tecken av count th föregående bigword är displayed.
 
ändra
 
Synopsis :
 
<pre>
[ buffert ][ count ] c rörelse
</pre>
 
If rörelse kommando är c kommando repeated:
 
1. buffert text ska vara i rad läge.
 
2. If there are less than count -1 rader after the aktuell rad in the edit buffert, it ska be an fel.
 
3. text område ska vara från aktuell rad up till och including nästa count -1 rader.
 
Otherwise, buffert text läge och text område ska vara som angiven av rörelse kommando.
 
replaced text ska vara copied into buffert , if angiven, och into unnamed buffert. If text till vara replaced contains tecken från more än en single rad, eller buffert text är i rad läge, replaced text ska vara copied into numeric buffertar som well.
 
If buffert text är i rad läge:
 
1. någon rader som contain tecken i område ska vara borttagen, och redigerare ska enter text inmatning läge at början av en new rad which ska ersätt första rad borttagen.
 
2. If autoindent edit option är set, autoindent tecken equal till autoindent tecken på första rad borttagen ska vara inserted som if entered av user.
 
Otherwise, if tecken från more än one rad är i område av text:
 
1. The text ska be borttagen.
 
2. någon text remaining i sista rad i text område ska vara appended till första rad i område, och sista rad i område ska vara borttagen.
 
3. redigerare ska enter text inmatning läge efter sista tecken not borttagen från första rad i text område, if någon; otherwise, på första kolumn av första rad i område.
 
Otherwise:
 
1. If glyph för '$' är smaller än område, slut av område ska vara marked med en '$' .
 
2. redigerare ska enter text inmatning läge, overwriting område av text.
 
aktuell rad/kolumn : As angiven for the text inmatning kommandon (see
 
inmatning läge kommandon i vi ).
 
ändra till slut-av-rad
 
Synopsis :
 
<pre>
[ buffert ][ count ] C
</pre>
 
This kommando ska be equivalent to the vi kommando:


<pre>
<pre>
dw    ta bort till nästa ord
[ buffert ][ count ] c$
d$     ta bort till radslut
y}    kopiera till nästa stycke
c0    ändra till radens början
</pre>
</pre>


== RÖRELSEKOMMANDON ==
See the c kommando.
 
ta bort


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


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


== GRUNDLÄGGANDE MARKÖRRÖRELSER ==
If rörelse kommando är d kommando repeated:
 
1. buffert text ska vara i rad läge.


'''h'''
2. If there are less than count -1 rader after the aktuell rad in the edit buffert, it ska be an fel.


: Flytta ett tecken åt vänster.
3. text område ska vara från aktuell rad up till och including nästa count -1 rader.


'''j'''
Otherwise, buffert text läge och text område ska vara som angiven av rörelse kommando.


: Flytta en rad nedåt.
If i open läge, och aktuell rad är borttagen, och rad remains på visning, en '@' tecken ska vara displayed som första glyph av som rad.


'''k'''
ta bort område av text into buffert , if angiven, och into unnamed buffert. If text till vara borttagen contains tecken från more än en single rad, eller buffert text är i rad läge, borttagen text ska vara copied into numeric buffertar, som well.


: Flytta en rad uppåt.
aktuell rad : Set till första text område rad som appears i edit buffert, unless som rad has varit borttagen, i which skiftläge it ska vara set till sista rad i edit buffert, eller rad 1 if edit buffert är empty.


'''l'''
aktuell kolumn :


: Flytta ett tecken åt höger.
1. If the rad is empty, set to kolumn position 1.


'''0'''
2. Otherwise, if buffert text är i rad läge eller rörelse was från markör toward slut av edit buffert:
 
en. If en tecken from the aktuell rad är displayed i the aktuell kolumn, set till the sista kolumn that displays någon portion av that tecken.
 
b. Otherwise, set till the sista kolumn i which någon portion av någon tecken i the rad är displayed.
 
3. Otherwise, if en tecken är displayed i kolumn som began text område, set till sista kolumn som displays någon portion av som tecken.
 
4. Otherwise, set till the sista kolumn i which någon portion av någon tecken i the rad är displayed.
 
ta bort to slut-of-rad
 
Synopsis :
 
<pre>
[ buffert ] D
</pre>
 
ta bort the text from the aktuell position to the slut of the aktuell rad; equivalent to the vi kommando:
 
<pre>
[ buffert ] d$
</pre>
 
flytta to slut-of-ord
 
Synopsis :
 
<pre>
[ count ] e
</pre>
 
med exception som ord är used instead av bigwords som avgränsare, denna kommando ska vara equivalent till E kommando.
 
flytta to slut-of-Bigword
 
Synopsis :
 
<pre>
[ count ] E
</pre>


: Flytta till radens första tecken.
If the edit buffert is empty it ska be an fel. If less than


'''^'''
count bigwords slut mellan markör och slut av edit buffert, count ska vara adjusted till nummer av bigword endings mellan markör och slut av edit buffert.


: Flytta till första icke-blanka tecknet på raden.
If used som en rörelse kommando:


'''$'''
1. text område ska vara från sista tecken av


: Flytta till radens slut.
count th nästa bigword up till och including markör tecken.


'''w'''
2. någon text copied till en buffert ska vara i tecken läge.


: Flytta framåt till början av nästa ord.
If not used som en rörelse kommando:


'''W'''
aktuell rad : Set to the rad containing the aktuell kolumn.


: Flytta framåt till nästa stort ord, där ord avgränsas av blanktecken.
aktuell kolumn : Set till sista kolumn upon which någon part av sista tecken av count th nästa bigword är displayed.


'''b'''
Find tecken in aktuell rad (Forward)


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


'''B'''
<pre>
[ count ] f tecken
</pre>


: Flytta bakåt till föregående stort ord.
It ska vara en fel if count occurrences av tecken do not occur efter markör i rad.


'''e'''
If used som en rörelse kommando:


: Flytta till slutet av ordet.
1. text range ska vara från markör tecken up till och including count th occurrence av angiven tecken efter markör.


'''E'''
2. någon text copied till en buffert ska vara i tecken läge.


: Flytta till slutet av stort ord.
If not used som en rörelse kommando:


'''G'''
aktuell rad : Unchanged.


: Flytta till en rad. Utan antal går kommandot till sista raden.
aktuell kolumn : Set till the sista kolumn i which någon portion av the


Exempel:
count th occurrence av angiven tecken efter markör appears i rad.
 
Find tecken in aktuell rad (Reverse)
 
Synopsis :


<pre>
<pre>
1G      gå till första raden
[ count ] F tecken
G      gå till sista raden
25G    gå till rad 25
</pre>
</pre>


'''H'''
It ska vara en fel if count occurrences av tecken do not occur före markör i rad.
 
If used som en rörelse kommando:
 
1. text område ska vara från count th occurrence av angiven tecken före markör, up till, but not including markör tecken.
 
2. någon text copied till en buffert ska vara i tecken läge.


: Flytta till översta raden på skärmen.
If not used som en rörelse kommando:


'''M'''
aktuell rad : Unchanged.


: Flytta till mittenraden på skärmen.
aktuell kolumn : Set till the sista kolumn i which någon portion av the


'''L'''
count th occurrence av angiven tecken före markör appears i rad.


: Flytta till nedersta raden på skärmen.
flytta to rad


'''%'''
Synopsis :


: Flytta till matchande parentes, hakparentes eller klammerparentes.
<pre>
[ count ] G
</pre>


== SID- OCH SKÄRMRÖRELSER ==
If count is not angiven, it ska standard to the sista rad of the edit buffert. If count is greater than the sista rad of the edit buffert, it ska be an fel.


'''Ctrl-B'''
If used som en rörelse kommando:


: Sida bakåt.
1. text område ska vara från markör rad up till och including angiven rad.


'''Ctrl-F'''
2. någon text copied till en buffert ska vara i rad läge.


: Sida framåt.
If not used som en rörelse kommando:


'''Ctrl-D'''
aktuell rad : Set to count if count is angiven; otherwise, the sista rad.


: Rulla nedåt, normalt en halv skärm.
aktuell kolumn : Set to non-<blank>.


'''Ctrl-U'''
flytta till Top av skärm


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


'''Ctrl-E'''
<pre>
[ count ] H
</pre>


: Rulla framåt en rad.
If början av rad count greater än första rad av which någon portion appears på visning does not exist, it ska vara en fel.


'''Ctrl-Y'''
If used som en rörelse kommando:


: Rulla bakåt en rad.
1. If i open läge, text område ska vara aktuell rad.


'''Ctrl-L'''
2. Otherwise, text område ska vara från starting rad up till och including ( första rad av visning + count -1).


: Rensa och rita om skärmen.
3. någon text copied till en buffert ska vara i rad läge.


'''Ctrl-R'''
If not used som en rörelse kommando:


: Rita om skärmen.
If i open läge, denna kommando ska set aktuell kolumn till non-<blank> och do nothing else.


'''Ctrl-G'''
Otherwise, it ska set the aktuell rad and aktuell kolumn as follows.


: Visa filinformation. Motsvarar i POSIX beskrivningen av '''ex file'''.
aktuell rad : Set till ( första rad av visning + count -1).


== SÖKNING ==
aktuell kolumn : Set to non-<blank>.


'''/mönster'''
infoga före markör


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


'''?mönster'''
<pre>
[ count ] i
</pre>


: Sök bakåt efter ett reguljärt uttryck.
Enter text inmatning läge före aktuell markör position. No tecken already i edit buffert ska vara påverkad av denna kommando. en count ska cause inmatning text till vara appended count


'''n'''
-1 more times to the slut of the inmatning.


: Upprepa senaste sökningen i samma riktning.
aktuell rad/kolumn : As angiven for the text inmatning kommandon (see


'''N'''
inmatning läge kommandon i vi ).


: Upprepa senaste sökningen i motsatt riktning.
infoga at början av rad


Exempel:
Synopsis :


<pre>
<pre>
/main
[ count ] I
?include
</pre>
 
denna kommando ska vara equivalent till vi kommando ^[ count ] i .
 
Join
 
Synopsis :
 
<pre>
[ count ] J
</pre>
 
If the aktuell rad is the sista rad in the edit buffert, it ska be an fel.
 
This kommando ska be equivalent to the ex
 
join kommando med no addresses, och en ex kommando count värde av 1 if count was not angiven eller if en count av 1 was angiven, och en ex kommando
 
count värde av count -1 för någon other värde av count , except som aktuell rad och kolumn ska vara set som follows.
 
aktuell rad : Unchanged.
 
aktuell kolumn : sista kolumn i which någon portion av tecken följande sista tecken i initial rad är displayed, eller sista non-<nyrad> i rad if no tecken were appended.
 
flytta till Bottom av skärm
 
Synopsis :
 
<pre>
[ count ] L
</pre>
 
If början av rad count less än sista rad av which någon portion appears på visning does not exist, it ska vara en fel.
 
If used som en rörelse kommando:
 
1. If i open läge, text område ska vara aktuell rad.
 
2. Otherwise, text område ska include alla rader från starting markör rad till ( sista rad av visning -( count
 
-1)).
 
3. någon text copied till en buffert ska vara i rad läge.
 
If not used som en rörelse kommando:
 
1. If i open läge, denna kommando ska set aktuell kolumn till non-<blank> och do nothing else.
 
2. Otherwise, it ska set the aktuell rad and aktuell kolumn as follows.
 
aktuell rad : Set to (the sista rad of the visning -( count -1)).
 
aktuell kolumn : Set to non-<blank>.
 
märke Position
 
Synopsis :
 
m letter
 
This kommando ska be equivalent to the ex
 
märke kommando med angiven tecken som en argument.
 
flytta till Middle av skärm
 
Synopsis :
 
M
 
The middle rad of the visning ska be calculated as follows:
 
( top rad av visning) + (((nummer av rader displayed) +1) /2) -1
 
If used som en rörelse kommando:
 
1. If i open läge, text område ska vara aktuell rad.
 
2. Otherwise, text område ska include alla rader från starting markör rad up till och including middle rad av visning.
 
3. någon text copied till en buffert ska vara i rad läge.
 
If not used som en rörelse kommando:
 
If i open läge, denna kommando ska set aktuell kolumn till non-<blank> och do nothing else.
 
Otherwise, it ska set the aktuell rad and aktuell kolumn as follows.
 
aktuell rad : Set to the middle rad of the visning.
 
aktuell kolumn : Set to non-<blank>.
 
upprepa Regular Expression Find (Forward)
 
Synopsis :
 
n
n
If ihågkommen sökning direction was forward, n kommando ska vara equivalent till vi
/ kommando with no tecken entered by the user. Otherwise, it ska be equivalent to the vi
?
kommando with no tecken entered by the user.
If n kommando är used som en rörelse kommando för ! kommando, redigerare ska not enter text inmatning läge på sista rad på skärm, och ska behave som if user entered en single '!'
tecken as the text inmatning.
upprepa Regular Expression Find (Reverse)
Synopsis :
N
N
Scan för nästa matcha av sista mönster given till / eller ? , but i reverse direction; denna är reverse av n .
If ihågkommen sökning direction was forward, N kommando ska vara equivalent till vi
? kommando med no tecken entered av user. Otherwise, it ska vara equivalent till vi
/
kommando med no tecken entered av user. If N kommando är used som en rörelse kommando för ! kommando, redigerare ska not enter text inmatning läge på sista rad på skärm, och ska behave som if user entered en single ! tecken som text inmatning.
infoga Empty rad Below
Synopsis :
o
Enter text inmatning läge i en new rad appended efter aktuell rad. en count ska cause inmatning text till vara appended count -1 more times till slut av already added text, each time starting på en new, appended rad.
aktuell rad/kolumn : As angiven for the text inmatning kommandon (see
inmatning läge kommandon i vi ).
infoga Empty rad Above
Synopsis :
O
Enter text inmatning läge i en new rad inserted före aktuell rad. en count ska cause inmatning text till vara appended count -1 more times till slut av already added text, each time starting på en new, appended rad.
aktuell rad/kolumn : As angiven for the text inmatning kommandon (see
inmatning läge kommandon i vi ).
Put från buffert följande
Synopsis :
<pre>
[ buffert ] p
</pre>
If no buffert is angiven, the unnamed buffert ska be used.
If buffert text är i rad läge, text ska vara appended below aktuell rad, och each rad av buffert ska become en new rad i edit buffert. en count ska cause buffert text till vara appended count -1 more times till slut av already added text, each time starting på en new, appended rad.
If buffert text är i tecken läge, text ska vara appended into aktuell rad efter markör, och each rad av buffert other än första och sista ska become en new rad i edit buffert. en count ska cause buffert text till vara appended count -1 more times till slut av already added text, each time starting efter sista added tecken.
aktuell rad : If buffert text är i rad läge, set rad till rad +1; otherwise, unchanged.
aktuell kolumn : If buffert text är i rad läge:
1. If there är en non-<blank> i första rad av buffert, set till sista kolumn på which någon portion av första non-<blank> i rad är displayed.
2. If there är no non-<blank> i första rad av buffert, set till sista kolumn på which någon portion av sista non-<nyrad> i första rad av buffert är displayed.
If buffert text är i tecken läge:
1. If text i buffert är från more än en single rad, then set till sista kolumn på which någon portion av första tecken från buffert är displayed.
2. Otherwise, if the buffert är the unnamed buffert, set till the sista kolumn på which någon portion av the sista tecken from the buffert är displayed.
3. Otherwise, set till första kolumn på which någon portion av första tecken från buffert är displayed.
Put from buffert Before
Synopsis :
<pre>
[ buffert ] P
</pre>
</pre>


== TECKENSÖKNING PÅ RAD ==
If no buffert is angiven, the unnamed buffert ska be used.


'''f''' ''tecken''
If buffert text är i rad läge, text ska vara inserted above aktuell rad, och each rad av buffert ska become en new rad i edit buffert. en count ska cause buffert text till vara appended count -1 more times till slut av already added text, each time starting på en new, appended rad.


: Sök framåt till nästa förekomst av ''tecken'' på raden.
If buffert text är i tecken läge, text ska vara inserted into aktuell rad före markör, och each rad av buffert other än första och sista ska become en new rad i edit buffert. en count ska cause buffert text till vara appended count -1 more times till slut av already added text, each time starting efter sista added tecken.


'''F''' ''tecken''
aktuell rad : Unchanged.


: Sök bakåt till föregående förekomst av ''tecken'' på raden.
aktuell kolumn : If buffert text är i rad läge:


'''t''' ''tecken''
1. If there är en non-<blank> i första rad av buffert, set till sista kolumn på which någon portion av som tecken är displayed.


: Sök framåt till tecknet före nästa förekomst av ''tecken''.
2. If there är no non-<blank> i första rad av buffert, set till sista kolumn på which någon portion av sista non-<nyrad> i första rad av buffert är displayed.


'''T''' ''tecken''
If buffert text är i tecken läge:


: Sök bakåt till tecknet efter föregående förekomst av ''tecken''.
1. If text i buffert är från more än en single rad, then set till sista kolumn på which någon portion av första tecken från buffert är displayed.


''';'''
2. Otherwise, if the buffert är the unnamed buffert, set till the sista kolumn på which någon portion av the sista tecken from the buffert är displayed.


: Upprepa senaste '''f''', '''F''', '''t''' eller '''T''' i samma riktning.
3. Otherwise, set till första kolumn på which någon portion av första tecken från buffert är displayed.


''','''
Enter ex läge


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


== INFOGA TEXT ==
Q


'''i'''
Leave visuellt eller open läge och enter ex kommando läge.


: Infoga text före markören.
aktuell rad : Unchanged.


'''I'''
aktuell kolumn : Unchanged.


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


'''a'''
Synopsis :


: Lägg till text efter markören.
<pre>
[ count ] r tecken
</pre>


'''A'''
ersätt count tecken at och efter markör med angiven tecken. If there är less än count non-<nyrad> tecken at och efter markör på rad, it ska vara en fel.


: Lägg till text i slutet av raden.
If tecken är <kontroll>-V, någon nästa tecken other än <nyrad> ska vara stripped av någon special meaning och used som en literal tecken.


'''o'''
If tecken is <ESC>, no replacement ska be made and the aktuell rad and aktuell kolumn ska be unchanged.


: Öppna ny rad under aktuell rad och börja infoga text.
If tecken är <carriage-return> eller <nyrad>, count new rader ska vara appended till aktuell rad. alla but sista av dessa rader ska vara empty. count tecken at och efter markör ska vara discarded, och någon remaining tecken efter markör i aktuell rad ska vara moved till sista av new rader. If autoindent edit option är set, they ska vara preceded av samma nummer av autoindent tecken found på rad från which kommando was executed.


'''O'''
aktuell rad : Unchanged unless replacement tecken är en <carriage-return> eller <nyrad>, i which skiftläge it ska vara set till rad + count .


: Öppna ny rad ovanför aktuell rad och börja infoga text.
aktuell kolumn : Set till sista kolumn position på which en portion av sista replaced tecken är displayed, eller if replacement tecken caused new rader till vara created, set till non-<blank>.


'''Esc'''
ersätt tecken


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


== ÄNDRA TEXT ==
R


'''r''' ''tecken''
Enter text inmatning läge at aktuell markör position possibly replacing text på aktuell rad. en count ska cause inmatning text till vara appended count -1 more times till slut av inmatning.


: Ersätt tecknet under markören med ''tecken''.
aktuell rad/kolumn : As angiven for the text inmatning kommandon (see


'''R'''
inmatning läge kommandon i vi ).


: Gå in i ersättningsläge.
Substitute tecken


'''s'''
Synopsis :


: Ersätt aktuellt tecken med inmatad text.
<pre>
[ buffert ][ count ] s
</pre>


'''S'''
This kommando ska be equivalent to the vi kommando:


: Ersätt hela aktuell rad med inmatad text.
<pre>
[ buffert ][ count ] c<mellanslag>
</pre>


'''c''' ''rörelse''
Substitute rader


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


Exempel:
<pre>
[ buffert ][ count ] S
</pre>
 
This kommando ska be equivalent to the vi kommando:


<pre>
<pre>
cw    ändra ord
[ buffert ][ count ] c_
c$    ändra till radslut
cc    ändra hela raden
C      ändra till radslut
</pre>
</pre>


'''~'''
flytta markör till före tecken (Forward)
 
Synopsis :


: Växla skiftläge på aktuellt tecken eller textområde enligt implementationens beteende.
<pre>
[ count ] t tecken
</pre>


== TA BORT TEXT ==
It ska vara en fel if count occurrences av tecken do not occur efter markör i rad.


'''x'''
If used som en rörelse kommando:


: Ta bort tecknet under markören.
1. text område ska vara från markör up till but not including count th occurrence av angiven tecken efter markör.


'''X'''
2. någon text copied till en buffert ska vara i tecken läge.


: Ta bort tecknet före markören.
If not used som en rörelse kommando:


'''d''' ''rörelse''
aktuell rad : Unchanged.


: Ta bort textområdet som anges av rörelsen.
aktuell kolumn : Set till sista kolumn i which någon portion av tecken före count th occurrence av angiven tecken efter markör appears i rad.


Exempel:
flytta markör till efter tecken (Reverse)
 
Synopsis :


<pre>
<pre>
dw    ta bort ord
[ count ] T tecken
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
</pre>
</pre>


== KOPIERA OCH KLISTRA IN ==
It ska vara en fel if count occurrences av tecken do not occur före markör i rad.
 
If used som en rörelse kommando:
 
1. If tecken före markör är angiven tecken, it ska vara en fel.
 
2. text område ska vara från tecken före markör up till but not including count th occurrence av angiven tecken före markör.


'''y''' ''rörelse''
3. någon text copied till en buffert ska vara i tecken läge.


: Kopiera textområdet som anges av rörelsen.
If not used som en rörelse kommando:


Exempel:
aktuell rad : Unchanged.
 
aktuell kolumn : Set till sista kolumn i which någon portion av tecken efter count th occurrence av angiven tecken före markör appears i rad.
 
Undo
 
Synopsis :
 
u
 
This kommando ska be equivalent to the ex
 
undo kommando except that the aktuell rad and aktuell kolumn ska be set as follows:
 
aktuell rad : Set till första rad added eller ändrad if någon; otherwise, flytta till rad föregående någon borttagen text if one exists; otherwise, flytta till rad 1.
 
aktuell kolumn : If undoing en ex kommando, set till första non-<blank>.
 
Otherwise, if undoing a text inmatning kommando:
 
1. If kommando was en C , c , O , o , R , S , eller s kommando, aktuell kolumn ska vara set till värde it held när text inmatning kommando was entered.
 
2. Otherwise, set till sista kolumn i which någon portion av första tecken efter borttagen text är displayed, eller, if no non-<nyrad> tecken follow text borttagen från denna rad, set till sista kolumn i which någon portion av sista non-<nyrad> i rad är displayed, eller 1 if rad är empty.
 
Otherwise, if a single rad was modified (that is, not added or borttagen) by the u kommando:
 
1. If text was added eller ändrad, set till sista kolumn i which någon portion av första tecken added eller ändrad är displayed.
 
2. If text was borttagen, set till sista kolumn i which någon portion av första tecken efter borttagen text är displayed, eller, if no non-<nyrad> tecken follow borttagen text, set till sista kolumn i which någon portion av sista non-<nyrad> i rad är displayed, eller 1 if rad är empty.
 
Otherwise, set to non-<blank>.
 
Undo aktuell rad
 
Synopsis :
 
U
 
Restore aktuell rad till its tillstånd immediately before most recent time som it became aktuell rad.
 
aktuell rad : Unchanged.
 
aktuell kolumn : Set till första kolumn i rad i which någon portion av första tecken i rad är displayed.
 
flytta till början av ord
 
Synopsis :


<pre>
<pre>
yw    kopiera ord
[ count ] w
y$    kopiera till radslut
yy    kopiera aktuell rad
3yy    kopiera tre rader
Y      kopiera rad
</pre>
</pre>


'''p'''
med exception som ord är used som avgränsare instead av bigwords, denna kommando ska vara equivalent till W kommando.


: Klistra in efter markören eller efter aktuell rad, beroende på buffertens typ.
flytta till början av Bigword


'''P'''
Synopsis :


: Klistra in före markören eller före aktuell rad.
<pre>
[ count ] W
</pre>


== ÅNGRA OCH UPPREPA ==
If edit buffert är empty, it ska vara en fel. If there är less än count bigwords mellan markör och slut av edit buffert, count ska vara adjusted till flytta markör till sista bigword i edit buffert.


'''u'''
If used som en rörelse kommando:


: Ångra senaste ändringen.
1. If kopplad kommando är c , count är 1, och markör är på en <blank>, område av text ska vara aktuell tecken och no further action ska vara taken.


'''U'''
2. If there är less än count bigwords mellan markör och slut av edit buffert, then kommando ska succeed, och område av text ska include sista tecken av edit buffert.


: Ångra ändringar på aktuell rad, enligt klassiskt vi-beteende.
3. If there är <blank> tecken eller en slut-av-rad som precede count th bigword, och kopplad kommando är c , område av text ska vara up till och including sista tecken före föregående <blank> tecken eller slut-av-rad.


'''.'''
4. If there är <blank> tecken eller en slut-av-rad som precede bigword, och kopplad kommando är d eller y , område av text ska vara up till och including sista <blank> före start av bigword eller slut-av-rad.


: Upprepa senaste ändringskommando.
5. någon text copied till en buffert ska vara i tecken läge.


'''&'''
If not used som en rörelse kommando:


: Upprepa senaste substitutionskommando.
1. If markör är på sista tecken av edit buffert, it ska vara en fel.


== INDENTERING OCH FILTER ==
aktuell rad : Set to the rad containing the aktuell kolumn.


'''<''' ''rörelse''
aktuell kolumn : Set till sista kolumn i which någon part av första tecken av count th nästa bigword är displayed.


: Skjut textområdet åt vänster.
ta bort tecken at markör


'''>' ''rörelse''
Synopsis :


: Skjut textområdet åt höger.
<pre>
[ buffert ][ count ] x
</pre>


'''!''' ''rörelse kommando''
ta bort the count tecken at and after the aktuell tecken into buffert , if angiven, and into the unnamed buffert.


: Filtrera textområdet genom ett skalkommando och ersätt texten med kommandots utmatning.
If the rad is empty, it ska be an fel. If there are less than


Exempel:
count non-<nyrad> tecken at och efter markör på aktuell rad, count ska vara adjusted till nummer av non-<nyrad> tecken at och efter markör.
 
aktuell rad : Unchanged.
 
aktuell kolumn : If rad är empty, set till kolumn position 1. Otherwise, if there were count eller less non-<nyrad> tecken at och efter markör på aktuell rad, set till sista kolumn som displays någon part av sista non-<nyrad> av rad. Otherwise, unchanged.
 
ta bort tecken före markör
 
Synopsis :


<pre>
<pre>
!!sort
[ buffert ][ count ] X
!}fmt
</pre>
</pre>


== MÄRKEN OCH HOPP ==
ta bort the count tecken before the aktuell tecken into


'''m''' ''tecken''
buffert , if angiven, and into the unnamed buffert.


: Sätt ett märke med namnet ''tecken'' på aktuell position.
If there are no tecken before the aktuell tecken on the aktuell rad, it ska be an fel. If there are less than count


''''''' ''tecken''
föregående tecken på aktuell rad, count ska vara adjusted till nummer av föregående tecken på rad.


: Hoppa till början av raden där märket finns.
aktuell rad : Unchanged.


'''`''' ''tecken''
aktuell kolumn : Set to (aktuell kolumn - the width of the borttagen tecken).


: Hoppa till exakt position för märket.
Yank


Exempel:
Synopsis :


<pre>
<pre>
ma
[ buffert ][ count ] y rörelse
'a
`a
</pre>
</pre>


== TAGGAR ==
kopiera (yank) område av text into buffert , if angiven, och into unnamed buffert.
 
If rörelse kommando är y kommando repeated:
 
1. buffert ska vara i rad läge.


'''Ctrl-]'''
2. If there are less than count -1 rader after the aktuell rad in the edit buffert, it ska be an fel.


: Sök efter taggen under markören. Detta motsvarar ett '''ex tag'''-kommando med ordet under markören som argument.
3. text område ska vara från aktuell rad up till och including nästa count -1 rader.


== SPARA OCH AVSLUTA ==
Otherwise, buffert text läge och text område ska vara som angiven av rörelse kommando.


''':w'''
aktuell rad : If rörelse was från aktuell markör position toward slut av edit buffert, unchanged. Otherwise, set till första rad i edit buffert som är part av text område angiven av rörelse kommando.


: Spara filen.
aktuell kolumn :


''':w filnamn'''
1. If rörelse was från aktuell markör position toward slut av edit buffert, unchanged.


: Spara till angiven fil.
2. Otherwise, if the aktuell rad is empty, set to kolumn position 1.


''':q'''
3. Otherwise, set till sista kolumn som displays någon part av första tecken i fil som är part av text område angiven av rörelse kommando.
 
Yank aktuell rad
 
Synopsis :
 
<pre>
[ buffert ][ count ] Y
</pre>


: Avsluta.
This kommando ska be equivalent to the vi kommando:


''':q!'''
<pre>
[ buffert ][ count ] y_
</pre>


: Avsluta utan att spara ändringar.
Redraw fönster


''':wq'''
If i open läge, z kommando ska have Synopsis:


: Spara och avsluta.
Synopsis :


'''ZZ'''
<pre>
[ count ] z
</pre>


: Spara och avsluta om ändringar finns.
If count är not angiven, it ska standard till fönster edit option -1. z kommando ska vara equivalent till ex


''':x'''
z kommando, med en type tecken av = och en count av count -2, except som aktuell rad och aktuell kolumn ska vara set som follows, och fönster edit option ska not vara påverkad. If calculation för count argument would result i en negative nummer,


: Spara och avsluta, i många implementationer endast om filen ändrats.
count argument to the ex


== RADKOMMANDON OCH EX-KOMMANDON ==
z kommando ska be zero. A blank rad ska be skriven after the sista rad is skriven.


Kommandon som börjar med kolon körs som '''ex'''-kommandon.
aktuell rad : Unchanged.


Exempel:
aktuell kolumn : Unchanged.
 
If not i open läge, z kommando ska have följande Synopsis:
 
Synopsis :


<pre>
<pre>
:set number
[ rad ] z [ count ] tecken
:set nonumber
:1
:$
:25
:%s/gammalt/nytt/g
:read fil.txt
:write
:quit
</pre>
</pre>


== SUBSTITUTION ==
If rad is not angiven, it ska standard to the aktuell rad. If
 
rad is angiven, but is greater than the nummer of rader in the edit buffert, it ska standard to the nummer of rader in the edit buffert.
 
If count är angiven, värde av fönster edit option ska vara set till count (som described i ex
 
fönster kommando), och skärm ska vara redrawn.
 
rad ska vara placed som angiven av följande tecken:
 
<nyrad>, <carriage-return> Place början av rad på första rad av visning.
 
. Place början av rad i center av visning. middle rad av visning ska vara calculated som described för M kommando.
 
- Place an ospecificerad portion of the rad on the sista rad of the visning.
 
<pre>
+ If rad was angiven, equivalent till <nyrad> skiftläge. If
</pre>
 
rad was not angiven, visning en skärm där första rad av visning ska vara (aktuell sista rad) +1. If there är no rader efter sista rad i visning, it ska vara en fel.
 
^ If rad was angiven, visning en skärm där sista rad av visning ska contain en ospecificerad portion av första rad av en visning som had en ospecificerad portion av angiven rad på sista rad av visning. If denna calculation results i en rad före början av edit buffert, visning första skärm av edit buffert.
 
Otherwise, visning en skärm där sista rad av visning ska contain en ospecificerad portion av (aktuell första rad -1). If denna calculation results i en rad före början av edit buffert, it ska vara en fel.
 
aktuell rad : If rad och '^' tecken were angiven:
 
1. If första skärm was displayed som en result av kommando attempting till visning rader före början av edit buffert: if första skärm was already displayed, unchanged; otherwise, set till (aktuell första rad -1).
 
2. Otherwise, set to the sista rad of the visning.
 
If rad och '+' tecken were angiven, set till första rad av visning.
 
Otherwise, if rad was angiven, set to rad .
 
Otherwise, unchanged.
 
aktuell kolumn : Set to non-<blank>.
 
Exit
 
Synopsis :
 
ZZ
 
This kommando ska be equivalent to the ex
 
xit kommando med no addresses, trailing ! , eller filename (see ex
 
xit kommando).
 
'''Kommandon för inmatningsläge i vi'''
 
i text inmatning läge, aktuell rad ska consist av zero eller more av följande categories, plus terminating <nyrad>:
 
1. tecken föregående text inmatning entry point
 
tecken i denna category ska not vara modified during text inmatning läge.
 
2. autoindent tecken
 
autoindent tecken ska vara automatically inserted into each rad som är created i text inmatning läge, either som en result av entering en <nyrad> eller <carriage-return> medan i text inmatning läge, eller som en effect av kommando itself; för example, O eller o (see ex
 
autoindent kommando), as if entered by the user.
 
It ska vara possible till erase autoindent tecken med <kontroll>-D kommando; it är ospecificerad whether they can vara erased av <kontroll>-H, <kontroll>-U, och <kontroll>-W tecken. Erasing någon autoindent tecken turns glyph into erase-kolumner och deletes tecken från edit buffert, but does not ändra its representation på skärm.
 
3. text inmatning tecken
 
text inmatning tecken är tecken entered av user. Erasing någon text inmatning tecken turns glyph into erase- kolumner och deletes tecken från edit buffert, but does not ändra its representation på skärm.
 
Each text inmatning tecken entered by the user (that does not have a special meaning) ska be treated as follows:
 
en. text inmatning tecken ska vara appended till sista tecken i edit buffert från första, second, eller third categories.
 
b. If there är no erase-kolumner på skärm, text inmatning kommando was R kommando, och tecken i fifth category från original rad follow markör, nästa such tecken ska vara borttagen från edit buffert. If slowopen edit option är not set, corresponding glyph på skärm ska become erase- kolumner.
 
c. If there är erase-kolumner på skärm, som many kolumner som they occupy, eller som är necessary, ska vara overwritten till visning text inmatning tecken. (If endast part av en multi-kolumn glyph är overwritten, remainder ska vara left på skärm, och continue till vara treated som erase- kolumner; it är ospecificerad whether remainder av glyph är modified i någon way.)
 
d. If additional visning rad kolumner are needed to visning the text inmatning tecken:
 
i. If slowopen edit option är set, text inmatning tecken ska vara displayed på subsequent visning rad kolumner, overwriting någon tecken displayed i de kolumner.
 
ii. Otherwise, någon tecken currently displayed på eller efter kolumn på visning rad där text inmatning tecken är till vara displayed ska vara pushed ahead nummer av visning rad kolumner necessary till visning rest av text inmatning tecken.
 
4. Erase-kolumner
 
Erase-kolumner är not logically part av edit buffert, appearing endast på skärm, och kan vara overwritten på skärm av subsequent text inmatning tecken. när text inmatning läge ends, alla erase-kolumner ska no longer appear på skärm.
 
Erase-kolumner är initially område av text angiven av c kommando (see ändra ); however, erasing autoindent eller text inmatning tecken causes glyphs av erased tecken till vara treated som erase-kolumner.
 
5. tecken följande text område för c kommando, eller text inmatning entry point för alla other kommandon
 
tecken i denna category ska not vara modified during text inmatning läge, except som angiven i category 3.b. för R
 
text inmatning kommando, or as <blank> tecken borttagen when a <nyrad> or <carriage-return> is entered.
 
It är ospecificerad whether it är en fel till attempt till erase past början av en rad som was created av entry av en <nyrad> eller <carriage-return> during text inmatning läge. If it är not en fel, redigerare ska behave som if erasing tecken was entered immediately efter sista text inmatning tecken entered på föregående rad, och alla av non-<nyrad> tecken på aktuell rad ska vara treated som erase-kolumner.
 
när text inmatning läge är entered, eller efter en text inmatning läge tecken är entered (except som angiven för special tecken below), markör ska vara positioned som follows:
 
1. på första kolumn som displays någon part av första erase- kolumn, if one exists
 
2. Otherwise, if slowopen edit option är set, på första visning rad kolumn efter sista tecken i första, second, eller third categories, if one exists
 
3. Otherwise, första kolumn som displays någon part av första tecken i fifth category, if one exists
 
4. Otherwise, visning rad kolumn efter sista tecken i första, second, eller third categories, if one exists
 
5. Otherwise, on kolumn position 1
 
tecken som är updated på skärm during text inmatning läge är ospecificerad, other än som sista text inmatning tecken ska always vara updated, och, if slowopen edit option är not set, aktuell markör tecken ska always vara updated.
 
följande specifications är för kommando tecken entered during text inmatning läge.
 
NUL
 
Synopsis :
 
NUL
 
If första tecken av text inmatning är en NUL, most recently inmatning text ska vara inmatning som if entered av user, och then text inmatning läge ska vara exited. text ska vara inmatning literally; som är, tecken är neither macro eller abbreviation expanded, nor är någon tecken interpreted i någon special manner. It är ospecificerad whether implementationer ska support more än 256 bytes av ihågkommen inmatning text.
 
<pre>
<kontroll>-D
</pre>


Ett vanligt '''ex'''-kommando i '''vi''' är substitution:
Synopsis :


<pre>
<pre>
:s/gammalt/nytt/
<kontroll>-D
</pre>
</pre>


Byt första förekomsten på aktuell rad.
<kontroll>-D tecken ska have no special meaning när i text inmatning läge för en rad-oriented kommando (see kommando
 
Descriptions in vi ).
 
denna kommando need not vara supported på block-läge terminals.
 
If markör does not follow en autoindent tecken, eller en
 
autoindent tecken och en '0' eller '^' tecken:
 
1. If markör är i kolumn position 1, <kontroll>-D tecken ska vara discarded och no further action taken.
 
2. Otherwise, the <kontroll>-D tecken ska have no special meaning.
 
If sista inmatning tecken was en '0' , markör ska vara moved till kolumn position 1.
 
Otherwise, if sista inmatning tecken was en '^' , markör ska vara moved till kolumn position 1. i addition, autoindent level för nästa inmatning rad ska vara derived från samma rad från which autoindent level för aktuell inmatning rad was derived.
 
Otherwise, markör ska vara moved back till kolumn efter föregående shiftwidth (see ex
 
shiftwidth kommando) boundary.
 
alla av glyphs kolumner mellan starting markör position och (inclusively) ending markör position ska become erase- kolumner som described i inmatning läge kommandon i vi .
 
aktuell rad : Unchanged.


<pre>
<pre>
:s/gammalt/nytt/g
aktuell kolumn : Set till 1 if <kontroll>-D was preceded av en '^'
</pre>
</pre>


Byt alla förekomster på aktuell rad.
eller '0' ; otherwise, set till (kolumn -1) -((kolumn -2) % shiftwidth ).


<pre>
<pre>
:%s/gammalt/nytt/g
<kontroll>-H
</pre>
</pre>


Byt alla förekomster i hela filen.
Synopsis :


<pre>
<pre>
:%s/gammalt/nytt/gc
<kontroll>-H
</pre>
</pre>


Byt alla förekomster i hela filen, men fråga före varje ändring.
If i text inmatning läge för en rad-oriented kommando, och there är no tecken till erase, text inmatning läge ska vara terminated, no further action ska vara done för denna kommando, och aktuell rad och kolumn ska vara unchanged.
 
If there är tecken other än autoindent tecken som have varit inmatning på aktuell rad före markör, markör ska flytta back one tecken.
 
Otherwise, if there är autoindent tecken på aktuell rad före markör, it är implementation-defined whether <kontroll>-H kommando är en fel eller if markör moves back one
 
autoindent tecken.
 
Otherwise, if markör är i kolumn position 1 och there är föregående rader som have varit inmatning, it är implementation-defined whether <kontroll>-H kommando är en fel eller if it är equivalent till entering <kontroll>-H efter sista inmatning tecken på föregående inmatning rad.
 
Otherwise, it ska be an fel.


== BUFFERT, ORD OCH STORA ORD ==
alla av glyphs på kolumner mellan starting markör position och (inclusively) ending markör position ska become erase- kolumner som described i inmatning läge kommandon i vi .


I POSIX-lokalen känner '''vi''' igen både ''ord'' och ''stora ord''.
aktuell erase tecken (see stty ) ska cause en equivalent action till <kontroll>-H kommando, unless previously inserted tecken was en <backslash>, i which skiftläge it ska vara som if literal aktuell erase tecken had varit inserted instead av <backslash>.


Ett ''ord'' är normalt en maximal följd av bokstäver, siffror och understreck, eller en maximal följd av andra icke-blanka skiljetecken.
aktuell rad : Unchanged, unless previously inmatning rader är erased, i which skiftläge it ska vara set till rad -1.


Ett ''stort ord'' är en maximal följd av icke-blanka tecken som avgränsas av blanktecken.
aktuell kolumn : Set till första kolumn som displays någon portion av tecken backed up over.


Detta påverkar rörelsekommandon som:
<pre>
<nyrad>
</pre>
 
Synopsis :


<pre>
<pre>
w W b B e E
<nyrad> <carriage-return> <kontroll>-J <kontroll>-M
</pre>
</pre>


== MENINGAR, STYCKEN OCH SEKTIONER ==
If inmatning was part av en rad-oriented kommando, text inmatning läge ska vara terminated och kommando ska continue execution med inmatning provided.
 
Otherwise, terminate aktuell rad. If there är no tecken other än autoindent tecken på rad, alla tecken på rad ska vara discarded. Otherwise, it är ospecificerad whether autoindent tecken i rad är modified av entering dessa tecken.
 
Continue text inmatning läge på en new rad appended efter aktuell rad. If slowopen edit option är set, rader på skärm below aktuell rad ska not vara pushed down, but första av them ska vara cleared och ska appear till vara overwritten. Otherwise, rader av skärm below aktuell rad ska vara pushed down.
 
If the autoindent edit option is set, an appropriate nummer of


'''vi''' definierar gränser för meningar, stycken och sektioner. Dessa används av rörelsekommandon som:
autoindent tecken ska be added as a prefix to the rad as described by the ex
 
autoindent edit option.
 
alla kolumner efter markör som är erase-kolumner (som described i inmatning läge kommandon i vi ) ska vara discarded.
 
If autoindent edit option är set, alla <blank> tecken immediately följande markör ska vara discarded.
 
alla remaining tecken efter markör ska vara transferred till new rad, positioned efter någon autoindent tecken.
 
aktuell rad : Set till aktuell rad +1.
 
aktuell kolumn : Set till första kolumn som displays någon portion av första tecken efter autoindent tecken på new rad, if någon, eller första kolumn position efter sista
 
autoindent tecken, if någon, eller kolumn position 1.


<pre>
<pre>
( )
<kontroll>-T
{ }
[[ ]]
</pre>
</pre>


'''('''
Synopsis :


: Flytta bakåt till början av föregående mening.
<pre>
<kontroll>-T
</pre>


''')'''
<kontroll>-T tecken ska have no special meaning när i text inmatning läge för en rad-oriented kommando (see kommando


: Flytta framåt till början av nästa mening.
Descriptions in vi ).


'''{'''
denna kommando need not vara supported på block-läge terminals.


: Flytta bakåt till början av föregående stycke.
Behave som if user entered minimum nummer av <blank> tecken necessary till flytta markör forward till kolumn position efter nästa shiftwidth (see ex


'''}'''
shiftwidth kommando) boundary.


: Flytta framåt till början av nästa stycke.
aktuell rad : Unchanged.
 
aktuell kolumn : Set till kolumn + shiftwidth - ((kolumn -1) %
 
shiftwidth ).
 
<pre>
<kontroll>-U
</pre>


'''[['''
Synopsis :


: Flytta bakåt till föregående sektionsgräns.
<pre>
<kontroll>-U
</pre>


''']]'''
If there är tecken other än autoindent tecken som have varit inmatning på aktuell rad före markör, markör ska flytta till första tecken inmatning efter autoindent tecken.


: Flytta framåt till nästa sektionsgräns.
Otherwise, if there är autoindent tecken på aktuell rad före markör, it är implementation-defined whether <kontroll>-U kommando är en fel eller if markör moves till första kolumn position på rad.


== FELHANTERING ==
Otherwise, if markör är i kolumn position 1 och there är föregående rader som have varit inmatning, it är implementation-defined whether <kontroll>-U kommando är en fel eller if it är equivalent till entering <kontroll>-U efter sista inmatning tecken på föregående inmatning rad.


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.
Otherwise, it ska be an fel.


Om felet uppstod under expansion av en mappning ska tecken från expansionen normalt kastas bort.
alla av glyphs på kolumner mellan starting markör position och (inclusively) ending markör position ska become erase- kolumner som described i inmatning läge kommandon i vi .


Om felet uppstod under körning av en buffert ska inga ytterligare kommandon från bufferten köras.
aktuell kill tecken (see stty ) ska cause en equivalent action till <kontroll>-U kommando, unless previously inserted tecken was en <backslash>, i which skiftläge it ska vara som if literal aktuell kill tecken had varit inserted instead av <backslash>.


== EXEMPEL ==
aktuell rad : Unchanged, unless previously inmatning rader är erased, i which skiftläge it ska vara set till rad -1.


Öppna en fil:
aktuell kolumn : Set till första kolumn som displays någon portion av sista tecken backed up over.


<pre>
<pre>
vi fil.txt
<kontroll>-V
</pre>
</pre>


Öppna flera filer:
Synopsis :


<pre>
<pre>
vi fil1.txt fil2.txt
<kontroll>-V <kontroll>-Q
</pre>
</pre>


Starta och kör ett kommando direkt:
Allow entry av någon subsequent tecken, other än <kontroll>-J eller <nyrad>, som en literal tecken, removing någon special meaning som it kan have till redigerare i text inmatning läge. If en <kontroll>-V eller <kontroll>-Q är entered före en <kontroll>-J eller <nyrad>, <kontroll>-V eller <kontroll>-Q tecken ska vara discarded, och <kontroll>-J eller <nyrad> ska behave som described i <nyrad> kommando tecken during inmatning läge.
 
For purposes of the visning endast, the redigerare ska behave as if a
 
'^' tecken was entered, och markör ska vara positioned som if overwriting '^' tecken. när en subsequent tecken är entered, redigerare ska behave som if som tecken was entered instead av original <kontroll>-V eller <kontroll>-Q tecken.
 
aktuell rad : Unchanged.
 
aktuell kolumn : Unchanged.


<pre>
<pre>
vi -c 'set number' fil.txt
<kontroll>-W
</pre>
</pre>


Öppna filen och hoppa till en tagg:
Synopsis :


<pre>
<pre>
vi -t main
<kontroll>-W
</pre>
</pre>


Återställ en fil efter krasch, om implementationen stöder det:
If there är tecken other än autoindent tecken som have varit inmatning på aktuell rad före markör, markör ska flytta back over sista ord föregående markör (including någon <blank> tecken mellan slut av sista ord och aktuell markör); markör ska not flytta till före första tecken efter slut av någon autoindent tecken.
 
Otherwise, if there är autoindent tecken på aktuell rad före markör, it är implementation-defined whether <kontroll>-W kommando är en fel eller if markör moves till första kolumn position på rad.
 
Otherwise, if markör är i kolumn position 1 och there är föregående rader som have varit inmatning, it är implementation-defined whether <kontroll>-W kommando är en fel eller if it är equivalent till entering <kontroll>-W efter sista inmatning tecken på föregående inmatning rad.
 
Otherwise, it ska be an fel.
 
alla av glyphs på kolumner mellan starting markör position och (inclusively) ending markör position ska become erase- kolumner som described i inmatning läge kommandon i vi .
 
aktuell rad : Unchanged, unless previously inmatning rader är erased, i which skiftläge it ska vara set till rad -1.
 
aktuell kolumn : Set till första kolumn som displays någon portion av sista tecken backed up over.


<pre>
<pre>
vi -r fil.txt
<ESC>
</pre>
</pre>


Öppna skrivskyddat:
Synopsis :


<pre>
<pre>
vi -R fil.txt
<ESC>
</pre>
</pre>


== PRAKTISK SNABBREFERENS ==
If inmatning was part of a rad-oriented kommando:


{| class="wikitable"
1. If interrupt was entered, text inmatning läge ska vara terminated och redigerare ska return till kommando läge. terminal ska vara alerted.
! Kommando !! Betydelse
 
|-
2. If <ESC> was entered, text inmatning läge ska vara terminated och kommando ska continue execution med inmatning provided.
| '''i''' || Infoga före markören
 
|-
Otherwise, terminate text inmatning läge och return till kommando läge.
| '''a''' || Infoga efter markören
 
|-
någon autoindent tecken entered på newly created rader that have no other non-<nyrad> tecken ska vara borttagen.
| '''Esc''' || Återgå till kommandoläge
 
|-
någon leading autoindent and <blank> tecken på newly created rader ska vara rewritten till vara the minimum nummer av <blank> tecken possible.
| '''h j k l''' || Flytta vänster, ned, upp, höger
 
|-
skärm ska vara redisplayed som necessary till matcha contents av edit buffert.
| '''0''' || Gå till radens början
 
|-
aktuell rad : Unchanged.
| '''$''' || Gå till radens slut
 
|-
aktuell kolumn :
| '''w''' || Nästa ord
 
|-
1. If there är text inmatning tecken på aktuell rad, kolumn ska vara set till sista kolumn där någon portion av sista text inmatning tecken är displayed.
| '''b''' || Föregående ord
 
|-
2. Otherwise, if a tecken is displayed in the aktuell kolumn, unchanged.
| '''x''' || Ta bort tecken
 
|-
3. Otherwise, set to kolumn position 1.
| '''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 ==
== AVSLUTNINGSSTATUS ==


POSIX-manualens avslutningsstatus för '''vi''' hänvisar till beteendet i '''ex''' och implementationens hantering av fel.
Följande avslutningsvärden ska returneras:


I praktiken returneras normalt 0 vid lyckad körning och ett värde större än 0 vid fel.
'''0'''
: Slutfördes utan fel.
 
'''>0'''
: Ett fel inträffade.


== KONSEKVENSER AV FEL ==
== KONSEKVENSER AV FEL ==


Se motsvarande avsnitt för [[ex(1p)]] och POSIX-beskrivningen.
när någon fel är encountered och standard inmatning är not en terminal device fil, vi ska not skriv fil eller return till kommando eller text inmatning läge, och ska terminate med en non-zero exit status.
 
Otherwise, when an unrecoverable fel is encountered it ska be equivalent to a SIGHUP asynchronous event.
 
Otherwise, when an fel is encountered, the redigerare ska behave as angiven in kommando Descriptions in vi .
 
följande avsnitt är informative.


== ANVÄNDNING I PROGRAM ==
== ANVÄNDNING I PROGRAM ==


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


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


* [[sed(1)]]
Inget.
* [[awk(1)]]
* [[ed(1p)]]
* [[ex(1p)]]


== BAKGRUND OCH MOTIVERING ==
== 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.
See RATIONALE för [[ex(1p)]] för more information på vi . Stora delar av specifikationen för verktyget vi hänvisar till ex för att undvika oavsiktliga skillnader. medan ex och vi have historically varit implemented som en single verktyg, denna är not required av POSIX.1-2008.
 
It är recognized som portions av vi would vara difficult, if not impossible, till implement satisfactorily på en block-läge terminal, eller en terminal utan någon form av markör addressing, thus it är not en mandatory requirement som such features bör work på alla terminals. It är intention, however, som en vi implementation bör provide full set av capabilities på alla terminals capable av supporting them.
 
Historically, vi exited immediately if standard inmatning was not en terminal. POSIX.1-2008 permits, but does not require, denna behavior. en slut-av-fil condition är not equivalent till en slut-av- fil tecken. en common slut-av-fil tecken, <kontroll>-D, är historically en vi kommando.
 
The text in the STDOUT avsnitt reflects the usage of the verb
 
visning i denna avsnitt; some implementationer av vi use standard utmatning till skriv till terminal, but POSIX.1-2008 does not require som till vara skiftläge.
 
Historically, implementationer reverted till open läge if terminal was incapable av supporting full visuellt läge. POSIX.1-2008 requires denna behavior. Historically, open läge av vi behaved roughly equivalently till visuellt läge, med exception som endast en single rad från edit buffert (one ``buffert rad'') was kept aktuell at någon time. denna rad was normally displayed på nästa-till-sista rad av en terminal med markör addressing (och sista rad performed its normal visuellt functions för rad-oriented kommandon och meddelanden). i addition, some few kommandon behaved differently i open läge än i visuellt läge. POSIX.1-2008 requires conformance till historical practice.
 
Historically, ex och vi implementationer have expected text till proceed i usual European/Latin order av left till right, top till bottom. There är no requirement i POSIX.1-2008 som denna vara skiftläge. specification was deliberately skriven using ord like ``före'', ``efter'', ``första'', och ``sista'' i order till permit implementationer till support natural text order av language.
 
Historically, rader past slut av edit buffert were marked med single <tilde> ( '~' ) tecken; som är, if one-based visning was 20 rader i length, och sista rad av fil was på rad one, then rader 2-20 would contain endast en single '~'
 
tecken.
 
Historically, vi redigerare attempted till visning endast complete rader at bottom av skärm (it did visning partial rader at top av skärm). If en rad was too long till fit i its entirety at bottom av skärm, skärm rader där rad would have varit displayed were displayed som single '@'
 
tecken, instead av displaying part av rad. POSIX.1-2008 permits, but does not require, denna behavior. implementationer är encouraged till attempt always till visning en complete rad at bottom av skärm när doing scrolling eller skärm positioning av buffert rader.
 
Historically, rader marked med '@' were also used till minimize utmatning till dumb terminals over slow rader; som är, changes local till markör were updated, but changes till rader skärm som were not close till markör were simply marked med en '@'
 
sign instead av vara updated till matcha aktuell text. POSIX.1-2008 permits, but does not require denna feature because it är used ever less frequently som terminals become smarter och connections är faster.
 
'''Initiering i ex och vi'''
 
Historically, vi always had a rad in the edit buffert, even if the edit buffert was ``empty''. For example:
 
1. ex kommando = executed från visuellt läge wrote ``1'' när buffert was empty.
 
2. Writes från visuellt läge av en empty edit buffert wrote filer av en single tecken (en <nyrad>), medan writes från ex läge av en empty edit buffert wrote empty filer.
 
3. Put och läs kommandon into en empty edit buffert left en empty rad at top av edit buffert.
 
For consistency, POSIX.1-2008 does not permit någon av these behaviors.
 
Historically, vi did not always return terminal till its original lägen; för example, ICRNL was modified if it was not originally set. POSIX.1-2008 does not permit denna behavior.
 
'''Kommandobeskrivningar i vi'''
 
rörelse kommandon är among most complicated aspects av vi till describe. med some exceptions, text område och buffert type effect av en rörelse kommando på en vi kommando är described på en skiftläge-av-skiftläge basis. descriptions av text regions i POSIX.1-2008 är not intended till imply direction; som är, en inclusive område från rad n till rad n +5 är identical till en område från rad n +5 till rad n . denna är av more än academic interest— movements till märken can vara i either direction, och, if
 
wrapscan option är set, so can movements till sökning points. Historically, rader är always stored into buffertar i text order; som är, från start av edit buffert till slut. POSIX.1-2008 requires conformance till historical practice.
 
Historically, kommando counts were applied till någon kopplad rörelse, och were multiplicative till någon supplied rörelse count. för example, 2cw är samma som c2w , och 2c3w är samma som c6w . POSIX.1-2008 requires denna behavior. Historically, vi kommandon som used bigwords, ord, stycken, och meningar som objects treated groups av empty rader, eller rader som contained endast <blank> tecken, inconsistently. Some kommandon treated them som en single entity, medan others treated each rad separately. för example, w , W , och B kommandon treated groups av empty rader som individual ord; som är, kommando would flytta markör till each new empty rad. e och E kommandon treated groups av empty rader som en single ord; som är, första use would flytta past group av rader. b kommando would just beep at user, eller if done från start av rad som en rörelse kommando, fail i unexpected ways. If rader contained endast (eller ended med) <blank> tecken, w och W kommandon would just beep at user, E och e kommandon would treat group som en single ord, och B och b kommandon would treat rader som individual ord. för consistency och simplicity av specification, POSIX.1-2008 requires som alla vi kommandon treat groups av empty eller blank rader som en single entity, och som movement through rader ending med <blank> tecken vara consistent med other movements.
 
Historically, vi documentation indicated som någon nummer av double-quotes were skipped efter punctuation märken at mening boundaries; however, implementationer endast skipped single-quotes. POSIX.1-2008 requires both till vara skipped.
 
Historically, första och sista tecken i edit buffert were ord boundaries. denna historical practice är required av POSIX.1-2008.
 
Historically, vi attempted till update minimum nummer av kolumner på skärm possible, which could lead till misleading information vara displayed. POSIX.1-2008 makes no requirements other än som aktuell tecken vara entered är displayed correctly, leaving alla other decisions i denna area up till implementation.
 
Historically, rader were arbitrarily folded mellan kolumner av någon tecken som required multiple kolumn positions på skärm, med exception av tabs, which terminated at right-hand margin. POSIX.1-2008 permits former och requires latter. implementationer som do not arbitrarily break rader mellan kolumner av tecken som occupy multiple kolumn positions bör not permit markör till rest på en kolumn som does not contain någon part av en tecken.
 
historical vi had en problem i som alla movements were av buffert rader, not av visning eller skärm rader. denna är often right thing till do; för example, single rad movements, such som j
 
eller k , bör work på buffert rader. kommandon like dj , eller j. , där
 
. är en ändra kommando, endast make sense för buffert rader. It är not, however, right thing till do för skärm rörelse eller scrolling kommandon like <kontroll>-D, <kontroll>-F, och H . If fönster är fairly small, using buffert rader i dessa cases can result i completely random rörelse; för example, 1 <kontroll> -D can result i en completely ändrad skärm, utan någon overlap. denna är clearly not what user wanted. problem är even worse i skiftläge av H , L , och M kommandon—som they position markör at första non-<blank> av rad, they kan alla refer till samma location i large rader, och kommer att result i no movement at alla.
 
i addition, if rad är larger än skärm, using buffert rader can make it impossible till visning parts av rad—there är not någon kommandon som do not visning början av rad i historical vi , och if both början och slut av rad cannot vara på skärm at samma time, user suffers. Finally, page och half-page scrolling kommandon historically moved till första non-<blank> i new rad. If rad är approximately samma size som skärm, denna är inadequate because markör före och efter en <kontroll>-D kommando kommer att refer till samma location på skärm.
 
implementationer av ex och vi exist som do not have dessa problems because relevant kommandon (<kontroll>-B, <kontroll>-D, <kontroll>-F, <kontroll>-U, <kontroll>-Y, <kontroll>-E, H , L , och M)
 
operate på visning (skärm) rader, not (edit) buffert rader.
 
POSIX.1-2008 does not permit denna behavior av standard because standard developers believed som users would find it too confusing. However, historical practice has varit relaxed. för example, ex och vi historically attempted, albeit sometimes unsuccessfully, till never put part av en rad på sista rader av en skärm; för example, if en rad would not fit i its entirety, no part av rad was displayed, och skärm rader corresponding till rad contained single '@' tecken. denna behavior är permitted, but not required av POSIX.1-2008, so som it är possible för implementationer till support long rader i small screens more reasonably utan changing kommandon till vara oriented till visning (instead av oriented till buffert). POSIX.1-2008 also permits implementationer till refuse till edit någon edit buffert containing en rad som kommer att not fit på skärm i its entirety.
 
visning area (för example, värde av fönster edit option) has historically varit ``grown'', eller expanded, till visning new text när local movements är done i displays där nummer av rader displayed är less än maximum possible. Expansion has historically varit första choice, när target rad är less än maximum possible expansion värde away. Scrolling has historically varit nästa choice, done när target rad är less än half en visning away, och otherwise, skärm was redrawn. There were exceptions, however, i som ex
 
kommandon generally always caused skärm till vara redrawn. POSIX.1-2008 does not specify en standard behavior because there kan vara external issues, such som connection speed, nummer av tecken necessary till redraw som opposed till scroll, eller terminal capabilities som implementationer kommer att have till accommodate.
 
aktuell rad i POSIX.1-2008 maps one-till-one till en buffert rad i fil. aktuell kolumn does not. There är two annan kolumn värden som är described av POSIX.1-2008. första är aktuell kolumn värde som set av many av vi kommandon. denna värde är ihågkommen för lifetime av redigerare. second kolumn värde är actual position på skärm där markör rests. two är not always samma. för example, när markör är backed av en multi-kolumn tecken, actual markör position på skärm has historically varit sista kolumn av tecken i kommando läge, och första kolumn av tecken i inmatning läge.
 
kommandon som set aktuell rad, but som do not set aktuell markör värde (för example, j och k ) attempt till get som close som possible till ihågkommen kolumn position, so som markör tends till restrict itself till en vertical kolumn som user moves around i edit buffert. POSIX.1-2008 requires conformance till historical practice, requiring som visning location av markör på visning rad vara adjusted från aktuell kolumn värde som necessary till support denna historical behavior.
 
Historically, endast en single rad (och för some terminals, en single rad minus 1 kolumn) av tecken could vara entered av user för rad-oriented kommandon; som är, : , ! , / , eller ? . POSIX.1-2008 permits, but does not require, denna limitation.
 
Historically, ``soft'' fel i vi caused terminal till vara alerted, but no fel meddelande was displayed. som en general rule, no fel meddelande was displayed för fel i kommando execution i
 
vi , när fel resulted från user attempting en ogiltig eller impossible action, eller när en searched-för object was not found. Examples av soft fel included h at left margin, <kontroll>-B eller [[ at början av fil, 2G at slut av fil, och so på. i addition, fel such som % , ]] , } , ) , N , n , f , F , t , och
 
T failing till find searched-för object were soft som well. Less consistently, / och ? displayed en fel meddelande if mönster was not found, / , ? , N , och n displayed en fel meddelande if no föregående regular expression had varit angiven, och ; did not visning en fel meddelande if no föregående f , F , t , eller T kommando had occurred. Also, behavior i denna area might reasonably vara based på en runtime evaluation av speed av en network connection. Finally, some implementationer have provided fel meddelanden för soft fel i order till assist naive users, based på värde av en verbose edit option. POSIX.1-2008 does not list specific fel för which en fel meddelande ska vara displayed. implementationer bör conform till historical practice i absence av någon strong reason till diverge.
 
Page Backwards
 
<kontroll>-B och <kontroll>-F kommandon historically considered it en fel till attempt till page past början eller slut av fil, whereas <kontroll>-D och <kontroll>-U kommandon simply moved till början eller slut av fil. för consistency, POSIX.1-2008 requires latter behavior för alla four kommandon. alla four kommandon still consider it en fel if aktuell rad är at början (<kontroll>-B, <kontroll>-U) eller slut (<kontroll>-F, <kontroll>-D) av fil. Historically, <kontroll>-B och <kontroll>-F kommandon skip two rader i order till include overlapping rader när en single kommando är entered. denna makes less sense i presence av en count , som there kommer att vara, av definition, no overlapping rader. actual calculation used av historical implementationer av vi redigerare för <kontroll>-B was:
 
((aktuell första rad) - count x (fönster edit option)) +2
 
<pre>
and for <kontroll>-F was:
</pre>
 
((aktuell första rad) + count x (fönster edit option)) -2
 
denna calculation does not work well när intermixing kommandon med och utan counts; för example, 3 <kontroll>-F är not equivalent till entering <kontroll>-F kommando three times, och är not reversible av entering <kontroll>-B kommando three times. för consistency med other vi kommandon som take counts, POSIX.1-2008 requires en annan calculation.
 
Scroll Forward
 
4BSD och System V implementationer av vi differed på initial värde used av scroll kommando. 4BSD used:
 
((fönster edit option) +1) /2
 
medan System V used värde av scroll edit option. System V version är angiven av POSIX.1-2008 because standard developers believed som it was more intuitive och permitted user en method av setting scroll värde initially utan also setting nummer av rader som är displayed.
 
Scroll Forward by rad
 
Historically, <kontroll>-E och <kontroll>-Y kommandon considered it en fel if sista och första rader, respectively, were already på skärm. POSIX.1-2008 requires conformance till historical practice. Historically, <kontroll>-E och <kontroll>-Y kommandon had no effect i open läge. för simplicity och consistency av specification, POSIX.1-2008 requires som they behave som usual, albeit med en single rad skärm.
 
Clear and Redisplay
 
historical <kontroll>-L kommando refreshed skärm exactly som it was supposed till vara currently displayed, replacing någon '@'
 
tecken för rader som had varit borttagen but not updated på skärm med refreshed '@' tecken. intent av <kontroll>-L kommando är till refresh när skärm has varit accidentally overwritten; för example, av en skriv kommando från another user, eller modem noise.
 
Redraw skärm
 
historical <kontroll>-R kommando redisplayed endast när necessary till update rader som had varit borttagen but not updated på skärm och som were flagged med '@' tecken. There är no requirement som skärm vara i någon way refreshed if no rader av denna form är currently displayed. POSIX.1-2008 permits implementationer till extend denna kommando till refresh rader på skärm flagged med '@' tecken because they är too long till vara displayed i aktuell framework; however, aktuell rad och kolumn need not vara modified.
 
sökning för tagstring
 
Historically, första non-<blank> at eller efter markör was första tecken, och alla subsequent tecken som were ord tecken, up till slut av rad, were included. för example, med markör på leading <mellanslag> eller på '#' tecken i text "#bar@" , tag was "#bar" . på tecken 'b' it was
 
"bar" , and on the 'a' it was "ar" . POSIX.1-2008 requires this behavior.
 
ersätt text med Results från skal kommando
 
Historically, < , > , och ! kommandon considered most markör rörelser other än rad-oriented rörelser en fel; för example, kommando >/foo<CR> succeeded, medan kommando >l failed, even though text område described av two kommandon might vara identical. för consistency, alla three kommandon endast consider entire rader och not partial rader, och område är defined som någon rad som contains en tecken som was angiven av rörelse.
 
flytta to matchande tecken
 
Other matchande tecken have varit left implementation-defined i order till allow extensions such som matchande '<' och '>' för searching HTML, eller #ifdef , #else , och #endif för searching C source.
 
upprepa substitution
 
POSIX.1-2008 requires som någon c och g flags angiven till föregående substitute kommando vara ignorerad; however, r flag kan still apply, if supported av implementation.
 
Return till föregående (Context eller avsnitt)
 
[[ , ]] , ( , ) , { , och } kommandon är alla påverkad av ``avsnitt boundaries'', but i some historical implementationer not alla av kommandon recognize samma avsnitt boundaries. denna är en bug, not en feature, och en unique avsnitt-boundary algorithm was not described för each kommando. One special skiftläge som är preserved är som mening kommando moves till slut av sista rad av edit buffert medan other kommandon go till början, i order till preserve traditional tecken cut semantics av mening kommando. Historically, vi avsnitt boundaries at början och slut av edit buffert were första non-<blank> på första och sista rader av edit buffert if one exists; otherwise, sista tecken av första och sista rader av edit buffert if one exists. till increase consistency med other avsnitt locations, denna has varit simplified av POSIX.1-2008 till första tecken av första och sista rader av edit buffert, eller första och sista rader av edit buffert if they är empty.
 
mening boundaries were problematic i historical vi . They were not endast boundaries som defined för avsnitt och stycke kommandon, but they were första non-<blank> som occurred efter de boundaries, som well. Historically, vi
 
avsnitt kommandon were documented som taking en valfri fönster size som en count föregående kommando. denna was not implemented i historical versions, so POSIX.1-2008 requires som count
 
upprepa the kommando, for consistency with other vi kommandon.
 
upprepa
 
Historically, mapped kommandon other än text inmatning kommandon could not vara repeated using period kommando. POSIX.1-2008 requires conformance till historical practice.
 
restrictions på interpretation av special tecken (för example, <kontroll>-H) i repetition av text inmatning läge kommandon är intended till matcha historical practice. för example, given inmatning sequence:
 
<pre>
iab<kontroll>-H<kontroll>-H<kontroll>-Hdef<escape>
</pre>
 
user bör vara informed av en fel när sequence är första entered, but not during en kommando repetition. tecken <kontroll>-T är specifically exempted från denna restriction. Historical implementationer av vi ignorerad <kontroll>-T tecken som were inmatning i original kommando during kommando repetition. POSIX.1-2008 prohibits denna behavior.
 
Find Regular Expression
 
Historically, kommandon did not affect rad searched till eller från if rörelse kommando was en sökning ( / , ? , N , n ) och final position was start/slut av rad. There were some special cases och vi was not consistent. POSIX.1-2008 does not permit denna behavior, för consistency. Historical implementationer permitted but were unable till handle searches som rörelse kommandon som wrapped (som är, due till edit option wrapscan ) till original location. POSIX.1-2008 requires som denna behavior vara treated som en fel.
 
Historically, syntax "/RE/0" was used till force kommando till cut text i rad läge. POSIX.1-2008 requires conformance till historical practice.
 
Historically, i open läge, en z angiven till en sökning kommando redisplayed aktuell rad instead av displaying aktuell skärm med aktuell rad highlighted. för consistency och simplicity av specification, POSIX.1-2008 does not permit denna behavior.
 
Historically, trailing z kommandon were permitted och ignorerad if entered som part av en sökning used som en rörelse kommando. för consistency och simplicity av specification, POSIX.1-2008 does not permit denna behavior.
 
Execute an ex kommando
 
Historically, vi implementationer restricted kommandon som could vara entered på colon kommando rad (för example, lägg till
 
och ändra ), och some other kommandon were known till cause them till fail catastrophically. för consistency, POSIX.1-2008 does not permit dessa restrictions. när executing en ex kommando av entering : , it är not possible till enter en <nyrad> som part av kommando because it är considered slut av kommando. en annan approach är till enter ex kommando läge av using vi
 
Q
 
kommando (och later resuming visuellt läge med ex
 
vi kommando). i ex kommando läge, single-rad limitation does not exist. So, för example, följande är giltig:
 
Q s/break here/break\ here/ vi
 
POSIX.1-2008 requires som, if ex kommando overwrites någon part av skärm som would vara erased av en refresh, vi pauses för en tecken från user. Historically, denna tecken could vara någon tecken; för example, en tecken inmatning av user före meddelande appeared, eller even en mapped tecken. denna är probably en bug, but implementationer som have tried till vara more rigorous av requiring som user enter en specific tecken, eller som user enter en tecken efter meddelande was displayed, have varit forced av user indignation back into historical behavior. POSIX.1-2008 requires conformance till historical practice.
 
Shift Left (Right)
 
Refer till Rationale för ! och / kommandon. Historically, < och > kommandon sometimes moved markör till första non-<blank> (för example if kommando was repeated eller med _ som rörelse kommando), och sometimes left it unchanged. POSIX.1-2008 does not permit denna inconsistency, requiring instead som markör always flytta till första non-<blank>. Historically, <
 
och > kommandon did not support buffert argument, although some implementationer allow specification av en valfri buffert. denna behavior är neither required nor disallowed av POSIX.1-2008.
 
Execute
 
Historically, buffertar could execute other buffertar, och loops, infinite och otherwise, were possible. POSIX.1-2008 requires conformance till historical practice. * buffert syntax av ex är not required i vi , because it är not historical practice och has varit used i some vi implementationer till support additional scripting languages.
 
Reverse skiftläge
 
Historically, ~ kommando ignorerad någon kopplad count , och acted endast på tecken i aktuell rad. för consistency med other vi kommandon, POSIX.1-2008 requires som en kopplad
 
count act på nästa count tecken, och som kommando flytta till subsequent rader if warranted av count , till make it possible till modify large pieces av text i en reasonably efficient manner. There exist vi implementationer som optionally require en kopplad rörelse kommando för ~ kommando. implementationer supporting denna functionality är encouraged till base it på


Många moderna implementationer, till exempel Vim, nvi och BusyBox vi, erbjuder fler funktioner än POSIX kräver.
tildedop edit option och handle text regions och markör positioning identically till yank kommando.


== FRAMTIDA RIKTNINGAR ==
lägg till
 
Historically, count s angiven till en , en , I , och i kommandon repeated inmatning av första rad count times, och did not upprepa subsequent rader av inmatning text. POSIX.1-2008 requires som entire text inmatning vara repeated count times.
 
flytta Backward till föregående ord
 
Historically, vi became confused if ord kommandon were used som rörelse kommandon i empty filer. POSIX.1-2008 requires som denna vara en fel. Historical implementationer av vi had en large nummer av bugs i ord movement kommandon, och they varied greatly i behavior i presence av empty rader, ``ord'' made up av en single tecken, och rader containing endast <blank> tecken. för consistency och simplicity av specification, POSIX.1-2008 does not permit denna behavior.
 
ändra till slut-av-rad
 
Some historical implementationer av C kommando did not behave som described av POSIX.1-2008 när $ key was remapped because they were implemented av pushing $ key onto inmatning queue och reprocessing it. POSIX.1-2008 does not permit denna behavior. Historically, C , S , och s kommandon did not kopiera replaced text into numeric buffertar. för consistency och simplicity av specification, POSIX.1-2008 requires som they behave like their respective c kommandon i alla respects.
 
ta bort
 
Historically, rader i open läge som were borttagen were scrolled up, och en @ glyph skriven over början av rad. i skiftläge av terminals som är incapable av necessary markör rörelser, redigerare erased borttagen rad från skärm. POSIX.1-2008 requires conformance till historical practice; som är, if terminal cannot visning '@' tecken, rad cannot remain på skärm.
 
ta bort to slut-of-rad
 
Some historical implementationer av D kommando did not behave som described av POSIX.1-2008 när $ key was remapped because they were implemented av pushing $ key onto inmatning queue och reprocessing it. POSIX.1-2008 does not permit denna behavior.
 
Join
 
An historical oddity of vi is that the kommandon J , 1J , and 2J are alla equivalent. POSIX.1-2008 requires conformance to historical practice. The vi
 
J kommando is angiven in terms of the ex
 
join
 
kommando med en ex kommando count värde. adress correction för en count som är past slut av edit buffert är necessary för historical compatibility för both ex och vi .
 
märke Position
 
Historical practice är som endast lowercase letters, plus backquote och single-quote, could vara used till märke en markör position. POSIX.1-2008 requires conformance till historical practice, but encourages implementationer till support other tecken som märken som well.
 
upprepa Regular Expression Find (Forward and Reverse)
 
Historically, N och n kommandon could not vara used som rörelse components för c kommando. med exception av cN
 
kommando, which worked if sökning crossed en rad boundary, text område would vara discarded, och user would not vara i text inmatning läge. för consistency och simplicity av specification, POSIX.1-2008 does not permit denna behavior.
 
infoga Empty rad (Below and Above)
 
Historically, counts to the O and o kommandon were used as the nummer of physical rader to open, if the terminal was dumb and the
 
slowopen option was not set. denna was intended till minimize traffic over slow connections och repainting för dumb terminals. POSIX.1-2008 does not permit denna behavior, requiring som en count
 
till open kommando behave som för other text inmatning kommandon. denna ändra till historical practice was made för consistency, och because en superset av functionality är provided av
 
slowopen edit option.
 
Put från buffert (följande och före)
 
Historically, count s till p och P kommandon were ignorerad if buffert was en rad läge buffert, but were (mostly) implemented som described i POSIX.1-2008 if buffert was en tecken läge buffert. Because implementationer exist som do not have denna limitation, och because pasting rader multiple times är generally useful, POSIX.1-2008 requires som count vara supported för alla p
 
and P kommandon.
 
Historical implementationer av vi were widely known till have major problems i p och P kommandon, particularly när unusual regions av text were copied into edit buffert. standard developers viewed dessa som bugs, och they är not permitted för consistency och simplicity av specification.
 
Historically, a P or p kommando (or an ex
 
put kommando executed från open eller visuellt läge) executed i en empty fil, left en empty rad som första rad av fil. för consistency och simplicity av specification, POSIX.1-2008 does not permit denna behavior.
 
ersätt tecken
 
Historically, the r kommando did not correctly handle the erase and
 
ord erase tecken som argument, nor did it handle en kopplad count greater än 1 med en <carriage-return> argument, för which it replaced count tecken med en single <nyrad>. POSIX.1-2008 does not permit dessa inconsistencies.
 
Historically, r kommando permitted <kontroll>-V escaping av entered tecken, such som <ESC> och <carriage-return>; however, it required two leading <kontroll>-V tecken instead av one. POSIX.1-2008 requires som denna vara ändrad för consistency med other text inmatning kommandon av vi .
 
Historically, it är en fel till enter r kommando if there är less än count tecken at eller efter markör i rad. medan en reasonable och unambiguous extension would vara till permit r kommando på empty rader, it would require som too large en
 
count vara adjusted till matcha nummer av tecken at eller efter markör för consistency, which är sufficiently annan från historical practice till vara avoided. POSIX.1-2008 requires conformance till historical practice.
 
ersätt tecken
 
Historically, if there were autoindent tecken i rad på which R kommando was run, och autoindent was set, första <nyrad> would vara properly indented och no tecken would vara replaced av <nyrad>. Each additional <nyrad> would ersätt n tecken, där n was nummer av tecken som were needed till indent rest av rad till proper indentation level. denna behavior är en bug och är not permitted av POSIX.1-2008.
 
Undo
 
Historical practice för markör positioning efter undoing kommandon was mixed. i most cases, när undoing kommandon som påverkad en single rad, markör was moved till start av added eller ändrad text, eller immediately efter borttagen text. However, if user had moved från rad vara ändrad, kolumn was either set till första non-<blank>, returned till origin av kommando, eller remained unchanged. när undoing kommandon som påverkad multiple rader eller entire rader, markör was moved till första tecken i första rad restored. som en example av how inconsistent denna was, en sökning, followed av en o text inmatning kommando, followed av en
 
undo would return markör till location där o kommando was entered, but en cw kommando followed av en o kommando followed av en undo would return markör till första non-<blank> av rad. POSIX.1-2008 requires most useful av dessa behaviors, och discards least useful, i interest av consistency och simplicity av specification.
 
Yank
 
Historically, yank kommando did not flytta till slut av rörelse if rörelse was i forward direction. It moved till slut av rörelse if rörelse was i backward direction, except för _ kommando, eller för G och ' kommandon när slut av rörelse was på aktuell rad. denna was further complicated av fact som för en nummer av rörelse kommandon,


Inga särskilda framtida riktningar anges i den här sammanfattade MediaWiki-versionen.
yank kommando moved markör but did not update skärm; för example, en subsequent kommando would flytta markör från slut av rörelse, even though markör på skärm had not reflected markör movement för yank kommando. POSIX.1-2008 requires som alla yank kommandon kopplad med backward rörelser flytta markör till slut av rörelse för consistency, och specifically, till make ' kommandon som rörelser consistent med sökning patterns som rörelser.


== SE ÄVEN ==
Yank aktuell rad


* [[ex(1p)]]
Some historical implementationer av Y kommando did not behave som described av POSIX.1-2008 när '_' key was remapped because they were implemented av pushing '_' key onto inmatning queue och reprocessing it. POSIX.1-2008 does not permit denna behavior.
* [[ed(1p)]]
* [[sed(1)]]
* [[awk(1)]]
* [[stty(1)]]
* [[ctags(1)]]


POSIX.1-2017, Base Definitions:
Redraw fönster


* Avsnitt 12.2, ''Utility Syntax Guidelines''
Historically, z kommando always redrew skärm. denna är permitted but not required av POSIX.1-2008, because av frequent use av z kommando i macros such som map n nz. för skärm positioning, instead av its use till ändra skärm size. standard developers believed som expanding eller scrolling skärm offered en better interface för users. ability till redraw skärm är preserved if valfri new fönster size är angiven, och i <kontroll>-L och <kontroll>-R kommandon.


== COPYRIGHT ==
semantics av z^ är confusing at best. Historical practice är som skärm före skärm som ended med angiven rad är displayed. POSIX.1-2008 requires conformance till historical practice.


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.
Historically, z kommando would not visning en partial rad at top eller bottom av skärm. If partial rad would normally have varit displayed at bottom av skärm, kommando worked, but partial rad was replaced med '@'


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å:
tecken. If partial rad would normally have varit displayed at top av skärm, kommando would fail. för consistency och simplicity av specification, POSIX.1-2008 does not permit denna behavior.


http://www.opengroup.org/unix/online.html
Historically, z kommando med en rad specification av 1 ignorerad kommando. för consistency och simplicity av specification, POSIX.1-2008 does not permit denna behavior.


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å:
Historically, z kommando did not set markör kolumn till första non-<blank> för tecken if första skärm was till vara displayed, och was already displayed. för consistency och simplicity av specification, POSIX.1-2008 does not permit denna behavior.


https://www.kernel.org/doc/man-pages/reporting_bugs.html
'''Kommandon för inmatningsläge i vi'''


== KORT SAMMANFATTNING ==
Historical implementationer av vi did not permit user till erase more än en single rad av inmatning, eller till use normal erase tecken such som rad erase , worderase , och erase till erase


'''vi''' är en klassisk skärmorienterad textredigerare.
autoindent tecken. som there exist implementationer av vi som do not have dessa limitations, both behaviors är permitted, but endast historical practice är required. i skiftläge av dessa extensions, vi är required till pause at autoindent och föregående rad boundaries.


Starta:
Historical implementationer av vi updated endast portion av skärm där aktuell markör tecken was displayed. för example, consider vi inmatning keystrokes:


<pre>
<pre>
vi fil.txt
iabcd<escape>0C<tabb>
</pre>
</pre>


Skriv text:
Historically, <tabb> would overwrite tecken "abcd" när it was displayed. Other implementationer ersätt endast 'en'
 
tecken med <tabb>, och then push rest av tecken ahead av markör. Both implementationer have problems. historical implementation är probably visually nicer för above example; however, för keystrokes:


<pre>
<pre>
i
iabcd<ESC>0R<tabb><ESC>
text...
Esc
</pre>
</pre>


Spara:
the historical implementation results in the string "bcd"
 
disappearing och then magically reappearing när <ESC> tecken är entered. POSIX.1-2008 requires former behavior när overwriting erase-kolumner—som är, overwriting tecken som är no longer logically part av edit buffert—och latter behavior otherwise.
 
Historical implementationer av vi discarded <kontroll>-D och <kontroll>-T tecken när they were entered at places där their kommando functionality was not appropriate. POSIX.1-2008 requires som <kontroll>-T functionality always vara tillgänglig, och som <kontroll>-D vara treated som någon other key när not operating på autoindent tecken.
 
NUL
 
Some historical implementationer av vi limited nummer av tecken entered using NUL inmatning tecken till 256 bytes. POSIX.1-2008 permits denna limitation; however, implementationer är encouraged till remove denna limit.


<pre>
<pre>
:w
<kontroll>-D
</pre>
</pre>


Avsluta:
See also Rationale för inmatning läge kommando <nyrad>. hidden assumptions i <kontroll>-D kommando (och i vi
 
autoindent specification i general) är som <mellanslag> tecken take up en single kolumn på skärm och som <tabb> tecken är comprised av en integral nummer av <mellanslag> tecken.


<pre>
<pre>
:q
<nyrad>
</pre>
</pre>


Spara och avsluta:
implementationer är permitted till rewrite autoindent tecken i rad när <nyrad>, <carriage-return>, <kontroll>-D, och <kontroll>-T är entered, eller när shift kommandon är used, because historical implementationer have both done so och found it necessary till do so. för example, en <kontroll>-D när markör är preceded av en single <tabb>, med tabstop set till 8, och shiftwidth
 
set to 3, kommer att result in the <tabb> being replaced by several <mellanslag> tecken.


<pre>
<pre>
:wq
<kontroll>-T
</pre>
</pre>


Avsluta utan att spara:
See also Rationale för inmatning läge kommando <nyrad>. Historically, <kontroll>-T endast worked if no non-<blank> tecken had yet varit inmatning i aktuell inmatning rad. i addition, tecken inserted av <kontroll>-T were treated som autoindent
 
tecken, och could not vara erased using normal user erase tecken. Because implementationer exist som do not have dessa limitations, och som moving till en kolumn boundary är generally useful, POSIX.1-2008 requires som both limitations vara removed.


<pre>
<pre>
:q!
<kontroll>-V
</pre>
</pre>


De viktigaste lägena är:
Historically, vi used ^V , regardless av värde av literal- nästa tecken av terminal. POSIX.1-2008 requires conformance till historical practice.


* kommandoläge
uses described för <kontroll>-V can also vara accomplished med <kontroll>-Q, which är useful på terminals som use <kontroll>-V för down-arrow function. However, most historical implementationer use <kontroll>-Q för termios START tecken, so redigerare kommer att generally not receive <kontroll>-Q unless stty ixon läge är set till off. (i addition, some historical implementationer av vi
* textinmatningsläge
* ex-läge


De viktigaste tangenterna att komma ihåg är:
explicitly set ixon läge till på, so it was difficult för user till set it till off.) någon av kommando tecken described i POSIX.1-2008 can vara made ineffective av their selection som termios
 
kontroll tecken, using the stty verktyg or other methods described in the System Interfaces volume of POSIX.1-2017.


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


== ANMÄRKNING OM DENNA ÖVERSÄTTNING ==
Historically, SIGINT alerted terminal när used till slut inmatning läge. denna behavior är permitted, but not required, av POSIX.1-2008.
 
== FRAMTIDA RIKTNINGAR ==


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.
Inget.


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.
== SE ÄVEN ==
 
[[ed(1p)]] , [[ex(1p)]] , [[stty(1p)]]
 
The Base Definitions volume of POSIX.1-2017, avsnitt 12.2 , verktyg
 
Syntax Guidelines
 
== COPYRIGHT ==
 
Portions av denna text är reprinted och reproduced i electronic form från IEEE Std 1003.1-2017, standard för Information Technology -- Portable Operating System Interface (POSIX), open Group Base Specifications Issue 7, 2018 Edition, Copyright (C) 2018 av Institute av Electrical och Electronics Engineers, Inc och open Group. i event av någon discrepancy mellan denna version och original IEEE och open Group standard, original IEEE och open Group standard är referee document. original standard can vara obtained online at
 
http://www.opengroup.org/unix/online.html .
 
någon typographical eller formatting fel som appear i denna page är most likely till have varit introduced during conversion av source filer till man page format. till report such fel, see
 
https://www.kernel.org/doc/man-pages/reporting_bugs.html .
 
IEEE/The open Group 2017 VI (1P)
 
== PRAKTISK KOMMANDOÖVERSIKT ==
 
Detta avsnitt är tillagt som hjälp och ersätter inte POSIX-texten ovan.
 
{| class="wikitable"
! 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 och höger
|-
| x || Ta bort tecken
|-
| dd || Ta bort rad
|-
| yy || Kopiera rad
|-
| p || Klistra in efter markören eller raden
|-
| /mönster || Sök framåt
|-
| ?mönster || Sök bakåt
|-
| :w || Spara
|-
| :q || Avsluta
|-
| :q! || Avsluta utan att spara
|-
| :wq || Spara och avsluta
|}

Versionen från 1 juni 2026 kl. 06.00


Detta är en ny komplett MediaWiki-fil för den uppladdade manualsidan vi(1p). Alla POSIX-avsnitt från originalet finns med. Tekniska kommandon, tangentnamn och specialtecken har bevarats.

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

Detta verktyg ska tillhandahållas på system som både stöder optionen User Portability Utilities och definierar symbolen POSIX2_CHAR_TERM. På andra system är det valfritt.

Verktyget vi är en skärmorienterad textredigerare. Endast redigerarens open- och visual-lägen beskrivs i POSIX.1-2008. Se även radredigeraren ex(1p) för ytterligare redigeringsfunktioner som används i vi. Användaren kan växla fram och tillbaka mellan vi och ex och köra ex-kommandon inifrån vi.

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

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

OPTIONER

Verktyget vi ska följa POSIX.1-2017, Base Definitions, avsnitt 12.2, Utility Syntax Guidelines, med undantaget att + får kännas igen som optionsavgränsare, liksom -.

Följande optioner ska stödjas:

-c kommando

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

-r

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

-R

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

-t taggsträng

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

-w storlek

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

OPERANDER

See the operander avsnitt of the ex kommando for a description of the operander supported by the vi kommando.

STDIN

If standard inmatning är not en terminal device, results är odefinierad. standard inmatning consists av en series av kommandon och inmatning text, som described i EXTENDED DESCRIPTION avsnitt.

If en läs från standard inmatning returns en fel, eller if redigerare detects en slut-av-fil condition från standard inmatning, it ska vara equivalent till en SIGHUP asynchronous event.

INDATAFILER

See the inmatning filer avsnitt of the ex kommando for a description of the inmatning filer supported by the vi kommando.

MILJÖVARIABLER

See the ENVIRONMENT VARIABLES avsnitt of the ex kommando for the environment variables that affect the execution of the vi kommando.

ASYNKRONA HÄNDELSER

See the ASYNCHRONOUS EVENTS avsnitt of the ex for the asynchronous events that affect the execution of the vi kommando.

STDOUT

If standard utmatning is not a terminal device, odefinierad results occur.

standard utmatning kan be used for writing prompts to the user, for informations meddelanden, and for writing rader from the fil.

STDERR

If standard utmatning is not a terminal device, odefinierad results occur.

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

UTFILER

See the utmatning filer avsnitt of the ex kommando for a description of the utmatning filer supported by the vi kommando.

UTÖKAD BESKRIVNING

Om terminalen saknar de funktioner som krävs för att stödja en ospecificerad del av definitionen av vi, ska implementationer initialt starta i ex-läge eller open-läge. I annat fall ska vi efter initiering vara i kommandoläge; textinmatningsläge kan aktiveras med något av flera kommandon som används för att infoga eller ändra text. i text inmatning läge, <ESC> can vara used till return till kommando läge; other uses av <ESC> är described later i denna avsnitt; see Terminate kommando eller inmatning läge .

Initiering i ex och vi

See Initialization in ex and vi for a description of ex and vi

initialization for the vi verktyg.

Kommandobeskrivningar i vi

Följande symboler används på denna referenssida för att representera argument till kommandon.

buffert See the description of buffert in the EXTENDED DESCRIPTION avsnitt of the ex verktyg; see kommando Descriptions in ex .

i open och visuellt läge, när en kommando synopsis shows both [ buffert ] och [ count ] föregående kommando name, they can vara angiven i either order.

count Ett positivt heltal som används som valfritt argument till de flesta kommandon, antingen för att ange ett repetitionsantal eller en storlek. Detta argument är valfritt och ska som standard vara 1 om inget annat anges.

Synopsis rader för vi kommandon <kontroll>-G, <kontroll>-L, <kontroll>-R, <kontroll>-], % , & , ^ , D , m , M ,

Q , u , U , och ZZ do not have count som en valfri argument. Regardless, it ska not vara en fel till specify en count till dessa kommandon, och någon angiven count ska vara ignorerad.

rörelse en valfri trailing argument used av ! , < , > , c , d , och y kommandon, which är used till indicate område av text som ska vara påverkad av kommando. rörelse can vara either one av kommando tecken repeated eller one av several other vi kommandon (listed i följande table). Each av applicable kommandon specifies område av text matched av repeating kommando; each kommando som can vara used som en rörelse kommando specifies område av text it affects.

kommandon som take rörelse argument operate på either rader eller tecken, depending på circumstances. när operating på rader, alla rader som fall partially eller wholly within text område angiven för kommando ska vara påverkad. när operating på tecken, endast exact tecken i angiven text område ska vara påverkad. Each rörelse kommando specifies denna individually.

när kommandon som kan vara rörelse kommandon är not used som rörelse kommandon, they ska set aktuell position till aktuell rad och kolumn som angiven.

Följande kommandon ska vara giltiga markörrörelsekommandon:

<apostrophe> ( - j H <carriage-return> ) $ k L <comma> [[ % l M <kontroll>-H ]] _ n N <kontroll>-N { ; t T <kontroll>-P } ? w W <grave-accent> ^ b B <nyrad> + e E <mellanslag> | f F <zero> / h G

någon count som är angiven till en kommando som has en kopplad rörelse kommando ska vara applied till rörelse kommando. If en count är applied till both kommando och its kopplad rörelse kommando, effect ska vara multiplicative.

Följande symboler används i detta avsnitt för att ange positioner i redigeringsbufferten:

aktuell tecken

Tecknet som för närvarande markeras av markören.

slut of a rad

point located mellan sista non-<nyrad> (if någon) och terminating <nyrad> av en rad. för en empty rad, denna location coincides med början av rad.

slut of the edit buffert

Platsen som motsvarar slutet av den sista raden i redigeringsbufferten.

Följande symboler används i detta avsnitt för att ange kommandoåtgärder:

bigword In the POSIX lokal, vi ska recognize four kinds of

bigwords :

1. en maximal sequence av non-<blank> tecken preceded och followed av <blank> tecken eller början eller slut av en rad eller edit buffert

2. One or more sequential blank rader

3. första tecken i edit buffert

4. The sista non-<nyrad> in the edit buffert

ord I POSIX-lokalen ska vi känna igen fem slags ord:

1. A maximal sequence of letters, digits, and underscores, delimited at both ends by:

-- tecken other than letters, digits, or underscores

-- början eller slut av en rad

-- början eller slut av edit buffert

2. A maximal sequence of tecken other than letters, digits, underscores, or <blank> tecken, delimited at both ends by:

-- A letter, digit, underscore

-- <blank> tecken

-- början eller slut av en rad

-- början eller slut av edit buffert

3. One or more sequential blank rader

4. första tecken i edit buffert

5. The sista non-<nyrad> in the edit buffert

avsnitt boundary

En sektionsgräns är något av följande:

1. en rad whose första tecken är en <form-feed>
2. en rad whose första tecken är en open curly brace ( '{' )

3. en rad whose första tecken är en <period> och whose second och third tecken matcha en two-tecken pair i avsnitt edit option (see ex )

4. en rad whose första tecken är en <period> och whose endast other tecken matches första tecken av en two-tecken pair i avsnitt edit option, där second tecken av two-tecken pair är en <mellanslag>

5. första rad av edit buffert

6. The sista rad of the edit buffert if the sista rad of the edit buffert is empty or if it is a ]] or }
kommando; otherwise, the sista non-<nyrad> of the sista rad of the edit buffert

stycke boundary

En styckegräns är något av följande:

1. A avsnitt boundary

2. en rad whose första tecken är en <period> och whose second och third tecken matcha en two-tecken pair i stycken edit option (see ex )

3. en rad whose första tecken är en <period> och whose endast other tecken matches första tecken av en two-tecken pair i stycken edit option, där second tecken av two-tecken pair är en <mellanslag>

4. One or more sequential blank rader

ihågkommen sökning direction

See description av ihågkommen sökning direction i ex .

mening boundary

En meningsgräns är något av följande:

1. A stycke boundary

2. första non-<blank> som occurs efter en stycke boundary

3. första non-<blank> som occurs efter en <period> ( '.' ), <exclamation-märke> ( '!' ), eller <question-märke> ( '?' ), followed av two <mellanslag> tecken eller slut av en rad; någon nummer av closing parenthesis ( ')' ), closing brackets ( ']' ), double-quote ( '"' ), eller single- quote (<apostrophe>) tecken can appear mellan punctuation märke och two <mellanslag> tecken eller slut-av-rad

I resten av beskrivningen av verktyget vi, term ``buffert rad refers till en rad i edit buffert och term ``visning rad refers till rad eller rader på visning skärm used till visning one buffert rad. term ``aktuell rad refers till en specific ``buffert rad.

If there är visning rader på skärm för which there är no corresponding buffert rader because they correspond till rader som would vara efter slut av fil, they ska vara displayed som en single <tilde> ( '~' ) tecken, plus terminating <nyrad>.

Den sista raden på skärmen ska användas för att rapportera fel eller visa informationsmeddelanden. It ska also vara used till visning inmatning för ``rad-oriented kommandon ( / , ? , : , och ! ). när en rad-oriented kommando är executed, redigerare ska enter text inmatning läge på sista rad på skärm, using respective kommando tecken som prompt tecken. (i skiftläge av !

kommando, kopplad rörelse ska vara entered av user före redigerare enters text inmatning läge.) rad entered av user ska vara terminated av en <nyrad>, en non-<kontroll>-V-escaped <carriage-return>, eller unescaped <ESC>. It är ospecificerad if more tecken än require en visning width minus one kolumn nummer av skärm kolumner can vara entered.

If någon kommando är executed som overwrites en portion av skärm other än sista rad av skärm (för example, ex

suspend eller ! kommandon), other än ex

skal kommando, user ska vara prompted för en tecken före skärm är refreshed och edit session continued.

<tabb> tecken ska take up nummer av kolumner på skärm set av tabstop edit option (see ex ), unless there är less än som nummer av kolumner före visning margin som kommer att cause displayed rad till vara folded; i denna skiftläge, they ska endast take up nummer av kolumner up till som boundary.

Markören ska placeras på den aktuella raden och i förhållande till aktuell kolumn så som anges av varje kommando som beskrivs i följande avsnitt.

i open läge, if aktuell rad är not already displayed, then it ska vara displayed.

i visuellt läge, if aktuell rad är not displayed, then rader som är displayed ska vara expanded, scrolled, eller redrawn till cause en ospecificerad portion av aktuell rad till vara displayed. If skärm är redrawn, no more än nummer av visning rader angiven av värde av fönster edit option ska vara displayed (unless aktuell rad cannot vara completely displayed i nummer av visning rader angiven av fönster

edit option) och aktuell rad ska vara positioned som close till center av displayed rader som possible (within constraints imposed av distance av rad från början eller slut av edit buffert). If aktuell rad är före första rad i visning och skärm är scrolled, en ospecificerad portion av aktuell rad ska vara placed på första rad av visning. If aktuell rad är efter sista rad i visning och skärm är scrolled, en ospecificerad portion av aktuell rad ska vara placed på sista rad av visning.

i visuellt läge, if en rad från edit buffert (other än aktuell rad) does not entirely fit into rader at bottom av visning som är tillgänglig för its presentation, redigerare kan choose not till visning någon portion av rad. rader av visning som do not contain text från edit buffert för denna reason ska each consist av en single '@' tecken.

i visuellt läge, redigerare kan choose för ospecificerad reasons till not update rader i visning till correspond till underlying edit buffert text. rader av visning som do not correctly correspond till text från edit buffert för denna reason ska consist av en single '@' tecken (plus terminating <nyrad>), och <kontroll>-R kommando ska cause redigerare till update skärm till correctly represent edit buffert.

open och visuellt läge kommandon som set aktuell kolumn set it till en kolumn position i visning, och not en tecken position i rad. i denna skiftläge, however, kolumn position i visning ska vara calculated för en infinite width visning; för example, kolumn related till en tecken som är part av en rad som has varit folded onto additional skärm rader kommer att vara offset från visning rad kolumn där buffert rad begins, not från början av en particular visning rad.

visning markör kolumn i visning är based på värde av aktuell kolumn, som follows, med each rule applied i turn:

1. If aktuell kolumn är efter sista visning rad kolumn used av displayed rad, visning markör kolumn ska vara set till sista visning rad kolumn occupied av sista non-<nyrad> i aktuell rad; otherwise, visning markör kolumn ska vara set till aktuell kolumn.

2. If tecken av which some portion är displayed i visning rad kolumn angiven av visning markör kolumn requires more än en single visning rad kolumn:

en. If i text inmatning läge, visning markör kolumn ska vara adjusted till första visning rad kolumn i which någon portion av som tecken är displayed.

b. Otherwise, visning markör kolumn ska vara adjusted till sista visning rad kolumn i which någon portion av som tecken är displayed.

aktuell kolumn ska not vara ändrad av dessa adjustments till visning markör kolumn.

If an fel occurs during the parsing or execution of a vi

kommando:

  • terminal ska vara alerted. Execution av vi kommando ska stop, och markör (för example, aktuell rad och kolumn) ska not vara further modified.
  • Unless otherwise angiven av följande kommando avsnitt, it är ospecificerad whether en informations meddelande ska vara displayed.
  • någon partially entered vi kommando ska vara discarded.
  • If vi kommando resulted från en map expansion, alla tecken från som map expansion ska vara discarded, except som otherwise angiven av map kommando (see ex ).
  • If vi kommando resulted från execution av en buffert, no further kommandon caused av execution av buffert ska vara executed.

Page Backwards

Synopsis :

[ count ] <kontroll>-B

If i open läge, <kontroll>-B kommando ska behave identically till z kommando. Otherwise, if aktuell rad är första rad av edit buffert, it ska vara en fel.

If fönster edit option är less än 3, visning en skärm där sista rad av visning ska vara some portion av:

( aktuell första rad ) -1

otherwise, visning en skärm där första rad av visning ska vara some portion av:

( aktuell första rad ) - count x ((fönster edit option) -2)

If denna calculation would result i en rad som är före första rad av edit buffert, första rad av visning ska visning some portion av första rad av edit buffert.

aktuell rad : If no rader från föregående visning remain på skärm, set till sista rad av visning; otherwise, set till ( rad - nummer av new rader displayed på denna skärm).

aktuell kolumn : Set to non-<blank>.

Scroll Forward

Synopsis :

[ count ] <kontroll>-D

If the aktuell rad is the sista rad of the edit buffert, it ska be an fel.

If no count is angiven, count ska standard to the count

kopplad med föregående <kontroll>-D eller <kontroll>-U kommando. If there was no föregående <kontroll>-D eller <kontroll>-U kommando, count

ska standard till värde av scroll edit option.

If i open läge, skriv rader starting med rad after aktuell rad, until count rader eller sista rad av fil have varit skriven.

aktuell rad : If aktuell rad + count är past sista rad av edit buffert, set till sista rad av edit buffert; otherwise, set till aktuell rad + count .

aktuell kolumn : Set to non-<blank>.

Scroll Forward by rad

Synopsis :

[ count ] <kontroll>-E

visning the rad count rader after the sista rad currently displayed.

If sista rad av edit buffert är displayed, it ska vara en fel. If there är no rad count rader efter sista rad currently displayed, sista rad av visning ska visning some portion av sista rad av edit buffert.

aktuell rad : Unchanged if föregående aktuell tecken är displayed; otherwise, set till första rad displayed.

aktuell kolumn : Unchanged.

Page Forward

Synopsis :

[ count ] <kontroll>-F

If i open läge, <kontroll>-F kommando ska behave identically till z kommando. Otherwise, if aktuell rad är sista rad av edit buffert, it ska vara en fel.

If fönster edit option är less än 3, visning en skärm där första rad av visning ska vara some portion av:

( aktuell sista rad ) +1

otherwise, visning en skärm där första rad av visning ska vara some portion av:

( aktuell första rad ) + count x ((fönster edit option) -2)

If denna calculation would result i en rad som är efter sista rad av edit buffert, sista rad av visning ska visning some portion av sista rad av edit buffert.

aktuell rad : If no rader från föregående visning remain på skärm, set till första rad av visning; otherwise, set till ( rad + nummer av new rader displayed på denna skärm).

aktuell kolumn : Set to non-<blank>.

visning Information

Synopsis :

<kontroll>-G

This kommando ska be equivalent to the ex

fil kommando.

flytta markör Backwards

Synopsis :

[ count ] <kontroll>-H
[ count ] h the aktuell erase tecken (see stty)

If there are no tecken before the aktuell tecken on the aktuell rad, it ska be an fel. If there are less than count

föregående tecken på aktuell rad, count ska vara adjusted till nummer av föregående tecken på rad.

If used som en rörelse kommando:

1. text område ska vara från tecken före starting markör up till och including count th tecken före starting markör.

2. någon text copied till en buffert ska vara i tecken läge.

If not used som en rörelse kommando:

aktuell rad : Unchanged.

aktuell kolumn : Set to ( kolumn - the nummer of kolumner occupied by

count tecken ending med föregående aktuell kolumn).

flytta Down

Synopsis :

[ count ] <nyrad>
[ count ] <kontroll>-J
[ count ] <kontroll>-M
[ count ] <kontroll>-N
[ count ] j
[ count ] <carriage-return>
[ count ] +

If there are less than count rader after the aktuell rad in the edit buffert, it ska be an fel.

If used som en rörelse kommando:

1. text område ska include starting rad och nästa

count - 1 rader.

2. någon text copied till en buffert ska vara i rad läge.

If not used som en rörelse kommando:

aktuell rad : Set till aktuell rad + count .

aktuell kolumn : Set till non-<blank> för <carriage-return>, <kontroll>-M, och + kommandon; otherwise, unchanged.

Clear and Redisplay

Synopsis :

<kontroll>-L

If i open läge, clear skärm och redisplay aktuell rad. Otherwise, clear och redisplay skärm.

aktuell rad : Unchanged.

aktuell kolumn : Unchanged.

flytta Up

Synopsis :

[ count ] <kontroll>-P
[ count ] k
[ count ] -

If there are less than count rader before the aktuell rad in the edit buffert, it ska be an fel.

If used som en rörelse kommando:

1. text område ska include starting rad och föregående count rader.

2. någon text copied till en buffert ska vara i rad läge.

If not used som en rörelse kommando:

aktuell rad : Set to aktuell rad - count .

aktuell kolumn : Set to non-<blank> for the - kommando; otherwise, unchanged.

Redraw skärm

Synopsis :

<kontroll>-R

If någon rader have varit borttagen från visning skärm och flagged som borttagen på terminal using @ convention (see början av EXTENDED DESCRIPTION avsnitt), they ska vara redisplayed till matcha contents av edit buffert.

It är ospecificerad whether rader flagged med @ because they do not fit på terminal visning ska vara påverkad.

aktuell rad : Unchanged.

aktuell kolumn : Unchanged.

Scroll Backward

Synopsis :

[ count ] <kontroll>-U

If aktuell rad är första rad av edit buffert, it ska vara en fel.

If no count is angiven, count ska standard to the count

kopplad med föregående <kontroll>-D eller <kontroll>-U kommando. If there was no föregående <kontroll>-D eller <kontroll>-U kommando, count

ska standard till värde av scroll edit option.

aktuell rad : If count is greater than the aktuell rad, set to 1; otherwise, set to the aktuell rad - count .

aktuell kolumn : Set to non-<blank>.

Scroll Backward by rad

Synopsis :

[ count ] <kontroll>-Y

visning rad count rader before första rad currently displayed.

If aktuell rad är första rad av edit buffert, it ska vara en fel. If denna calculation would result i en rad som är före första rad av edit buffert, första rad av visning ska visning some portion av första rad av edit buffert.

aktuell rad : Unchanged if föregående aktuell tecken är displayed; otherwise, set till första rad displayed.

aktuell kolumn : Unchanged.

Edit the Alternate fil

Synopsis :

<kontroll>-^

This kommando ska be equivalent to the ex

edit kommando, with the alternate pathname as its argument.

Terminate kommando eller inmatning läge

Synopsis :

<ESC>

If a partial vi kommando (as defined by at least one, non- count

tecken) has been entered, discard the count and the kommando tecken(s).

Otherwise, if no kommando tecken have varit entered, och <ESC> was result av en map expansion, terminal ska vara alerted och <ESC> tecken ska vara discarded, but it ska not vara en fel.

Otherwise, it ska be an fel.

aktuell rad : Unchanged.

aktuell kolumn : Unchanged.

sökning för tagstring

Synopsis :

<kontroll>-]

If the aktuell tecken is not a ord or <blank>, it ska be an fel.

This kommando ska be equivalent to the ex

tag kommando, with the argument to that kommando defined as follows.

If the aktuell tecken is a <blank>:

1. Skip alla <blank> tecken efter markör up till slut av rad.

2. If the slut of the rad is reached, it ska be an fel.

Then, the argument to the ex

tag kommando ska vara aktuell tecken och alla subsequent tecken, up till första non-ord tecken eller slut av rad.

flytta markör Forward

Synopsis :

[ count ] <mellanslag>
[ count ] l (ell)

If there är less än count non-<nyrad> tecken efter markör på aktuell rad, count ska vara adjusted till nummer av non-<nyrad> tecken efter markör på rad.

If used som en rörelse kommando:

1. If aktuell eller count th tecken efter markör är sista non-<nyrad> i rad, text område ska vara comprised av aktuell tecken up till och including sista non-<nyrad> i rad. Otherwise, text område ska vara från aktuell tecken up till, but not including, count th tecken efter markör.

2. någon text copied till en buffert ska vara i tecken läge.

If not used som en rörelse kommando:

If there are no non-<nyrad> tecken after the aktuell tecken on the aktuell rad, it ska be an fel.

aktuell rad : Unchanged.

aktuell kolumn : Set till the sista kolumn that displays någon portion av the count th tecken after the aktuell tecken.

ersätt text med Results från skal kommando

Synopsis :

[ count ] ! rörelse skal-kommandon <nyrad>

If rörelse kommando är ! kommando repeated:

1. If the edit buffert is empty and no count was supplied, the kommando ska be the equivalent of the ex

läs ! kommando, med text inmatning, och no text ska vara copied till någon buffert.

2. Otherwise:

a. If there are less than count -1 rader after the aktuell rad in the edit buffert, it ska be an fel.

b. text område ska vara från aktuell rad up till och including nästa count -1 rader.

Otherwise, text område ska vara rader i which någon tecken av text område angiven av rörelse kommando appear.

någon text copied till en buffert ska vara i rad läge.

This kommando ska be equivalent to the ex

! kommando för angiven rader.

flytta markör till slut-av-rad

Synopsis :

[ count ] $

It ska be an fel if there are less than ( count -1) rader after the aktuell rad in the edit buffert.

If used som en rörelse kommando:

1. If count is 1:

a. It ska be an fel if the rad is empty.

b. Otherwise, text område ska consist av alla tecken från starting markör till sista non-<nyrad> i rad, inclusive, och någon text copied till en buffert ska vara i tecken läge.

2. Otherwise, if starting markör position är at eller före första non-<blank> i rad, text område ska consist av aktuell och nästa count -1 rader, och någon text saved till en buffert ska vara i rad läge.

3. Otherwise, text område ska consist av alla tecken från starting markör till sista non-<nyrad> i rad som är count -1 rader forward från aktuell rad, och någon text copied till en buffert ska vara i tecken läge.

If not used som en rörelse kommando:

aktuell rad : Set till aktuell rad + count -1.

aktuell kolumn : The aktuell kolumn is set to the sista visning rad kolumn of the sista non-<nyrad> in the rad, or kolumn position 1 if the rad is empty.

aktuell kolumn ska vara adjusted till vara på sista visning rad kolumn av sista non-<nyrad> av aktuell rad som subsequent kommandon ändra aktuell rad, until en kommando changes aktuell kolumn.

flytta to matchande tecken

Synopsis :

%

If tecken at aktuell position är not en parenthesis, bracket, eller curly brace, sökning forward i rad till första one av de tecken. If no such tecken är found, it ska vara en fel.

matchande tecken ska vara parenthesis, bracket, eller curly brace matchande parenthesis, bracket, eller curly brace, respectively, som was at aktuell position eller som was found på aktuell rad.

matchande ska be determined as follows, for an open parenthesis:

1. Set a counter to 1.

2. sökning forwards until en parenthesis är found eller slut av edit buffert är reached.

3. If the slut of the edit buffert is reached, it ska be an fel.

4. If an open parenthesis is found, increment the counter by 1.

5. If a close parenthesis is found, decrement the counter by 1.

6. If the counter is zero, the aktuell tecken is the matchande tecken.

matchande för en close parenthesis ska vara equivalent, except som sökning ska vara backwards, från starting tecken till början av buffert, en close parenthesis ska increment counter av 1, och en open parenthesis ska decrement counter av 1.

matchande för brackets och curly braces ska vara equivalent, except som searching ska vara done för open och close brackets eller open och close curly braces. It är implementation-defined whether other tecken är searched för och matched som well.

If used som en rörelse kommando:

1. If matchande markör was efter starting markör i edit buffert, och starting markör position was at eller före första non-<blank> non-<nyrad> i starting rad, och matchande markör position was at eller efter sista non-<blank> non-<nyrad> i matchande rad, text område ska consist av aktuell rad till matchande rad, inclusive, och någon text copied till en buffert ska vara i rad läge.

2. If matchande markör was före starting markör i edit buffert, och starting markör position was at eller efter sista non-<blank> non-<nyrad> i starting rad, och matchande markör position was at eller före första non-<blank> non-<nyrad> i matchande rad, text område ska consist av aktuell rad till matchande rad, inclusive, och någon text copied till en buffert ska vara i rad läge.

3. Otherwise, text område ska consist av starting tecken till matchande tecken, inclusive, och någon text copied till en buffert ska vara i tecken läge.

If not used som en rörelse kommando:

aktuell rad : Set to the rad where the matchande tecken is located.

aktuell kolumn : Set till the sista kolumn where någon portion av the matchande tecken är displayed.

upprepa substitution

Synopsis :

&

upprepa föregående substitution kommando. denna kommando ska vara equivalent till ex

& kommando med aktuell rad som its addresses, och utan optioner , count , eller flags .

Return till föregående Context at början av rad

Synopsis :

' tecken

It ska be an fel if there is no rad in the edit buffert marked by tecken .

If used som en rörelse kommando:

1. If starting markör är efter marked markör, then locations av starting markör och marked markör i edit buffert ska vara logically swapped.

2. text område ska consist av starting rad up till och including marked rad, och någon text copied till en buffert ska vara i rad läge.

If not used som en rörelse kommando:

aktuell rad : Set till rad referenced av märke.

aktuell kolumn : Set to non-<blank>.

Return till föregående Context

Synopsis :

` tecken

It ska vara en fel if marked rad är no longer i edit buffert. If marked rad no longer contains en tecken i saved numbered tecken position, it ska vara som if marked position är första non-<blank>.

If used som en rörelse kommando:

1. It ska vara en fel if marked markör references samma tecken i edit buffert som starting markör.

2. If starting markör är efter marked markör, then locations av starting markör och marked markör i edit buffert ska vara logically swapped.

3. If starting rad är empty eller starting markör är at eller före första non-<blank> non-<nyrad> av starting rad, och marked markör rad är empty eller marked markör references första tecken av marked markör rad, text område ska consist av alla rader containing tecken från starting markör till rad före marked markör rad, inclusive, och någon text copied till en buffert ska vara i rad läge.

4. Otherwise, if marked markör rad är empty eller marked markör references en tecken at eller före första non-<blank> non-<nyrad> av marked markör rad, område av text ska vara från starting markör till sista non-<nyrad> av rad före marked markör rad, inclusive, och någon text copied till en buffert ska vara i tecken läge.

5. Otherwise, område av text ska vara från starting markör (inclusive), till marked markör (exclusive), och någon text copied till en buffert ska vara i tecken läge.

If not used som en rörelse kommando:

aktuell rad : Set till rad referenced av märke.

aktuell kolumn : Set till sista kolumn i which någon portion av tecken referenced av märke är displayed.

Return till föregående avsnitt

Synopsis :

[ count ] [[

flytta markör backward through edit buffert till första tecken av föregående avsnitt boundary, count times.

If used som en rörelse kommando:

1. If starting markör was at första tecken av starting rad eller starting rad was empty, och första tecken av boundary was första tecken av boundary rad, text område ska consist av aktuell rad up till och including rad där count th nästa boundary starts, och någon text copied till en buffert ska vara i rad läge.

2. If boundary was sista rad av edit buffert eller sista non-<nyrad> av sista rad av edit buffert, text område ska consist av sista tecken i edit buffert up till och including starting tecken, och någon text saved till en buffert ska vara i tecken läge.

3. Otherwise, text område ska consist av starting tecken up till but not including första tecken i

count th nästa boundary, och någon text copied till en buffert ska vara i tecken läge.

If not used som en rörelse kommando:

aktuell rad : Set till rad where count th nästa boundary i edit buffert starts.

aktuell kolumn : Set till sista kolumn i which någon portion av första tecken av count th nästa boundary är displayed, eller kolumn position 1 if rad är empty.

flytta till nästa avsnitt

Synopsis :

[ count ] ]]

flytta markör forward through edit buffert till första tecken av nästa avsnitt boundary, count times.

If used som en rörelse kommando:

1. If starting markör was at första tecken av starting rad eller starting rad was empty, och första tecken av boundary was första tecken av boundary rad, text område ska consist av aktuell rad up till och including rad där count th föregående boundary starts, och någon text copied till en buffert ska vara i rad läge.

2. If boundary was första rad av edit buffert, text område ska consist av första tecken i edit buffert up till but not including starting tecken, och någon text copied till en buffert ska vara i tecken läge.

3. Otherwise, text område ska consist av första tecken i count th föregående avsnitt boundary up till but not including starting tecken, och någon text copied till en buffert ska vara i tecken läge.

If not used som en rörelse kommando:

aktuell rad : Set till rad där count th föregående boundary i edit buffert starts.

aktuell kolumn : Set till sista kolumn i which någon portion av första tecken av count th föregående boundary är displayed, eller kolumn position 1 if rad är empty.

flytta till första Non-<blank> Position på aktuell rad

Synopsis :

^

If used som en rörelse kommando:

1. If rad has no non-<blank> non-<nyrad> tecken, eller if markör är at första non-<blank> non-<nyrad> av rad, it ska vara en fel.

2. If markör är före första non-<blank> non-<nyrad> av rad, text område ska vara comprised av aktuell tecken, up till, but not including, första non-<blank> non-<nyrad> av rad.

3. If markör är efter första non-<blank> non-<nyrad> av rad, text område ska vara från tecken före starting markör up till och including första non-<blank> non-<nyrad> av rad.

4. någon text copied till en buffert ska vara i tecken läge.

If not used som en rörelse kommando:

aktuell rad : Unchanged.

aktuell kolumn : Set to non-<blank>.

aktuell and rad Above

Synopsis :

[ count ] _

If there are less than count -1 rader after the aktuell rad in the edit buffert, it ska be an fel.

If used som en rörelse kommando:

1. If count är less än 2, text område ska vara aktuell rad.

2. Otherwise, text område ska include starting rad och nästa count -1 rader.

3. någon text copied till en buffert ska vara i rad läge.

If not used som en rörelse kommando:

aktuell rad : Set till aktuell rad + count -1.

aktuell kolumn : Set to non-<blank>.

flytta Back till början av mening

Synopsis :

[ count ] (

flytta backward till början av en mening. denna kommando ska vara equivalent till [[ kommando, med exception som mening boundaries ska vara used instead av avsnitt boundaries.

flytta Forward till början av mening

Synopsis :

[ count ] )

flytta forward till början av en mening. denna kommando ska vara equivalent till ]] kommando, med exception som mening boundaries ska vara used instead av avsnitt boundaries.

flytta Back till föregående stycke

Synopsis :

[ count ] {

flytta back till början av föregående stycke. denna kommando ska vara equivalent till [[ kommando, med exception som stycke boundaries ska vara used instead av avsnitt boundaries.

flytta Forward till nästa stycke

Synopsis :

[ count ] }

flytta forward till början av nästa stycke. denna kommando ska vara equivalent till ]] kommando, med exception som stycke boundaries ska vara used instead av avsnitt boundaries.

flytta to Specific kolumn Position

Synopsis :

[ count ] |

för purposes av denna kommando, rader som är too long för aktuell visning och som have varit folded ska vara treated som having en single, 1-based, nummer av kolumner.

If there är less än count kolumner i which tecken från aktuell rad är displayed på skärm, count ska vara adjusted till vara sista kolumn i which någon portion av rad är displayed på skärm.

If used som en rörelse kommando:

1. If rad är empty, eller markör tecken är samma som tecken på count th kolumn av rad, it ska vara en fel.

2. If markör är före count th kolumn av rad, text område ska vara comprised av aktuell tecken, up till but not including tecken på count th kolumn av rad.

3. If markör är efter count th kolumn av rad, text område ska vara från tecken före starting markör up till och including tecken på count th kolumn av rad.

4. någon text copied till en buffert ska vara i tecken läge.

If not used som en rörelse kommando:

aktuell rad : Unchanged.

aktuell kolumn : Set till the sista kolumn i which någon portion av the tecken that är displayed i the count kolumn av the rad är displayed.

Reverse Find tecken

Synopsis :

[ count ] ,

If sista F , f , T , eller t kommando was F , f , T , eller t , denna kommando ska vara equivalent till en f , F , t , eller T kommando, respectively, med angiven count och samma sökning tecken.

If there was no föregående F , f , T , eller t kommando, it ska vara en fel.

upprepa

Synopsis :

[ count ] .

upprepa sista ! , < , > , en , C , D , I , J , O , P , R , S , X , Y , en , c , d ,

i , o , p , r , s , x , y , eller ~ kommando. It ska vara en fel if none av dessa kommandon have varit executed. kommandon (other än kommandon som enter text inmatning läge) executed som en result av map expansions, ska not ändra värde av sista repeatable kommando.

Repeated kommandon med kopplad rörelse kommandon ska upprepa rörelse kommando som well; however, någon angiven count ska ersätt count (s) som were originally angiven till repeated kommando eller its kopplad rörelse kommando.

If rörelse component av repeated kommando är f , F , t , eller T , repeated kommando ska not set ihågkommen sökning tecken för ; och , kommandon.

If repeated kommando är p eller P , och buffert kopplad med som kommando was en numeric buffert namngiven med en nummer less än 9, buffert kopplad med repeated kommando ska vara set till vara buffert namngiven av name av föregående buffert logically incremented av 1.

If the repeated tecken is a text inmatning kommando, the inmatning text kopplad with that kommando is repeated literally:

  • inmatning tecken är neither macro eller abbreviation-expanded.
  • inmatning tecken är not interpreted i någon special way med exception som <nyrad>, <carriage-return>, och <kontroll>-T behave som described i inmatning läge kommandon i vi .

aktuell rad : Set as described for the repeated kommando.

aktuell kolumn : Set as described for the repeated kommando.

Find Regular Expression

Synopsis :

/

If inmatning rad contains no non-<nyrad> tecken, it ska vara equivalent till en rad containing endast sista regular expression encountered. enhanced regular expressions supported av vi är described i Regular Expressions i ex .

Otherwise, the rad ska be interpreted as one or more regular expressions, optionally followed by an adress offset or a vi

z

kommando.

If regular expression är not sista regular expression på rad, eller if en rad offset eller z kommando är angiven, regular expression ska vara terminated av en unescaped '/'

tecken, which ska not vara used som part av regular expression. If regular expression är not första regular expression på rad, it ska vara preceded av zero eller more <blank> tecken, en <semicolon>, zero eller more <blank> tecken, och en leading '/' tecken, which ska not vara interpreted som part av regular expression. It ska vara en fel till precede någon regular expression med någon tecken other än dessa.

Each sökning ska begin från tecken efter första tecken av sista matcha (eller, if it är första sökning, efter markör). If wrapscan edit option är set, sökning ska continue till tecken före starting markör tecken; otherwise, till slut av edit buffert. It ska vara en fel if någon sökning fails till find en matcha, och en informations meddelande till denna effect ska vara displayed.

An valfri adress offset (see Addressing in ex ) can be angiven after the sista regular expression by including a trailing '/'

tecken efter regular expression och specifying adress offset. denna offset kommer att vara från rad containing matcha för sista regular expression angiven. It ska vara en fel if rad offset would indicate en rad adress less än 1 eller greater än sista rad i edit buffert. en adress offset av zero ska vara supported. It ska vara en fel till follow adress offset med någon other tecken än <blank> tecken.

If not used som en rörelse kommando, en valfri z kommando (see Redraw

fönster ) can vara angiven efter sista regular expression av including en trailing '/' tecken efter regular expression, zero eller more <blank> tecken, en 'z' , zero eller more <blank> tecken, en valfri new fönster edit option värde, zero eller more <blank> tecken, och en location tecken. effect ska vara som if z kommando was executed efter / kommando. It ska vara en fel till follow z kommando med någon other tecken än <blank> tecken.

ihågkommen sökning direction ska vara set till forward.

If used som en rörelse kommando:

1. It ska vara en fel if sista matcha references samma tecken i edit buffert som starting markör.

2. If någon adress offset är angiven, the sista matcha ska vara adjusted av the angiven offset som described previously.

3. If starting markör är efter sista matcha, then locations av starting markör och sista matcha i edit buffert ska vara logically swapped.

4. If någon adress offset är angiven, text område ska consist av alla rader containing tecken från starting markör till sista matcha rad, inclusive, och någon text copied till en buffert ska vara i rad läge.

5. Otherwise, if starting rad är empty eller starting markör är at eller före första non-<blank> non-<nyrad> av starting rad, och sista matcha rad är empty eller sista matcha starts at första tecken av sista matcha rad, text område ska consist av alla rader containing tecken från starting markör till rad före sista matcha rad, inclusive, och någon text copied till en buffert ska vara i rad läge.

6. Otherwise, if sista matcha rad är empty eller sista matcha begins at en tecken at eller före första non-<blank> non-<nyrad> av sista matcha rad, område av text ska vara från aktuell markör till sista non-<nyrad> av rad före sista matcha rad, inclusive, och någon text copied till en buffert ska vara i tecken läge.

7. Otherwise, område av text ska vara från aktuell markör (inclusive), till första tecken av sista matcha (exclusive), och någon text copied till en buffert ska vara i tecken läge.

If not used som en rörelse kommando:

aktuell rad : If en matcha är found, set till the sista matched rad plus the adress offset, if någon; otherwise, unchanged.

aktuell kolumn : Set till sista kolumn på which någon portion av första tecken i sista matched string är displayed, if en matcha är found; otherwise, unchanged.

flytta till första tecken i rad

Synopsis :

0 (zero)

flytta till första tecken på aktuell rad. tecken '0'

ska not be interpreted as a kommando if it is immediately preceded by a digit.

If used som en rörelse kommando:

1. If markör tecken är första tecken i rad, it ska vara en fel.

2. text område ska vara från tecken före markör tecken up till och including första tecken i rad.

3. någon text copied till en buffert ska vara i tecken läge.

If not used som en rörelse kommando:

aktuell rad : Unchanged.

aktuell kolumn : sista kolumn i which någon portion av första tecken i rad är displayed, eller if rad är empty, unchanged.

Execute an ex kommando

Synopsis :

Execute one or more ex kommandon.

If någon portion av skärm other än sista rad av skärm was overwritten av någon ex kommando (except skal ), vi ska visning en meddelande indicating som it är waiting för en inmatning från user, och ska then läs en tecken. denna action kan also vara taken för other, ospecificerad reasons.

If nästa tecken entered är en ':' , another ex kommando ska vara accepted och executed. någon other tecken ska cause skärm till vara refreshed och vi ska return till kommando läge.

aktuell rad : As angiven for the ex kommando.

aktuell kolumn : As angiven for the ex kommando.

upprepa Find

Synopsis :

[ count ] ;

This kommando ska be equivalent to the sista F , f , T , or t

kommando, med angiven count , och med samma sökning tecken used för sista F , f , T , eller t kommando. If there was no föregående F , f , T , eller t kommando, it ska vara en fel.

Shift Left

Synopsis :

[ count ] < rörelse
If rörelse kommando är < kommando repeated:

1. If there are less than count -1 rader after the aktuell rad in the edit buffert, it ska be an fel.

2. text område ska vara från aktuell rad, up till och including nästa count -1 rader.

Shift någon rad i text område angiven av count och rörelse kommando one shiftwidth (see ex

shiftwidth option) toward the start of the rad, as described by the ex

< kommando. unshifted rader ska vara copied till unnamed buffert i rad läge.

aktuell rad : If rörelse was från aktuell markör position toward slut av edit buffert, unchanged. Otherwise, set till första rad i edit buffert som är part av text område angiven av rörelse kommando.

aktuell kolumn : Set to non-<blank>.

Shift Right

Synopsis :

[ count ] > rörelse
If rörelse kommando är > kommando repeated:

1. If there are less than count -1 rader after the aktuell rad in the edit buffert, it ska be an fel.

2. text område ska vara från aktuell rad, up till och including nästa count -1 rader.

Shift någon rad med tecken i text område angiven av

count och rörelse kommando one shiftwidth (see ex

shiftwidth

option) away from the start of the rad, as described by the ex

>

kommando. unshifted rader ska vara copied into unnamed buffert i rad läge.

aktuell rad : If rörelse was från aktuell markör position toward slut av edit buffert, unchanged. Otherwise, set till första rad i edit buffert som är part av text område angiven av rörelse kommando.

aktuell kolumn : Set to non-<blank>.

Scan Backwards for Regular Expression

Synopsis :

?

Scan backwards; ? kommando ska vara equivalent till /

kommando (see Find Regular Expression ) med följande exceptions:

1. inmatning prompt ska vara en '?' .

2. Each sökning ska begin från tecken före första tecken av sista matcha (eller, if it är första sökning, tecken före markör tecken).

3. sökning direction ska vara från markör toward början av edit buffert, och wrapscan edit option ska affect whether sökning wraps till slut av edit buffert och continues.

4. ihågkommen sökning direction ska vara set till backward.

Execute

Synopsis :

@ buffert

If buffert är angiven som @ , sista buffert executed ska vara used. If no föregående buffert has varit executed, it ska vara en fel.

Behave som if contents av namngiven buffert were entered som standard inmatning. efter each rad av en rad-läge buffert, och alla but sista rad av en tecken läge buffert, behave som if en <nyrad> were entered som standard inmatning.

If an fel occurs during this process, an fel meddelande ska be skriven, and no more tecken resulting from the execution of this kommando ska be processed.

If en count är angiven, behave som if som count were entered som user inmatning före tecken från @ buffert were entered.

aktuell rad : As angiven for the individual kommandon.

aktuell kolumn : As angiven for the individual kommandon.

Reverse skiftläge

Synopsis :

[ count ] ~

Reverse skiftläge av aktuell tecken och nästa count -1 tecken, such som lowercase tecken som have uppercase counterparts ska vara ändrad till uppercase tecken, och uppercase tecken som have lowercase counterparts ska vara ändrad till lowercase tecken, som prescribed av aktuell lokal. No other tecken ska vara påverkad av denna kommando.

If there är less än count -1 tecken efter markör i edit buffert, count ska vara adjusted till nummer av tecken efter markör i edit buffert minus 1.

för purposes av denna kommando, nästa tecken after sista non-<nyrad> på rad ska vara nästa tecken i edit buffert.

aktuell rad : Set till rad including ( count -1)th tecken efter markör.

aktuell kolumn : Set till sista kolumn i which någon portion av ( count -1)th tecken efter markör är displayed.

lägg till

Synopsis :

[ count ] a

Enter text inmatning läge efter aktuell markör position. No tecken already i edit buffert ska vara påverkad av denna kommando. en count ska cause inmatning text till vara appended count

-1 more times to the slut of the inmatning.

aktuell rad/kolumn : As angiven for the text inmatning kommandon (see

inmatning läge kommandon i vi ).

lägg till at slut-av-rad

Synopsis :

[ count ] A

This kommando ska be equivalent to the vi kommando:

$ [ count
] a

(see lägg till ).

flytta Backward till föregående ord

Synopsis :

[ count ] b

med exception som ord är used som avgränsare instead av bigwords, denna kommando ska vara equivalent till B kommando.

flytta Backward till föregående Bigword

Synopsis :

[ count ] B

If edit buffert är empty eller markör är på första tecken av edit buffert, it ska vara en fel. If less än

count bigwords begin mellan markör och start av edit buffert, count ska vara adjusted till nummer av bigword beginnings mellan markör och start av edit buffert.

If used som en rörelse kommando:

1. text område ska vara från första tecken av

count th föregående bigword början up till but not including markör tecken.

2. någon text copied till en buffert ska vara i tecken läge.

If not used som en rörelse kommando:

aktuell rad : Set to the rad containing the aktuell kolumn .

aktuell kolumn : Set till sista kolumn upon which någon part av första tecken av count th föregående bigword är displayed.

ändra

Synopsis :

[ buffert ][ count ] c rörelse

If rörelse kommando är c kommando repeated:

1. buffert text ska vara i rad läge.

2. If there are less than count -1 rader after the aktuell rad in the edit buffert, it ska be an fel.

3. text område ska vara från aktuell rad up till och including nästa count -1 rader.

Otherwise, buffert text läge och text område ska vara som angiven av rörelse kommando.

replaced text ska vara copied into buffert , if angiven, och into unnamed buffert. If text till vara replaced contains tecken från more än en single rad, eller buffert text är i rad läge, replaced text ska vara copied into numeric buffertar som well.

If buffert text är i rad läge:

1. någon rader som contain tecken i område ska vara borttagen, och redigerare ska enter text inmatning läge at början av en new rad which ska ersätt första rad borttagen.

2. If autoindent edit option är set, autoindent tecken equal till autoindent tecken på första rad borttagen ska vara inserted som if entered av user.

Otherwise, if tecken från more än one rad är i område av text:

1. The text ska be borttagen.

2. någon text remaining i sista rad i text område ska vara appended till första rad i område, och sista rad i område ska vara borttagen.

3. redigerare ska enter text inmatning läge efter sista tecken not borttagen från första rad i text område, if någon; otherwise, på första kolumn av första rad i område.

Otherwise:

1. If glyph för '$' är smaller än område, slut av område ska vara marked med en '$' .

2. redigerare ska enter text inmatning läge, overwriting område av text.

aktuell rad/kolumn : As angiven for the text inmatning kommandon (see

inmatning läge kommandon i vi ).

ändra till slut-av-rad

Synopsis :

[ buffert ][ count ] C

This kommando ska be equivalent to the vi kommando:

[ buffert ][ count ] c$

See the c kommando.

ta bort

Synopsis :

[ buffert ][ count ] d rörelse

If rörelse kommando är d kommando repeated:

1. buffert text ska vara i rad läge.

2. If there are less than count -1 rader after the aktuell rad in the edit buffert, it ska be an fel.

3. text område ska vara från aktuell rad up till och including nästa count -1 rader.

Otherwise, buffert text läge och text område ska vara som angiven av rörelse kommando.

If i open läge, och aktuell rad är borttagen, och rad remains på visning, en '@' tecken ska vara displayed som första glyph av som rad.

ta bort område av text into buffert , if angiven, och into unnamed buffert. If text till vara borttagen contains tecken från more än en single rad, eller buffert text är i rad läge, borttagen text ska vara copied into numeric buffertar, som well.

aktuell rad : Set till första text område rad som appears i edit buffert, unless som rad has varit borttagen, i which skiftläge it ska vara set till sista rad i edit buffert, eller rad 1 if edit buffert är empty.

aktuell kolumn :

1. If the rad is empty, set to kolumn position 1.

2. Otherwise, if buffert text är i rad läge eller rörelse was från markör toward slut av edit buffert:

en. If en tecken from the aktuell rad är displayed i the aktuell kolumn, set till the sista kolumn that displays någon portion av that tecken.

b. Otherwise, set till the sista kolumn i which någon portion av någon tecken i the rad är displayed.

3. Otherwise, if en tecken är displayed i kolumn som began text område, set till sista kolumn som displays någon portion av som tecken.

4. Otherwise, set till the sista kolumn i which någon portion av någon tecken i the rad är displayed.

ta bort to slut-of-rad

Synopsis :

[ buffert ] D

ta bort the text from the aktuell position to the slut of the aktuell rad; equivalent to the vi kommando:

[ buffert ] d$

flytta to slut-of-ord

Synopsis :

[ count ] e

med exception som ord är used instead av bigwords som avgränsare, denna kommando ska vara equivalent till E kommando.

flytta to slut-of-Bigword

Synopsis :

[ count ] E

If the edit buffert is empty it ska be an fel. If less than

count bigwords slut mellan markör och slut av edit buffert, count ska vara adjusted till nummer av bigword endings mellan markör och slut av edit buffert.

If used som en rörelse kommando:

1. text område ska vara från sista tecken av

count th nästa bigword up till och including markör tecken.

2. någon text copied till en buffert ska vara i tecken läge.

If not used som en rörelse kommando:

aktuell rad : Set to the rad containing the aktuell kolumn.

aktuell kolumn : Set till sista kolumn upon which någon part av sista tecken av count th nästa bigword är displayed.

Find tecken in aktuell rad (Forward)

Synopsis :

[ count ] f tecken

It ska vara en fel if count occurrences av tecken do not occur efter markör i rad.

If used som en rörelse kommando:

1. text range ska vara från markör tecken up till och including count th occurrence av angiven tecken efter markör.

2. någon text copied till en buffert ska vara i tecken läge.

If not used som en rörelse kommando:

aktuell rad : Unchanged.

aktuell kolumn : Set till the sista kolumn i which någon portion av the

count th occurrence av angiven tecken efter markör appears i rad.

Find tecken in aktuell rad (Reverse)

Synopsis :

[ count ] F tecken

It ska vara en fel if count occurrences av tecken do not occur före markör i rad.

If used som en rörelse kommando:

1. text område ska vara från count th occurrence av angiven tecken före markör, up till, but not including markör tecken.

2. någon text copied till en buffert ska vara i tecken läge.

If not used som en rörelse kommando:

aktuell rad : Unchanged.

aktuell kolumn : Set till the sista kolumn i which någon portion av the

count th occurrence av angiven tecken före markör appears i rad.

flytta to rad

Synopsis :

[ count ] G

If count is not angiven, it ska standard to the sista rad of the edit buffert. If count is greater than the sista rad of the edit buffert, it ska be an fel.

If used som en rörelse kommando:

1. text område ska vara från markör rad up till och including angiven rad.

2. någon text copied till en buffert ska vara i rad läge.

If not used som en rörelse kommando:

aktuell rad : Set to count if count is angiven; otherwise, the sista rad.

aktuell kolumn : Set to non-<blank>.

flytta till Top av skärm

Synopsis :

[ count ] H

If början av rad count greater än första rad av which någon portion appears på visning does not exist, it ska vara en fel.

If used som en rörelse kommando:

1. If i open läge, text område ska vara aktuell rad.

2. Otherwise, text område ska vara från starting rad up till och including ( första rad av visning + count -1).

3. någon text copied till en buffert ska vara i rad läge.

If not used som en rörelse kommando:

If i open läge, denna kommando ska set aktuell kolumn till non-<blank> och do nothing else.

Otherwise, it ska set the aktuell rad and aktuell kolumn as follows.

aktuell rad : Set till ( första rad av visning + count -1).

aktuell kolumn : Set to non-<blank>.

infoga före markör

Synopsis :

[ count ] i

Enter text inmatning läge före aktuell markör position. No tecken already i edit buffert ska vara påverkad av denna kommando. en count ska cause inmatning text till vara appended count

-1 more times to the slut of the inmatning.

aktuell rad/kolumn : As angiven for the text inmatning kommandon (see

inmatning läge kommandon i vi ).

infoga at början av rad

Synopsis :

[ count ] I

denna kommando ska vara equivalent till vi kommando ^[ count ] i .

Join

Synopsis :

[ count ] J

If the aktuell rad is the sista rad in the edit buffert, it ska be an fel.

This kommando ska be equivalent to the ex

join kommando med no addresses, och en ex kommando count värde av 1 if count was not angiven eller if en count av 1 was angiven, och en ex kommando

count värde av count -1 för någon other värde av count , except som aktuell rad och kolumn ska vara set som follows.

aktuell rad : Unchanged.

aktuell kolumn : sista kolumn i which någon portion av tecken följande sista tecken i initial rad är displayed, eller sista non-<nyrad> i rad if no tecken were appended.

flytta till Bottom av skärm

Synopsis :

[ count ] L

If början av rad count less än sista rad av which någon portion appears på visning does not exist, it ska vara en fel.

If used som en rörelse kommando:

1. If i open läge, text område ska vara aktuell rad.

2. Otherwise, text område ska include alla rader från starting markör rad till ( sista rad av visning -( count

-1)).

3. någon text copied till en buffert ska vara i rad läge.

If not used som en rörelse kommando:

1. If i open läge, denna kommando ska set aktuell kolumn till non-<blank> och do nothing else.

2. Otherwise, it ska set the aktuell rad and aktuell kolumn as follows.

aktuell rad : Set to (the sista rad of the visning -( count -1)).

aktuell kolumn : Set to non-<blank>.

märke Position

Synopsis :

m letter

This kommando ska be equivalent to the ex

märke kommando med angiven tecken som en argument.

flytta till Middle av skärm

Synopsis :

M

The middle rad of the visning ska be calculated as follows:

( top rad av visning) + (((nummer av rader displayed) +1) /2) -1

If used som en rörelse kommando:

1. If i open läge, text område ska vara aktuell rad.

2. Otherwise, text område ska include alla rader från starting markör rad up till och including middle rad av visning.

3. någon text copied till en buffert ska vara i rad läge.

If not used som en rörelse kommando:

If i open läge, denna kommando ska set aktuell kolumn till non-<blank> och do nothing else.

Otherwise, it ska set the aktuell rad and aktuell kolumn as follows.

aktuell rad : Set to the middle rad of the visning.

aktuell kolumn : Set to non-<blank>.

upprepa Regular Expression Find (Forward)

Synopsis :

n

If ihågkommen sökning direction was forward, n kommando ska vara equivalent till vi

/ kommando with no tecken entered by the user. Otherwise, it ska be equivalent to the vi

?

kommando with no tecken entered by the user.

If n kommando är used som en rörelse kommando för ! kommando, redigerare ska not enter text inmatning läge på sista rad på skärm, och ska behave som if user entered en single '!'

tecken as the text inmatning.

upprepa Regular Expression Find (Reverse)

Synopsis :

N

Scan för nästa matcha av sista mönster given till / eller ? , but i reverse direction; denna är reverse av n .

If ihågkommen sökning direction was forward, N kommando ska vara equivalent till vi

? kommando med no tecken entered av user. Otherwise, it ska vara equivalent till vi

/

kommando med no tecken entered av user. If N kommando är used som en rörelse kommando för ! kommando, redigerare ska not enter text inmatning läge på sista rad på skärm, och ska behave som if user entered en single ! tecken som text inmatning.

infoga Empty rad Below

Synopsis :

o

Enter text inmatning läge i en new rad appended efter aktuell rad. en count ska cause inmatning text till vara appended count -1 more times till slut av already added text, each time starting på en new, appended rad.

aktuell rad/kolumn : As angiven for the text inmatning kommandon (see

inmatning läge kommandon i vi ).

infoga Empty rad Above

Synopsis :

O

Enter text inmatning läge i en new rad inserted före aktuell rad. en count ska cause inmatning text till vara appended count -1 more times till slut av already added text, each time starting på en new, appended rad.

aktuell rad/kolumn : As angiven for the text inmatning kommandon (see

inmatning läge kommandon i vi ).

Put från buffert följande

Synopsis :

[ buffert ] p

If no buffert is angiven, the unnamed buffert ska be used.

If buffert text är i rad läge, text ska vara appended below aktuell rad, och each rad av buffert ska become en new rad i edit buffert. en count ska cause buffert text till vara appended count -1 more times till slut av already added text, each time starting på en new, appended rad.

If buffert text är i tecken läge, text ska vara appended into aktuell rad efter markör, och each rad av buffert other än första och sista ska become en new rad i edit buffert. en count ska cause buffert text till vara appended count -1 more times till slut av already added text, each time starting efter sista added tecken.

aktuell rad : If buffert text är i rad läge, set rad till rad +1; otherwise, unchanged.

aktuell kolumn : If buffert text är i rad läge:

1. If there är en non-<blank> i första rad av buffert, set till sista kolumn på which någon portion av första non-<blank> i rad är displayed.

2. If there är no non-<blank> i första rad av buffert, set till sista kolumn på which någon portion av sista non-<nyrad> i första rad av buffert är displayed.

If buffert text är i tecken läge:

1. If text i buffert är från more än en single rad, then set till sista kolumn på which någon portion av första tecken från buffert är displayed.

2. Otherwise, if the buffert är the unnamed buffert, set till the sista kolumn på which någon portion av the sista tecken from the buffert är displayed.

3. Otherwise, set till första kolumn på which någon portion av första tecken från buffert är displayed.

Put from buffert Before

Synopsis :

[ buffert ] P

If no buffert is angiven, the unnamed buffert ska be used.

If buffert text är i rad läge, text ska vara inserted above aktuell rad, och each rad av buffert ska become en new rad i edit buffert. en count ska cause buffert text till vara appended count -1 more times till slut av already added text, each time starting på en new, appended rad.

If buffert text är i tecken läge, text ska vara inserted into aktuell rad före markör, och each rad av buffert other än första och sista ska become en new rad i edit buffert. en count ska cause buffert text till vara appended count -1 more times till slut av already added text, each time starting efter sista added tecken.

aktuell rad : Unchanged.

aktuell kolumn : If buffert text är i rad läge:

1. If there är en non-<blank> i första rad av buffert, set till sista kolumn på which någon portion av som tecken är displayed.

2. If there är no non-<blank> i första rad av buffert, set till sista kolumn på which någon portion av sista non-<nyrad> i första rad av buffert är displayed.

If buffert text är i tecken läge:

1. If text i buffert är från more än en single rad, then set till sista kolumn på which någon portion av första tecken från buffert är displayed.

2. Otherwise, if the buffert är the unnamed buffert, set till the sista kolumn på which någon portion av the sista tecken from the buffert är displayed.

3. Otherwise, set till första kolumn på which någon portion av första tecken från buffert är displayed.

Enter ex läge

Synopsis :

Q

Leave visuellt eller open läge och enter ex kommando läge.

aktuell rad : Unchanged.

aktuell kolumn : Unchanged.

ersätt tecken

Synopsis :

[ count ] r tecken

ersätt count tecken at och efter markör med angiven tecken. If there är less än count non-<nyrad> tecken at och efter markör på rad, it ska vara en fel.

If tecken är <kontroll>-V, någon nästa tecken other än <nyrad> ska vara stripped av någon special meaning och used som en literal tecken.

If tecken is <ESC>, no replacement ska be made and the aktuell rad and aktuell kolumn ska be unchanged.

If tecken är <carriage-return> eller <nyrad>, count new rader ska vara appended till aktuell rad. alla but sista av dessa rader ska vara empty. count tecken at och efter markör ska vara discarded, och någon remaining tecken efter markör i aktuell rad ska vara moved till sista av new rader. If autoindent edit option är set, they ska vara preceded av samma nummer av autoindent tecken found på rad från which kommando was executed.

aktuell rad : Unchanged unless replacement tecken är en <carriage-return> eller <nyrad>, i which skiftläge it ska vara set till rad + count .

aktuell kolumn : Set till sista kolumn position på which en portion av sista replaced tecken är displayed, eller if replacement tecken caused new rader till vara created, set till non-<blank>.

ersätt tecken

Synopsis :

R

Enter text inmatning läge at aktuell markör position possibly replacing text på aktuell rad. en count ska cause inmatning text till vara appended count -1 more times till slut av inmatning.

aktuell rad/kolumn : As angiven for the text inmatning kommandon (see

inmatning läge kommandon i vi ).

Substitute tecken

Synopsis :

[ buffert ][ count ] s

This kommando ska be equivalent to the vi kommando:

[ buffert ][ count ] c<mellanslag>

Substitute rader

Synopsis :

[ buffert ][ count ] S

This kommando ska be equivalent to the vi kommando:

[ buffert ][ count ] c_

flytta markör till före tecken (Forward)

Synopsis :

[ count ] t tecken

It ska vara en fel if count occurrences av tecken do not occur efter markör i rad.

If used som en rörelse kommando:

1. text område ska vara från markör up till but not including count th occurrence av angiven tecken efter markör.

2. någon text copied till en buffert ska vara i tecken läge.

If not used som en rörelse kommando:

aktuell rad : Unchanged.

aktuell kolumn : Set till sista kolumn i which någon portion av tecken före count th occurrence av angiven tecken efter markör appears i rad.

flytta markör till efter tecken (Reverse)

Synopsis :

[ count ] T tecken

It ska vara en fel if count occurrences av tecken do not occur före markör i rad.

If used som en rörelse kommando:

1. If tecken före markör är angiven tecken, it ska vara en fel.

2. text område ska vara från tecken före markör up till but not including count th occurrence av angiven tecken före markör.

3. någon text copied till en buffert ska vara i tecken läge.

If not used som en rörelse kommando:

aktuell rad : Unchanged.

aktuell kolumn : Set till sista kolumn i which någon portion av tecken efter count th occurrence av angiven tecken före markör appears i rad.

Undo

Synopsis :

u

This kommando ska be equivalent to the ex

undo kommando except that the aktuell rad and aktuell kolumn ska be set as follows:

aktuell rad : Set till första rad added eller ändrad if någon; otherwise, flytta till rad föregående någon borttagen text if one exists; otherwise, flytta till rad 1.

aktuell kolumn : If undoing en ex kommando, set till första non-<blank>.

Otherwise, if undoing a text inmatning kommando:

1. If kommando was en C , c , O , o , R , S , eller s kommando, aktuell kolumn ska vara set till värde it held när text inmatning kommando was entered.

2. Otherwise, set till sista kolumn i which någon portion av första tecken efter borttagen text är displayed, eller, if no non-<nyrad> tecken follow text borttagen från denna rad, set till sista kolumn i which någon portion av sista non-<nyrad> i rad är displayed, eller 1 if rad är empty.

Otherwise, if a single rad was modified (that is, not added or borttagen) by the u kommando:

1. If text was added eller ändrad, set till sista kolumn i which någon portion av första tecken added eller ändrad är displayed.

2. If text was borttagen, set till sista kolumn i which någon portion av första tecken efter borttagen text är displayed, eller, if no non-<nyrad> tecken follow borttagen text, set till sista kolumn i which någon portion av sista non-<nyrad> i rad är displayed, eller 1 if rad är empty.

Otherwise, set to non-<blank>.

Undo aktuell rad

Synopsis :

U

Restore aktuell rad till its tillstånd immediately before most recent time som it became aktuell rad.

aktuell rad : Unchanged.

aktuell kolumn : Set till första kolumn i rad i which någon portion av första tecken i rad är displayed.

flytta till början av ord

Synopsis :

[ count ] w

med exception som ord är used som avgränsare instead av bigwords, denna kommando ska vara equivalent till W kommando.

flytta till början av Bigword

Synopsis :

[ count ] W

If edit buffert är empty, it ska vara en fel. If there är less än count bigwords mellan markör och slut av edit buffert, count ska vara adjusted till flytta markör till sista bigword i edit buffert.

If used som en rörelse kommando:

1. If kopplad kommando är c , count är 1, och markör är på en <blank>, område av text ska vara aktuell tecken och no further action ska vara taken.

2. If there är less än count bigwords mellan markör och slut av edit buffert, then kommando ska succeed, och område av text ska include sista tecken av edit buffert.

3. If there är <blank> tecken eller en slut-av-rad som precede count th bigword, och kopplad kommando är c , område av text ska vara up till och including sista tecken före föregående <blank> tecken eller slut-av-rad.

4. If there är <blank> tecken eller en slut-av-rad som precede bigword, och kopplad kommando är d eller y , område av text ska vara up till och including sista <blank> före start av bigword eller slut-av-rad.

5. någon text copied till en buffert ska vara i tecken läge.

If not used som en rörelse kommando:

1. If markör är på sista tecken av edit buffert, it ska vara en fel.

aktuell rad : Set to the rad containing the aktuell kolumn.

aktuell kolumn : Set till sista kolumn i which någon part av första tecken av count th nästa bigword är displayed.

ta bort tecken at markör

Synopsis :

[ buffert ][ count ] x

ta bort the count tecken at and after the aktuell tecken into buffert , if angiven, and into the unnamed buffert.

If the rad is empty, it ska be an fel. If there are less than

count non-<nyrad> tecken at och efter markör på aktuell rad, count ska vara adjusted till nummer av non-<nyrad> tecken at och efter markör.

aktuell rad : Unchanged.

aktuell kolumn : If rad är empty, set till kolumn position 1. Otherwise, if there were count eller less non-<nyrad> tecken at och efter markör på aktuell rad, set till sista kolumn som displays någon part av sista non-<nyrad> av rad. Otherwise, unchanged.

ta bort tecken före markör

Synopsis :

[ buffert ][ count ] X

ta bort the count tecken before the aktuell tecken into

buffert , if angiven, and into the unnamed buffert.

If there are no tecken before the aktuell tecken on the aktuell rad, it ska be an fel. If there are less than count

föregående tecken på aktuell rad, count ska vara adjusted till nummer av föregående tecken på rad.

aktuell rad : Unchanged.

aktuell kolumn : Set to (aktuell kolumn - the width of the borttagen tecken).

Yank

Synopsis :

[ buffert ][ count ] y rörelse

kopiera (yank) område av text into buffert , if angiven, och into unnamed buffert.

If rörelse kommando är y kommando repeated:

1. buffert ska vara i rad läge.

2. If there are less than count -1 rader after the aktuell rad in the edit buffert, it ska be an fel.

3. text område ska vara från aktuell rad up till och including nästa count -1 rader.

Otherwise, buffert text läge och text område ska vara som angiven av rörelse kommando.

aktuell rad : If rörelse was från aktuell markör position toward slut av edit buffert, unchanged. Otherwise, set till första rad i edit buffert som är part av text område angiven av rörelse kommando.

aktuell kolumn :

1. If rörelse was från aktuell markör position toward slut av edit buffert, unchanged.

2. Otherwise, if the aktuell rad is empty, set to kolumn position 1.

3. Otherwise, set till sista kolumn som displays någon part av första tecken i fil som är part av text område angiven av rörelse kommando.

Yank aktuell rad

Synopsis :

[ buffert ][ count ] Y

This kommando ska be equivalent to the vi kommando:

[ buffert ][ count ] y_

Redraw fönster

If i open läge, z kommando ska have Synopsis:

Synopsis :

[ count ] z

If count är not angiven, it ska standard till fönster edit option -1. z kommando ska vara equivalent till ex

z kommando, med en type tecken av = och en count av count -2, except som aktuell rad och aktuell kolumn ska vara set som follows, och fönster edit option ska not vara påverkad. If calculation för count argument would result i en negative nummer,

count argument to the ex

z kommando ska be zero. A blank rad ska be skriven after the sista rad is skriven.

aktuell rad : Unchanged.

aktuell kolumn : Unchanged.

If not i open läge, z kommando ska have följande Synopsis:

Synopsis :

[ rad ] z [ count ] tecken

If rad is not angiven, it ska standard to the aktuell rad. If

rad is angiven, but is greater than the nummer of rader in the edit buffert, it ska standard to the nummer of rader in the edit buffert.

If count är angiven, värde av fönster edit option ska vara set till count (som described i ex

fönster kommando), och skärm ska vara redrawn.

rad ska vara placed som angiven av följande tecken:

<nyrad>, <carriage-return> Place början av rad på första rad av visning.

. Place början av rad i center av visning. middle rad av visning ska vara calculated som described för M kommando.

- Place an ospecificerad portion of the rad on the sista rad of the visning.

+ If rad was angiven, equivalent till <nyrad> skiftläge. If

rad was not angiven, visning en skärm där första rad av visning ska vara (aktuell sista rad) +1. If there är no rader efter sista rad i visning, it ska vara en fel.

^ If rad was angiven, visning en skärm där sista rad av visning ska contain en ospecificerad portion av första rad av en visning som had en ospecificerad portion av angiven rad på sista rad av visning. If denna calculation results i en rad före början av edit buffert, visning första skärm av edit buffert.

Otherwise, visning en skärm där sista rad av visning ska contain en ospecificerad portion av (aktuell första rad -1). If denna calculation results i en rad före början av edit buffert, it ska vara en fel.

aktuell rad : If rad och '^' tecken were angiven:

1. If första skärm was displayed som en result av kommando attempting till visning rader före början av edit buffert: if första skärm was already displayed, unchanged; otherwise, set till (aktuell första rad -1).

2. Otherwise, set to the sista rad of the visning.

If rad och '+' tecken were angiven, set till första rad av visning.

Otherwise, if rad was angiven, set to rad .

Otherwise, unchanged.

aktuell kolumn : Set to non-<blank>.

Exit

Synopsis :

ZZ

This kommando ska be equivalent to the ex

xit kommando med no addresses, trailing ! , eller filename (see ex

xit kommando).

Kommandon för inmatningsläge i vi

i text inmatning läge, aktuell rad ska consist av zero eller more av följande categories, plus terminating <nyrad>:

1. tecken föregående text inmatning entry point

tecken i denna category ska not vara modified during text inmatning läge.

2. autoindent tecken

autoindent tecken ska vara automatically inserted into each rad som är created i text inmatning läge, either som en result av entering en <nyrad> eller <carriage-return> medan i text inmatning läge, eller som en effect av kommando itself; för example, O eller o (see ex

autoindent kommando), as if entered by the user.

It ska vara possible till erase autoindent tecken med <kontroll>-D kommando; it är ospecificerad whether they can vara erased av <kontroll>-H, <kontroll>-U, och <kontroll>-W tecken. Erasing någon autoindent tecken turns glyph into erase-kolumner och deletes tecken från edit buffert, but does not ändra its representation på skärm.

3. text inmatning tecken

text inmatning tecken är tecken entered av user. Erasing någon text inmatning tecken turns glyph into erase- kolumner och deletes tecken från edit buffert, but does not ändra its representation på skärm.

Each text inmatning tecken entered by the user (that does not have a special meaning) ska be treated as follows:

en. text inmatning tecken ska vara appended till sista tecken i edit buffert från första, second, eller third categories.

b. If there är no erase-kolumner på skärm, text inmatning kommando was R kommando, och tecken i fifth category från original rad follow markör, nästa such tecken ska vara borttagen från edit buffert. If slowopen edit option är not set, corresponding glyph på skärm ska become erase- kolumner.

c. If there är erase-kolumner på skärm, som many kolumner som they occupy, eller som är necessary, ska vara overwritten till visning text inmatning tecken. (If endast part av en multi-kolumn glyph är overwritten, remainder ska vara left på skärm, och continue till vara treated som erase- kolumner; it är ospecificerad whether remainder av glyph är modified i någon way.)

d. If additional visning rad kolumner are needed to visning the text inmatning tecken:

i. If slowopen edit option är set, text inmatning tecken ska vara displayed på subsequent visning rad kolumner, overwriting någon tecken displayed i de kolumner.

ii. Otherwise, någon tecken currently displayed på eller efter kolumn på visning rad där text inmatning tecken är till vara displayed ska vara pushed ahead nummer av visning rad kolumner necessary till visning rest av text inmatning tecken.

4. Erase-kolumner

Erase-kolumner är not logically part av edit buffert, appearing endast på skärm, och kan vara overwritten på skärm av subsequent text inmatning tecken. när text inmatning läge ends, alla erase-kolumner ska no longer appear på skärm.

Erase-kolumner är initially område av text angiven av c kommando (see ändra ); however, erasing autoindent eller text inmatning tecken causes glyphs av erased tecken till vara treated som erase-kolumner.

5. tecken följande text område för c kommando, eller text inmatning entry point för alla other kommandon

tecken i denna category ska not vara modified during text inmatning läge, except som angiven i category 3.b. för R

text inmatning kommando, or as <blank> tecken borttagen when a <nyrad> or <carriage-return> is entered.

It är ospecificerad whether it är en fel till attempt till erase past början av en rad som was created av entry av en <nyrad> eller <carriage-return> during text inmatning läge. If it är not en fel, redigerare ska behave som if erasing tecken was entered immediately efter sista text inmatning tecken entered på föregående rad, och alla av non-<nyrad> tecken på aktuell rad ska vara treated som erase-kolumner.

när text inmatning läge är entered, eller efter en text inmatning läge tecken är entered (except som angiven för special tecken below), markör ska vara positioned som follows:

1. på första kolumn som displays någon part av första erase- kolumn, if one exists

2. Otherwise, if slowopen edit option är set, på första visning rad kolumn efter sista tecken i första, second, eller third categories, if one exists

3. Otherwise, första kolumn som displays någon part av första tecken i fifth category, if one exists

4. Otherwise, visning rad kolumn efter sista tecken i första, second, eller third categories, if one exists

5. Otherwise, on kolumn position 1

tecken som är updated på skärm during text inmatning läge är ospecificerad, other än som sista text inmatning tecken ska always vara updated, och, if slowopen edit option är not set, aktuell markör tecken ska always vara updated.

följande specifications är för kommando tecken entered during text inmatning läge.

NUL

Synopsis :

NUL

If första tecken av text inmatning är en NUL, most recently inmatning text ska vara inmatning som if entered av user, och then text inmatning läge ska vara exited. text ska vara inmatning literally; som är, tecken är neither macro eller abbreviation expanded, nor är någon tecken interpreted i någon special manner. It är ospecificerad whether implementationer ska support more än 256 bytes av ihågkommen inmatning text.

<kontroll>-D

Synopsis :

<kontroll>-D

<kontroll>-D tecken ska have no special meaning när i text inmatning läge för en rad-oriented kommando (see kommando

Descriptions in vi ).

denna kommando need not vara supported på block-läge terminals.

If markör does not follow en autoindent tecken, eller en

autoindent tecken och en '0' eller '^' tecken:

1. If markör är i kolumn position 1, <kontroll>-D tecken ska vara discarded och no further action taken.

2. Otherwise, the <kontroll>-D tecken ska have no special meaning.

If sista inmatning tecken was en '0' , markör ska vara moved till kolumn position 1.

Otherwise, if sista inmatning tecken was en '^' , markör ska vara moved till kolumn position 1. i addition, autoindent level för nästa inmatning rad ska vara derived från samma rad från which autoindent level för aktuell inmatning rad was derived.

Otherwise, markör ska vara moved back till kolumn efter föregående shiftwidth (see ex

shiftwidth kommando) boundary.

alla av glyphs på kolumner mellan starting markör position och (inclusively) ending markör position ska become erase- kolumner som described i inmatning läge kommandon i vi .

aktuell rad : Unchanged.

aktuell kolumn : Set till 1 if <kontroll>-D was preceded av en '^'

eller '0' ; otherwise, set till (kolumn -1) -((kolumn -2) % shiftwidth ).

<kontroll>-H

Synopsis :

<kontroll>-H

If i text inmatning läge för en rad-oriented kommando, och there är no tecken till erase, text inmatning läge ska vara terminated, no further action ska vara done för denna kommando, och aktuell rad och kolumn ska vara unchanged.

If there är tecken other än autoindent tecken som have varit inmatning på aktuell rad före markör, markör ska flytta back one tecken.

Otherwise, if there är autoindent tecken på aktuell rad före markör, it är implementation-defined whether <kontroll>-H kommando är en fel eller if markör moves back one

autoindent tecken.

Otherwise, if markör är i kolumn position 1 och there är föregående rader som have varit inmatning, it är implementation-defined whether <kontroll>-H kommando är en fel eller if it är equivalent till entering <kontroll>-H efter sista inmatning tecken på föregående inmatning rad.

Otherwise, it ska be an fel.

alla av glyphs på kolumner mellan starting markör position och (inclusively) ending markör position ska become erase- kolumner som described i inmatning läge kommandon i vi .

aktuell erase tecken (see stty ) ska cause en equivalent action till <kontroll>-H kommando, unless previously inserted tecken was en <backslash>, i which skiftläge it ska vara som if literal aktuell erase tecken had varit inserted instead av <backslash>.

aktuell rad : Unchanged, unless previously inmatning rader är erased, i which skiftläge it ska vara set till rad -1.

aktuell kolumn : Set till första kolumn som displays någon portion av tecken backed up over.

<nyrad>

Synopsis :

<nyrad> <carriage-return> <kontroll>-J <kontroll>-M

If inmatning was part av en rad-oriented kommando, text inmatning läge ska vara terminated och kommando ska continue execution med inmatning provided.

Otherwise, terminate aktuell rad. If there är no tecken other än autoindent tecken på rad, alla tecken på rad ska vara discarded. Otherwise, it är ospecificerad whether autoindent tecken i rad är modified av entering dessa tecken.

Continue text inmatning läge på en new rad appended efter aktuell rad. If slowopen edit option är set, rader på skärm below aktuell rad ska not vara pushed down, but första av them ska vara cleared och ska appear till vara overwritten. Otherwise, rader av skärm below aktuell rad ska vara pushed down.

If the autoindent edit option is set, an appropriate nummer of

autoindent tecken ska be added as a prefix to the rad as described by the ex

autoindent edit option.

alla kolumner efter markör som är erase-kolumner (som described i inmatning läge kommandon i vi ) ska vara discarded.

If autoindent edit option är set, alla <blank> tecken immediately följande markör ska vara discarded.

alla remaining tecken efter markör ska vara transferred till new rad, positioned efter någon autoindent tecken.

aktuell rad : Set till aktuell rad +1.

aktuell kolumn : Set till första kolumn som displays någon portion av första tecken efter autoindent tecken på new rad, if någon, eller första kolumn position efter sista

autoindent tecken, if någon, eller kolumn position 1.

<kontroll>-T

Synopsis :

<kontroll>-T

<kontroll>-T tecken ska have no special meaning när i text inmatning läge för en rad-oriented kommando (see kommando

Descriptions in vi ).

denna kommando need not vara supported på block-läge terminals.

Behave som if user entered minimum nummer av <blank> tecken necessary till flytta markör forward till kolumn position efter nästa shiftwidth (see ex

shiftwidth kommando) boundary.

aktuell rad : Unchanged.

aktuell kolumn : Set till kolumn + shiftwidth - ((kolumn -1) %

shiftwidth ).

<kontroll>-U

Synopsis :

<kontroll>-U

If there är tecken other än autoindent tecken som have varit inmatning på aktuell rad före markör, markör ska flytta till första tecken inmatning efter autoindent tecken.

Otherwise, if there är autoindent tecken på aktuell rad före markör, it är implementation-defined whether <kontroll>-U kommando är en fel eller if markör moves till första kolumn position på rad.

Otherwise, if markör är i kolumn position 1 och there är föregående rader som have varit inmatning, it är implementation-defined whether <kontroll>-U kommando är en fel eller if it är equivalent till entering <kontroll>-U efter sista inmatning tecken på föregående inmatning rad.

Otherwise, it ska be an fel.

alla av glyphs på kolumner mellan starting markör position och (inclusively) ending markör position ska become erase- kolumner som described i inmatning läge kommandon i vi .

aktuell kill tecken (see stty ) ska cause en equivalent action till <kontroll>-U kommando, unless previously inserted tecken was en <backslash>, i which skiftläge it ska vara som if literal aktuell kill tecken had varit inserted instead av <backslash>.

aktuell rad : Unchanged, unless previously inmatning rader är erased, i which skiftläge it ska vara set till rad -1.

aktuell kolumn : Set till första kolumn som displays någon portion av sista tecken backed up over.

<kontroll>-V

Synopsis :

<kontroll>-V <kontroll>-Q

Allow entry av någon subsequent tecken, other än <kontroll>-J eller <nyrad>, som en literal tecken, removing någon special meaning som it kan have till redigerare i text inmatning läge. If en <kontroll>-V eller <kontroll>-Q är entered före en <kontroll>-J eller <nyrad>, <kontroll>-V eller <kontroll>-Q tecken ska vara discarded, och <kontroll>-J eller <nyrad> ska behave som described i <nyrad> kommando tecken during inmatning läge.

For purposes of the visning endast, the redigerare ska behave as if a

'^' tecken was entered, och markör ska vara positioned som if overwriting '^' tecken. när en subsequent tecken är entered, redigerare ska behave som if som tecken was entered instead av original <kontroll>-V eller <kontroll>-Q tecken.

aktuell rad : Unchanged.

aktuell kolumn : Unchanged.

<kontroll>-W

Synopsis :

<kontroll>-W

If there är tecken other än autoindent tecken som have varit inmatning på aktuell rad före markör, markör ska flytta back over sista ord föregående markör (including någon <blank> tecken mellan slut av sista ord och aktuell markör); markör ska not flytta till före första tecken efter slut av någon autoindent tecken.

Otherwise, if there är autoindent tecken på aktuell rad före markör, it är implementation-defined whether <kontroll>-W kommando är en fel eller if markör moves till första kolumn position på rad.

Otherwise, if markör är i kolumn position 1 och there är föregående rader som have varit inmatning, it är implementation-defined whether <kontroll>-W kommando är en fel eller if it är equivalent till entering <kontroll>-W efter sista inmatning tecken på föregående inmatning rad.

Otherwise, it ska be an fel.

alla av glyphs på kolumner mellan starting markör position och (inclusively) ending markör position ska become erase- kolumner som described i inmatning läge kommandon i vi .

aktuell rad : Unchanged, unless previously inmatning rader är erased, i which skiftläge it ska vara set till rad -1.

aktuell kolumn : Set till första kolumn som displays någon portion av sista tecken backed up over.

<ESC>

Synopsis :

<ESC>

If inmatning was part of a rad-oriented kommando:

1. If interrupt was entered, text inmatning läge ska vara terminated och redigerare ska return till kommando läge. terminal ska vara alerted.

2. If <ESC> was entered, text inmatning läge ska vara terminated och kommando ska continue execution med inmatning provided.

Otherwise, terminate text inmatning läge och return till kommando läge.

någon autoindent tecken entered på newly created rader that have no other non-<nyrad> tecken ska vara borttagen.

någon leading autoindent and <blank> tecken på newly created rader ska vara rewritten till vara the minimum nummer av <blank> tecken possible.

skärm ska vara redisplayed som necessary till matcha contents av edit buffert.

aktuell rad : Unchanged.

aktuell kolumn :

1. If there är text inmatning tecken på aktuell rad, kolumn ska vara set till sista kolumn där någon portion av sista text inmatning tecken är displayed.

2. Otherwise, if a tecken is displayed in the aktuell kolumn, unchanged.

3. Otherwise, set to kolumn position 1.

AVSLUTNINGSSTATUS

Följande avslutningsvärden ska returneras:

0

Slutfördes utan fel.

>0

Ett fel inträffade.

KONSEKVENSER AV FEL

när någon fel är encountered och standard inmatning är not en terminal device fil, vi ska not skriv fil eller return till kommando eller text inmatning läge, och ska terminate med en non-zero exit status.

Otherwise, when an unrecoverable fel is encountered it ska be equivalent to a SIGHUP asynchronous event.

Otherwise, when an fel is encountered, the redigerare ska behave as angiven in kommando Descriptions in vi .

följande avsnitt är informative.

ANVÄNDNING I PROGRAM

Inget.

EXEMPEL

Inget.

BAKGRUND OCH MOTIVERING

See RATIONALE för ex(1p) för more information på vi . Stora delar av specifikationen för verktyget vi hänvisar till ex för att undvika oavsiktliga skillnader. medan ex och vi have historically varit implemented som en single verktyg, denna är not required av POSIX.1-2008.

It är recognized som portions av vi would vara difficult, if not impossible, till implement satisfactorily på en block-läge terminal, eller en terminal utan någon form av markör addressing, thus it är not en mandatory requirement som such features bör work på alla terminals. It är intention, however, som en vi implementation bör provide full set av capabilities på alla terminals capable av supporting them.

Historically, vi exited immediately if standard inmatning was not en terminal. POSIX.1-2008 permits, but does not require, denna behavior. en slut-av-fil condition är not equivalent till en slut-av- fil tecken. en common slut-av-fil tecken, <kontroll>-D, är historically en vi kommando.

The text in the STDOUT avsnitt reflects the usage of the verb

visning i denna avsnitt; some implementationer av vi use standard utmatning till skriv till terminal, but POSIX.1-2008 does not require som till vara skiftläge.

Historically, implementationer reverted till open läge if terminal was incapable av supporting full visuellt läge. POSIX.1-2008 requires denna behavior. Historically, open läge av vi behaved roughly equivalently till visuellt läge, med exception som endast en single rad från edit buffert (one ``buffert rad) was kept aktuell at någon time. denna rad was normally displayed på nästa-till-sista rad av en terminal med markör addressing (och sista rad performed its normal visuellt functions för rad-oriented kommandon och meddelanden). i addition, some few kommandon behaved differently i open läge än i visuellt läge. POSIX.1-2008 requires conformance till historical practice.

Historically, ex och vi implementationer have expected text till proceed i usual European/Latin order av left till right, top till bottom. There är no requirement i POSIX.1-2008 som denna vara skiftläge. specification was deliberately skriven using ord like ``före, ``efter, ``första, och ``sista i order till permit implementationer till support natural text order av language.

Historically, rader past slut av edit buffert were marked med single <tilde> ( '~' ) tecken; som är, if one-based visning was 20 rader i length, och sista rad av fil was på rad one, then rader 2-20 would contain endast en single '~'

tecken.

Historically, vi redigerare attempted till visning endast complete rader at bottom av skärm (it did visning partial rader at top av skärm). If en rad was too long till fit i its entirety at bottom av skärm, skärm rader där rad would have varit displayed were displayed som single '@'

tecken, instead av displaying part av rad. POSIX.1-2008 permits, but does not require, denna behavior. implementationer är encouraged till attempt always till visning en complete rad at bottom av skärm när doing scrolling eller skärm positioning av buffert rader.

Historically, rader marked med '@' were also used till minimize utmatning till dumb terminals over slow rader; som är, changes local till markör were updated, but changes till rader på skärm som were not close till markör were simply marked med en '@'

sign instead av vara updated till matcha aktuell text. POSIX.1-2008 permits, but does not require denna feature because it är used ever less frequently som terminals become smarter och connections är faster.

Initiering i ex och vi

Historically, vi always had a rad in the edit buffert, even if the edit buffert was ``empty. For example:

1. ex kommando = executed från visuellt läge wrote ``1 när buffert was empty.

2. Writes från visuellt läge av en empty edit buffert wrote filer av en single tecken (en <nyrad>), medan writes från ex läge av en empty edit buffert wrote empty filer.

3. Put och läs kommandon into en empty edit buffert left en empty rad at top av edit buffert.

For consistency, POSIX.1-2008 does not permit någon av these behaviors.

Historically, vi did not always return terminal till its original lägen; för example, ICRNL was modified if it was not originally set. POSIX.1-2008 does not permit denna behavior.

Kommandobeskrivningar i vi

rörelse kommandon är among most complicated aspects av vi till describe. med some exceptions, text område och buffert type effect av en rörelse kommando på en vi kommando är described på en skiftläge-av-skiftläge basis. descriptions av text regions i POSIX.1-2008 är not intended till imply direction; som är, en inclusive område från rad n till rad n +5 är identical till en område från rad n +5 till rad n . denna är av more än academic interest— movements till märken can vara i either direction, och, if

wrapscan option är set, so can movements till sökning points. Historically, rader är always stored into buffertar i text order; som är, från start av edit buffert till slut. POSIX.1-2008 requires conformance till historical practice.

Historically, kommando counts were applied till någon kopplad rörelse, och were multiplicative till någon supplied rörelse count. för example, 2cw är samma som c2w , och 2c3w är samma som c6w . POSIX.1-2008 requires denna behavior. Historically, vi kommandon som used bigwords, ord, stycken, och meningar som objects treated groups av empty rader, eller rader som contained endast <blank> tecken, inconsistently. Some kommandon treated them som en single entity, medan others treated each rad separately. för example, w , W , och B kommandon treated groups av empty rader som individual ord; som är, kommando would flytta markör till each new empty rad. e och E kommandon treated groups av empty rader som en single ord; som är, första use would flytta past group av rader. b kommando would just beep at user, eller if done från start av rad som en rörelse kommando, fail i unexpected ways. If rader contained endast (eller ended med) <blank> tecken, w och W kommandon would just beep at user, E och e kommandon would treat group som en single ord, och B och b kommandon would treat rader som individual ord. för consistency och simplicity av specification, POSIX.1-2008 requires som alla vi kommandon treat groups av empty eller blank rader som en single entity, och som movement through rader ending med <blank> tecken vara consistent med other movements.

Historically, vi documentation indicated som någon nummer av double-quotes were skipped efter punctuation märken at mening boundaries; however, implementationer endast skipped single-quotes. POSIX.1-2008 requires both till vara skipped.

Historically, första och sista tecken i edit buffert were ord boundaries. denna historical practice är required av POSIX.1-2008.

Historically, vi attempted till update minimum nummer av kolumner på skärm possible, which could lead till misleading information vara displayed. POSIX.1-2008 makes no requirements other än som aktuell tecken vara entered är displayed correctly, leaving alla other decisions i denna area up till implementation.

Historically, rader were arbitrarily folded mellan kolumner av någon tecken som required multiple kolumn positions på skärm, med exception av tabs, which terminated at right-hand margin. POSIX.1-2008 permits former och requires latter. implementationer som do not arbitrarily break rader mellan kolumner av tecken som occupy multiple kolumn positions bör not permit markör till rest på en kolumn som does not contain någon part av en tecken.

historical vi had en problem i som alla movements were av buffert rader, not av visning eller skärm rader. denna är often right thing till do; för example, single rad movements, such som j

eller k , bör work på buffert rader. kommandon like dj , eller j. , där

. är en ändra kommando, endast make sense för buffert rader. It är not, however, right thing till do för skärm rörelse eller scrolling kommandon like <kontroll>-D, <kontroll>-F, och H . If fönster är fairly small, using buffert rader i dessa cases can result i completely random rörelse; för example, 1 <kontroll> -D can result i en completely ändrad skärm, utan någon overlap. denna är clearly not what user wanted. problem är even worse i skiftläge av H , L , och M kommandon—som they position markör at första non-<blank> av rad, they kan alla refer till samma location i large rader, och kommer att result i no movement at alla.

i addition, if rad är larger än skärm, using buffert rader can make it impossible till visning parts av rad—there är not någon kommandon som do not visning början av rad i historical vi , och if both början och slut av rad cannot vara på skärm at samma time, user suffers. Finally, page och half-page scrolling kommandon historically moved till första non-<blank> i new rad. If rad är approximately samma size som skärm, denna är inadequate because markör före och efter en <kontroll>-D kommando kommer att refer till samma location på skärm.

implementationer av ex och vi exist som do not have dessa problems because relevant kommandon (<kontroll>-B, <kontroll>-D, <kontroll>-F, <kontroll>-U, <kontroll>-Y, <kontroll>-E, H , L , och M)

operate på visning (skärm) rader, not (edit) buffert rader.

POSIX.1-2008 does not permit denna behavior av standard because standard developers believed som users would find it too confusing. However, historical practice has varit relaxed. för example, ex och vi historically attempted, albeit sometimes unsuccessfully, till never put part av en rad på sista rader av en skärm; för example, if en rad would not fit i its entirety, no part av rad was displayed, och skärm rader corresponding till rad contained single '@' tecken. denna behavior är permitted, but not required av POSIX.1-2008, so som it är possible för implementationer till support long rader i small screens more reasonably utan changing kommandon till vara oriented till visning (instead av oriented till buffert). POSIX.1-2008 also permits implementationer till refuse till edit någon edit buffert containing en rad som kommer att not fit på skärm i its entirety.

visning area (för example, värde av fönster edit option) has historically varit ``grown, eller expanded, till visning new text när local movements är done i displays där nummer av rader displayed är less än maximum possible. Expansion has historically varit första choice, när target rad är less än maximum possible expansion värde away. Scrolling has historically varit nästa choice, done när target rad är less än half en visning away, och otherwise, skärm was redrawn. There were exceptions, however, i som ex

kommandon generally always caused skärm till vara redrawn. POSIX.1-2008 does not specify en standard behavior because there kan vara external issues, such som connection speed, nummer av tecken necessary till redraw som opposed till scroll, eller terminal capabilities som implementationer kommer att have till accommodate.

aktuell rad i POSIX.1-2008 maps one-till-one till en buffert rad i fil. aktuell kolumn does not. There är two annan kolumn värden som är described av POSIX.1-2008. första är aktuell kolumn värde som set av many av vi kommandon. denna värde är ihågkommen för lifetime av redigerare. second kolumn värde är actual position på skärm där markör rests. two är not always samma. för example, när markör är backed av en multi-kolumn tecken, actual markör position på skärm has historically varit sista kolumn av tecken i kommando läge, och första kolumn av tecken i inmatning läge.

kommandon som set aktuell rad, but som do not set aktuell markör värde (för example, j och k ) attempt till get som close som possible till ihågkommen kolumn position, so som markör tends till restrict itself till en vertical kolumn som user moves around i edit buffert. POSIX.1-2008 requires conformance till historical practice, requiring som visning location av markör på visning rad vara adjusted från aktuell kolumn värde som necessary till support denna historical behavior.

Historically, endast en single rad (och för some terminals, en single rad minus 1 kolumn) av tecken could vara entered av user för rad-oriented kommandon; som är, : , ! , / , eller ? . POSIX.1-2008 permits, but does not require, denna limitation.

Historically, ``soft fel i vi caused terminal till vara alerted, but no fel meddelande was displayed. som en general rule, no fel meddelande was displayed för fel i kommando execution i

vi , när fel resulted från user attempting en ogiltig eller impossible action, eller när en searched-för object was not found. Examples av soft fel included h at left margin, <kontroll>-B eller at början av fil, 2G at slut av fil, och so på. i addition, fel such som % , , } , ) , N , n , f , F , t , och

T failing till find searched-för object were soft som well. Less consistently, / och ? displayed en fel meddelande if mönster was not found, / , ? , N , och n displayed en fel meddelande if no föregående regular expression had varit angiven, och ; did not visning en fel meddelande if no föregående f , F , t , eller T kommando had occurred. Also, behavior i denna area might reasonably vara based på en runtime evaluation av speed av en network connection. Finally, some implementationer have provided fel meddelanden för soft fel i order till assist naive users, based på värde av en verbose edit option. POSIX.1-2008 does not list specific fel för which en fel meddelande ska vara displayed. implementationer bör conform till historical practice i absence av någon strong reason till diverge.

Page Backwards

<kontroll>-B och <kontroll>-F kommandon historically considered it en fel till attempt till page past början eller slut av fil, whereas <kontroll>-D och <kontroll>-U kommandon simply moved till början eller slut av fil. för consistency, POSIX.1-2008 requires latter behavior för alla four kommandon. alla four kommandon still consider it en fel if aktuell rad är at början (<kontroll>-B, <kontroll>-U) eller slut (<kontroll>-F, <kontroll>-D) av fil. Historically, <kontroll>-B och <kontroll>-F kommandon skip two rader i order till include overlapping rader när en single kommando är entered. denna makes less sense i presence av en count , som there kommer att vara, av definition, no overlapping rader. actual calculation used av historical implementationer av vi redigerare för <kontroll>-B was:

((aktuell första rad) - count x (fönster edit option)) +2

and for <kontroll>-F was:

((aktuell första rad) + count x (fönster edit option)) -2

denna calculation does not work well när intermixing kommandon med och utan counts; för example, 3 <kontroll>-F är not equivalent till entering <kontroll>-F kommando three times, och är not reversible av entering <kontroll>-B kommando three times. för consistency med other vi kommandon som take counts, POSIX.1-2008 requires en annan calculation.

Scroll Forward

4BSD och System V implementationer av vi differed på initial värde used av scroll kommando. 4BSD used:

((fönster edit option) +1) /2

medan System V used värde av scroll edit option. System V version är angiven av POSIX.1-2008 because standard developers believed som it was more intuitive och permitted user en method av setting scroll värde initially utan also setting nummer av rader som är displayed.

Scroll Forward by rad

Historically, <kontroll>-E och <kontroll>-Y kommandon considered it en fel if sista och första rader, respectively, were already på skärm. POSIX.1-2008 requires conformance till historical practice. Historically, <kontroll>-E och <kontroll>-Y kommandon had no effect i open läge. för simplicity och consistency av specification, POSIX.1-2008 requires som they behave som usual, albeit med en single rad skärm.

Clear and Redisplay

historical <kontroll>-L kommando refreshed skärm exactly som it was supposed till vara currently displayed, replacing någon '@'

tecken för rader som had varit borttagen but not updated på skärm med refreshed '@' tecken. intent av <kontroll>-L kommando är till refresh när skärm has varit accidentally overwritten; för example, av en skriv kommando från another user, eller modem noise.

Redraw skärm

historical <kontroll>-R kommando redisplayed endast när necessary till update rader som had varit borttagen but not updated på skärm och som were flagged med '@' tecken. There är no requirement som skärm vara i någon way refreshed if no rader av denna form är currently displayed. POSIX.1-2008 permits implementationer till extend denna kommando till refresh rader på skärm flagged med '@' tecken because they är too long till vara displayed i aktuell framework; however, aktuell rad och kolumn need not vara modified.

sökning för tagstring

Historically, första non-<blank> at eller efter markör was första tecken, och alla subsequent tecken som were ord tecken, up till slut av rad, were included. för example, med markör på leading <mellanslag> eller på '#' tecken i text "#bar@" , tag was "#bar" . på tecken 'b' it was

"bar" , and on the 'a' it was "ar" . POSIX.1-2008 requires this behavior.

ersätt text med Results från skal kommando

Historically, < , > , och ! kommandon considered most markör rörelser other än rad-oriented rörelser en fel; för example, kommando >/foo<CR> succeeded, medan kommando >l failed, even though text område described av two kommandon might vara identical. för consistency, alla three kommandon endast consider entire rader och not partial rader, och område är defined som någon rad som contains en tecken som was angiven av rörelse.

flytta to matchande tecken

Other matchande tecken have varit left implementation-defined i order till allow extensions such som matchande '<' och '>' för searching HTML, eller #ifdef , #else , och #endif för searching C source.

upprepa substitution

POSIX.1-2008 requires som någon c och g flags angiven till föregående substitute kommando vara ignorerad; however, r flag kan still apply, if supported av implementation.

Return till föregående (Context eller avsnitt)

, , ( , ) , { , och } kommandon är alla påverkad av ``avsnitt boundaries, but i some historical implementationer not alla av kommandon recognize samma avsnitt boundaries. denna är en bug, not en feature, och en unique avsnitt-boundary algorithm was not described för each kommando. One special skiftläge som är preserved är som mening kommando moves till slut av sista rad av edit buffert medan other kommandon go till början, i order till preserve traditional tecken cut semantics av mening kommando. Historically, vi avsnitt boundaries at början och slut av edit buffert were första non-<blank> på första och sista rader av edit buffert if one exists; otherwise, sista tecken av första och sista rader av edit buffert if one exists. till increase consistency med other avsnitt locations, denna has varit simplified av POSIX.1-2008 till första tecken av första och sista rader av edit buffert, eller första och sista rader av edit buffert if they är empty.

mening boundaries were problematic i historical vi . They were not endast boundaries som defined för avsnitt och stycke kommandon, but they were första non-<blank> som occurred efter de boundaries, som well. Historically, vi

avsnitt kommandon were documented som taking en valfri fönster size som en count föregående kommando. denna was not implemented i historical versions, so POSIX.1-2008 requires som count

upprepa the kommando, for consistency with other vi kommandon.

upprepa

Historically, mapped kommandon other än text inmatning kommandon could not vara repeated using period kommando. POSIX.1-2008 requires conformance till historical practice.

restrictions på interpretation av special tecken (för example, <kontroll>-H) i repetition av text inmatning läge kommandon är intended till matcha historical practice. för example, given inmatning sequence:

iab<kontroll>-H<kontroll>-H<kontroll>-Hdef<escape>

user bör vara informed av en fel när sequence är första entered, but not during en kommando repetition. tecken <kontroll>-T är specifically exempted från denna restriction. Historical implementationer av vi ignorerad <kontroll>-T tecken som were inmatning i original kommando during kommando repetition. POSIX.1-2008 prohibits denna behavior.

Find Regular Expression

Historically, kommandon did not affect rad searched till eller från if rörelse kommando was en sökning ( / , ? , N , n ) och final position was start/slut av rad. There were some special cases och vi was not consistent. POSIX.1-2008 does not permit denna behavior, för consistency. Historical implementationer permitted but were unable till handle searches som rörelse kommandon som wrapped (som är, due till edit option wrapscan ) till original location. POSIX.1-2008 requires som denna behavior vara treated som en fel.

Historically, syntax "/RE/0" was used till force kommando till cut text i rad läge. POSIX.1-2008 requires conformance till historical practice.

Historically, i open läge, en z angiven till en sökning kommando redisplayed aktuell rad instead av displaying aktuell skärm med aktuell rad highlighted. för consistency och simplicity av specification, POSIX.1-2008 does not permit denna behavior.

Historically, trailing z kommandon were permitted och ignorerad if entered som part av en sökning used som en rörelse kommando. för consistency och simplicity av specification, POSIX.1-2008 does not permit denna behavior.

Execute an ex kommando

Historically, vi implementationer restricted kommandon som could vara entered på colon kommando rad (för example, lägg till

och ändra ), och some other kommandon were known till cause them till fail catastrophically. för consistency, POSIX.1-2008 does not permit dessa restrictions. när executing en ex kommando av entering : , it är not possible till enter en <nyrad> som part av kommando because it är considered slut av kommando. en annan approach är till enter ex kommando läge av using vi

Q

kommando (och later resuming visuellt läge med ex

vi kommando). i ex kommando läge, single-rad limitation does not exist. So, för example, följande är giltig:

Q s/break here/break\ here/ vi

POSIX.1-2008 requires som, if ex kommando overwrites någon part av skärm som would vara erased av en refresh, vi pauses för en tecken från user. Historically, denna tecken could vara någon tecken; för example, en tecken inmatning av user före meddelande appeared, eller even en mapped tecken. denna är probably en bug, but implementationer som have tried till vara more rigorous av requiring som user enter en specific tecken, eller som user enter en tecken efter meddelande was displayed, have varit forced av user indignation back into historical behavior. POSIX.1-2008 requires conformance till historical practice.

Shift Left (Right)

Refer till Rationale för ! och / kommandon. Historically, < och > kommandon sometimes moved markör till första non-<blank> (för example if kommando was repeated eller med _ som rörelse kommando), och sometimes left it unchanged. POSIX.1-2008 does not permit denna inconsistency, requiring instead som markör always flytta till första non-<blank>. Historically, <

och > kommandon did not support buffert argument, although some implementationer allow specification av en valfri buffert. denna behavior är neither required nor disallowed av POSIX.1-2008.

Execute

Historically, buffertar could execute other buffertar, och loops, infinite och otherwise, were possible. POSIX.1-2008 requires conformance till historical practice. * buffert syntax av ex är not required i vi , because it är not historical practice och has varit used i some vi implementationer till support additional scripting languages.

Reverse skiftläge

Historically, ~ kommando ignorerad någon kopplad count , och acted endast på tecken i aktuell rad. för consistency med other vi kommandon, POSIX.1-2008 requires som en kopplad

count act på nästa count tecken, och som kommando flytta till subsequent rader if warranted av count , till make it possible till modify large pieces av text i en reasonably efficient manner. There exist vi implementationer som optionally require en kopplad rörelse kommando för ~ kommando. implementationer supporting denna functionality är encouraged till base it på

tildedop edit option och handle text regions och markör positioning identically till yank kommando.

lägg till

Historically, count s angiven till en , en , I , och i kommandon repeated inmatning av första rad count times, och did not upprepa subsequent rader av inmatning text. POSIX.1-2008 requires som entire text inmatning vara repeated count times.

flytta Backward till föregående ord

Historically, vi became confused if ord kommandon were used som rörelse kommandon i empty filer. POSIX.1-2008 requires som denna vara en fel. Historical implementationer av vi had en large nummer av bugs i ord movement kommandon, och they varied greatly i behavior i presence av empty rader, ``ord made up av en single tecken, och rader containing endast <blank> tecken. för consistency och simplicity av specification, POSIX.1-2008 does not permit denna behavior.

ändra till slut-av-rad

Some historical implementationer av C kommando did not behave som described av POSIX.1-2008 när $ key was remapped because they were implemented av pushing $ key onto inmatning queue och reprocessing it. POSIX.1-2008 does not permit denna behavior. Historically, C , S , och s kommandon did not kopiera replaced text into numeric buffertar. för consistency och simplicity av specification, POSIX.1-2008 requires som they behave like their respective c kommandon i alla respects.

ta bort

Historically, rader i open läge som were borttagen were scrolled up, och en @ glyph skriven over början av rad. i skiftläge av terminals som är incapable av necessary markör rörelser, redigerare erased borttagen rad från skärm. POSIX.1-2008 requires conformance till historical practice; som är, if terminal cannot visning '@' tecken, rad cannot remain på skärm.

ta bort to slut-of-rad

Some historical implementationer av D kommando did not behave som described av POSIX.1-2008 när $ key was remapped because they were implemented av pushing $ key onto inmatning queue och reprocessing it. POSIX.1-2008 does not permit denna behavior.

Join

An historical oddity of vi is that the kommandon J , 1J , and 2J are alla equivalent. POSIX.1-2008 requires conformance to historical practice. The vi

J kommando is angiven in terms of the ex

join

kommando med en ex kommando count värde. adress correction för en count som är past slut av edit buffert är necessary för historical compatibility för both ex och vi .

märke Position

Historical practice är som endast lowercase letters, plus backquote och single-quote, could vara used till märke en markör position. POSIX.1-2008 requires conformance till historical practice, but encourages implementationer till support other tecken som märken som well.

upprepa Regular Expression Find (Forward and Reverse)

Historically, N och n kommandon could not vara used som rörelse components för c kommando. med exception av cN

kommando, which worked if sökning crossed en rad boundary, text område would vara discarded, och user would not vara i text inmatning läge. för consistency och simplicity av specification, POSIX.1-2008 does not permit denna behavior.

infoga Empty rad (Below and Above)

Historically, counts to the O and o kommandon were used as the nummer of physical rader to open, if the terminal was dumb and the

slowopen option was not set. denna was intended till minimize traffic over slow connections och repainting för dumb terminals. POSIX.1-2008 does not permit denna behavior, requiring som en count

till open kommando behave som för other text inmatning kommandon. denna ändra till historical practice was made för consistency, och because en superset av functionality är provided av

slowopen edit option.

Put från buffert (följande och före)

Historically, count s till p och P kommandon were ignorerad if buffert was en rad läge buffert, but were (mostly) implemented som described i POSIX.1-2008 if buffert was en tecken läge buffert. Because implementationer exist som do not have denna limitation, och because pasting rader multiple times är generally useful, POSIX.1-2008 requires som count vara supported för alla p

and P kommandon.

Historical implementationer av vi were widely known till have major problems i p och P kommandon, particularly när unusual regions av text were copied into edit buffert. standard developers viewed dessa som bugs, och they är not permitted för consistency och simplicity av specification.

Historically, a P or p kommando (or an ex

put kommando executed från open eller visuellt läge) executed i en empty fil, left en empty rad som första rad av fil. för consistency och simplicity av specification, POSIX.1-2008 does not permit denna behavior.

ersätt tecken

Historically, the r kommando did not correctly handle the erase and

ord erase tecken som argument, nor did it handle en kopplad count greater än 1 med en <carriage-return> argument, för which it replaced count tecken med en single <nyrad>. POSIX.1-2008 does not permit dessa inconsistencies.

Historically, r kommando permitted <kontroll>-V escaping av entered tecken, such som <ESC> och <carriage-return>; however, it required two leading <kontroll>-V tecken instead av one. POSIX.1-2008 requires som denna vara ändrad för consistency med other text inmatning kommandon av vi .

Historically, it är en fel till enter r kommando if there är less än count tecken at eller efter markör i rad. medan en reasonable och unambiguous extension would vara till permit r kommando på empty rader, it would require som too large en

count vara adjusted till matcha nummer av tecken at eller efter markör för consistency, which är sufficiently annan från historical practice till vara avoided. POSIX.1-2008 requires conformance till historical practice.

ersätt tecken

Historically, if there were autoindent tecken i rad på which R kommando was run, och autoindent was set, första <nyrad> would vara properly indented och no tecken would vara replaced av <nyrad>. Each additional <nyrad> would ersätt n tecken, där n was nummer av tecken som were needed till indent rest av rad till proper indentation level. denna behavior är en bug och är not permitted av POSIX.1-2008.

Undo

Historical practice för markör positioning efter undoing kommandon was mixed. i most cases, när undoing kommandon som påverkad en single rad, markör was moved till start av added eller ändrad text, eller immediately efter borttagen text. However, if user had moved från rad vara ändrad, kolumn was either set till första non-<blank>, returned till origin av kommando, eller remained unchanged. när undoing kommandon som påverkad multiple rader eller entire rader, markör was moved till första tecken i första rad restored. som en example av how inconsistent denna was, en sökning, followed av en o text inmatning kommando, followed av en

undo would return markör till location där o kommando was entered, but en cw kommando followed av en o kommando followed av en undo would return markör till första non-<blank> av rad. POSIX.1-2008 requires most useful av dessa behaviors, och discards least useful, i interest av consistency och simplicity av specification.

Yank

Historically, yank kommando did not flytta till slut av rörelse if rörelse was i forward direction. It moved till slut av rörelse if rörelse was i backward direction, except för _ kommando, eller för G och ' kommandon när slut av rörelse was på aktuell rad. denna was further complicated av fact som för en nummer av rörelse kommandon,

yank kommando moved markör but did not update skärm; för example, en subsequent kommando would flytta markör från slut av rörelse, even though markör på skärm had not reflected markör movement för yank kommando. POSIX.1-2008 requires som alla yank kommandon kopplad med backward rörelser flytta markör till slut av rörelse för consistency, och specifically, till make ' kommandon som rörelser consistent med sökning patterns som rörelser.

Yank aktuell rad

Some historical implementationer av Y kommando did not behave som described av POSIX.1-2008 när '_' key was remapped because they were implemented av pushing '_' key onto inmatning queue och reprocessing it. POSIX.1-2008 does not permit denna behavior.

Redraw fönster

Historically, z kommando always redrew skärm. denna är permitted but not required av POSIX.1-2008, because av frequent use av z kommando i macros such som map n nz. för skärm positioning, instead av its use till ändra skärm size. standard developers believed som expanding eller scrolling skärm offered en better interface för users. ability till redraw skärm är preserved if valfri new fönster size är angiven, och i <kontroll>-L och <kontroll>-R kommandon.

semantics av z^ är confusing at best. Historical practice är som skärm före skärm som ended med angiven rad är displayed. POSIX.1-2008 requires conformance till historical practice.

Historically, z kommando would not visning en partial rad at top eller bottom av skärm. If partial rad would normally have varit displayed at bottom av skärm, kommando worked, but partial rad was replaced med '@'

tecken. If partial rad would normally have varit displayed at top av skärm, kommando would fail. för consistency och simplicity av specification, POSIX.1-2008 does not permit denna behavior.

Historically, z kommando med en rad specification av 1 ignorerad kommando. för consistency och simplicity av specification, POSIX.1-2008 does not permit denna behavior.

Historically, z kommando did not set markör kolumn till första non-<blank> för tecken if första skärm was till vara displayed, och was already displayed. för consistency och simplicity av specification, POSIX.1-2008 does not permit denna behavior.

Kommandon för inmatningsläge i vi

Historical implementationer av vi did not permit user till erase more än en single rad av inmatning, eller till use normal erase tecken such som rad erase , worderase , och erase till erase

autoindent tecken. som there exist implementationer av vi som do not have dessa limitations, both behaviors är permitted, but endast historical practice är required. i skiftläge av dessa extensions, vi är required till pause at autoindent och föregående rad boundaries.

Historical implementationer av vi updated endast portion av skärm där aktuell markör tecken was displayed. för example, consider vi inmatning keystrokes:

iabcd<escape>0C<tabb>

Historically, <tabb> would overwrite tecken "abcd" när it was displayed. Other implementationer ersätt endast 'en'

tecken med <tabb>, och then push rest av tecken ahead av markör. Both implementationer have problems. historical implementation är probably visually nicer för above example; however, för keystrokes:

iabcd<ESC>0R<tabb><ESC>

the historical implementation results in the string "bcd"

disappearing och then magically reappearing när <ESC> tecken är entered. POSIX.1-2008 requires former behavior när overwriting erase-kolumner—som är, overwriting tecken som är no longer logically part av edit buffert—och latter behavior otherwise.

Historical implementationer av vi discarded <kontroll>-D och <kontroll>-T tecken när they were entered at places där their kommando functionality was not appropriate. POSIX.1-2008 requires som <kontroll>-T functionality always vara tillgänglig, och som <kontroll>-D vara treated som någon other key när not operating på autoindent tecken.

NUL

Some historical implementationer av vi limited nummer av tecken entered using NUL inmatning tecken till 256 bytes. POSIX.1-2008 permits denna limitation; however, implementationer är encouraged till remove denna limit.

<kontroll>-D

See also Rationale för inmatning läge kommando <nyrad>. hidden assumptions i <kontroll>-D kommando (och i vi

autoindent specification i general) är som <mellanslag> tecken take up en single kolumn på skärm och som <tabb> tecken är comprised av en integral nummer av <mellanslag> tecken.

<nyrad>

implementationer är permitted till rewrite autoindent tecken i rad när <nyrad>, <carriage-return>, <kontroll>-D, och <kontroll>-T är entered, eller när shift kommandon är used, because historical implementationer have both done so och found it necessary till do so. för example, en <kontroll>-D när markör är preceded av en single <tabb>, med tabstop set till 8, och shiftwidth

set to 3, kommer att result in the <tabb> being replaced by several <mellanslag> tecken.

<kontroll>-T

See also Rationale för inmatning läge kommando <nyrad>. Historically, <kontroll>-T endast worked if no non-<blank> tecken had yet varit inmatning i aktuell inmatning rad. i addition, tecken inserted av <kontroll>-T were treated som autoindent

tecken, och could not vara erased using normal user erase tecken. Because implementationer exist som do not have dessa limitations, och som moving till en kolumn boundary är generally useful, POSIX.1-2008 requires som both limitations vara removed.

<kontroll>-V

Historically, vi used ^V , regardless av värde av literal- nästa tecken av terminal. POSIX.1-2008 requires conformance till historical practice.

uses described för <kontroll>-V can also vara accomplished med <kontroll>-Q, which är useful på terminals som use <kontroll>-V för down-arrow function. However, most historical implementationer use <kontroll>-Q för termios START tecken, so redigerare kommer att generally not receive <kontroll>-Q unless stty ixon läge är set till off. (i addition, some historical implementationer av vi

explicitly set ixon läge till på, so it was difficult för user till set it till off.) någon av kommando tecken described i POSIX.1-2008 can vara made ineffective av their selection som termios

kontroll tecken, using the stty verktyg or other methods described in the System Interfaces volume of POSIX.1-2017.

<ESC>

Historically, SIGINT alerted terminal när used till slut inmatning läge. denna behavior är permitted, but not required, av POSIX.1-2008.

FRAMTIDA RIKTNINGAR

Inget.

SE ÄVEN

ed(1p) , ex(1p) , stty(1p)

The Base Definitions volume of POSIX.1-2017, avsnitt 12.2 , verktyg

Syntax Guidelines

COPYRIGHT

Portions av denna text är reprinted och reproduced i electronic form från IEEE Std 1003.1-2017, standard för Information Technology -- Portable Operating System Interface (POSIX), open Group Base Specifications Issue 7, 2018 Edition, Copyright (C) 2018 av Institute av Electrical och Electronics Engineers, Inc och open Group. i event av någon discrepancy mellan denna version och original IEEE och open Group standard, original IEEE och open Group standard är referee document. original standard can vara obtained online at

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

någon typographical eller formatting fel som appear i denna page är most likely till have varit introduced during conversion av source filer till man page format. till report such fel, see

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

IEEE/The open Group 2017 VI (1P)

PRAKTISK KOMMANDOÖVERSIKT

Detta avsnitt är tillagt som hjälp och ersätter inte POSIX-texten ovan.

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 och höger
x Ta bort tecken
dd Ta bort rad
yy Kopiera rad
p Klistra in efter markören eller raden
/mönster Sök framåt
?mönster Sök bakåt
:w Spara
:q Avsluta
:q! Avsluta utan att spara
:wq Spara och avsluta