EngelsFransSpaans

Ad


OnWorks-favicon

exposix - Online in de cloud

Voer exposix uit in de gratis hostingprovider van OnWorks via Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator

Dit is de opdracht exposix die kan worden uitgevoerd in de gratis hostingprovider van OnWorks met behulp van een van onze meerdere gratis online werkstations zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator

PROGRAMMA:

NAAM


ex - teksteditor

KORTE INHOUD


ex [−rR] [−s|−v] [c commando] [t tagtekenreeks] [w grootte] [filet...]

PRODUCTBESCHRIJVING


De ex hulpprogramma is een lijngeoriënteerde teksteditor. Er zijn twee andere modi van de editor—
open en visueel - waarin schermgeoriënteerd bewerken beschikbaar is. Dit wordt meer beschreven
volledig door de ex open en visuele commando's en in vi.

Als een operand is '−', de resultaten zijn niet gespecificeerd.

In dit gedeelte wordt de term gebruikt Bewerk buffer om de huidige werktekst te beschrijven. Geen specifiek
implementatie wordt geïmpliceerd door deze term. Alle bewerkingswijzigingen worden uitgevoerd op de bewerking
buffer, en wijzigingen daarin zullen geen invloed hebben op een bestand totdat een bewerkingscommando het
bestand.

Bepaalde terminals hebben niet alle mogelijkheden die nodig zijn om het volledige ex
definitie, zoals de commando's voor bewerken op volledig scherm (visuele mode or open mode). Wanneer
deze commando's kunnen niet worden ondersteund op dergelijke terminals, deze voorwaarde zal geen
foutmelding zoals ``geen bewerkingsopdracht'' of rapporteer een syntaxisfout. De
implementatie kan ofwel de opdrachten accepteren en resultaten op het scherm produceren die dat wel zijn
het resultaat van een mislukte poging om te voldoen aan de vereisten van dit deel van
POSIX.1-2008 of rapporteer een fout die de terminalgerelateerde tekortkoming beschrijft.

OPTIES


De ex hulpprogramma zal voldoen aan het Base Definitions-volume van POSIX.1‐2008, sectie 12.2,
utility Syntaxis Richtlijnen, met uitzondering van het niet-gespecificeerde gebruik van '−'En dat '+' kan zijn
ook herkend als optiescheidingsteken '−'.

De volgende opties worden ondersteund:

c commando
Geef een initiële opdracht op die moet worden uitgevoerd in de eerste bewerkingsbuffer waaruit wordt geladen
een bestaand bestand (zie het gedeelte UITGEBREIDE BESCHRIJVING). Uitvoeringen mogen
ondersteuning van meer dan één c keuze. In dergelijke implementaties, de opgegeven
opdrachten worden uitgevoerd in de volgorde die op de opdrachtregel is opgegeven.

r Herstel de benoemde bestanden (zie het gedeelte UITGEBREIDE BESCHRIJVING). Herstel
informatie voor een bestand wordt opgeslagen tijdens een editor- of systeemcrash (bijv
bijvoorbeeld wanneer de editor wordt beëindigd door een signaal dat de editor kan opvangen),
of na het gebruik van een ex behouden opdracht.

A neerstorten in deze context is een onverwachte storing van het systeem of hulpprogramma dat
vereist het herstarten van het defecte systeem of hulpprogramma. Een systeemcrash impliceert dat
alle hulpprogramma's die op dat moment worden uitgevoerd, crashen ook. In het geval van een editor of systeem
crash, het aantal wijzigingen in de bewerkingsbuffer (sinds de meest recente behouden
commando) dat zal worden hersteld, is niet gespecificeerd.

Zo nee filet operanden worden gegeven en de t optie is niet opgegeven, alle andere
opties, de UITGANG variabel, en elke .exrc bestanden worden genegeerd; een lijst van
alle herstelbare bestanden die beschikbaar zijn voor de aanroepende gebruiker zullen worden geschreven, en de
editor zal normaal afsluiten zonder verdere actie.

R Zet de alleen lezen optie bewerken.

s Voorbereiden ex voor batchgebruik door de volgende acties uit te voeren:

* Onderdruk schrijfprompts en informatieve (maar niet diagnostische) berichten.

* Negeer de waarde van TERMIJN en elk implementatie standaard terminaltype en
neem aan dat de terminal een type is dat geen open of visuele modi kan ondersteunen;
zie visuele commando en de beschrijving van vi.

* Onderdruk het gebruik van de UITGANG omgevingsvariabele en het lezen van elke
.exrc bestand; zie het gedeelte UITGEBREIDE BESCHRIJVING.

* Onderdruk automatische inspringing en negeer de waarde van de automatisch inspringen optie bewerken.

t tagtekenreeks
Bewerk het bestand met het opgegeven tagtekenreeks; zien ctags. De tags-functie
vertegenwoordigd door t tagtekenreeks en label opdracht is optioneel. Het zal zijn
geleverd op elk systeem dat ook een conforme implementatie biedt van ctags;
anders het gebruik van t levert ongedefinieerde resultaten op. Op elk systeem zal het zijn
een fout om meer dan één op te geven t optie.

v Begin in de visuele modus (zie vi).

w grootte Stel de waarde van de venster editor optie om grootte.

OPERANDEN


De volgende operand wordt ondersteund:

filet Een padnaam van een te bewerken bestand.

STDIN


De standaard invoer bestaat uit een reeks commando's en invoertekst, zoals beschreven in de
UITGEBREIDE BESCHRIJVING sectie. De implementatie kan elke regel standaardinvoer beperken tot
een lengte van {LINE_MAX}.

Als de standaardinvoer geen eindapparaat is, zal het zijn alsof de s optie was geweest
gespecificeerd.

Als een lezing van de standaardinvoer een fout retourneert, of als de editor een einde van de
bestandsvoorwaarde van de standaardinvoer, zal het gelijk zijn aan een SIGHUP asynchroon
evenement.

INVOER FILES


Invoerbestanden zijn tekstbestanden of bestanden die tekstbestanden zouden zijn, behalve een onvolledig bestand
laatste regel die niet langer is dan {LINE_MAX}−1 bytes lang en geen NUL bevat
karakters. Elke onvolledige laatste regel wordt standaard behandeld alsof deze een einde heeft
. Het bewerken van andere vormen van bestanden kan eventueel worden toegestaan ​​door ex
implementaties.

De .exrc bestanden en bronbestanden zijn tekstbestanden bestaande uit ex commando's; zie de
UITGEBREIDE BESCHRIJVING sectie.

Standaard leest de editor regels uit de te bewerken bestanden zonder te interpreteren
elk van die regels als elke vorm van editorcommando.

MILIEU VARIABELEN


De volgende omgevingsvariabelen zijn van invloed op de uitvoering van: ex:

COLUMNS Negeer de door het systeem geselecteerde horizontale schermgrootte. Zie de basisdefinities
volume van POSIX.1‐2008, Hoofdstuk 8, Milieu Variabelen voor geldige waarden en
resultaten wanneer deze niet is ingesteld of null is.

UITGANG Bepaal een lijst van ex commando's die worden uitgevoerd bij het opstarten van de editor. Zie de
UITGEBREIDE BESCHRIJVING voor meer informatie over de initialisatiefase.

HOME Bepaal een padnaam van een map die moet worden doorzocht voor een editor start-
up-bestand met de naam .exrc; zie het gedeelte UITGEBREIDE BESCHRIJVING.

TAAL Geef een standaardwaarde op voor de internationaliseringsvariabelen die niet zijn ingesteld of
nul. (Zie het volume Basisdefinities van POSIX.1‐2008, sectie 8.2,
internationalisering Variabelen voor de prioriteit van internationalisering
variabelen die worden gebruikt om de waarden van landinstellingen te bepalen.)

LC_ALL Indien ingesteld op een niet-lege tekenreekswaarde, overschrijf dan de waarden van alle andere
internationaliseringsvariabelen.

LC_COLLATE
Bepaal de landinstelling voor het gedrag van bereiken, equivalentieklassen en multi-
karakterverzamelingselementen binnen reguliere expressies.

LC_CTYPE Bepaal de landinstelling voor de interpretatie van reeksen bytes tekstgegevens
als tekens (bijvoorbeeld single-byte in plaats van multi-byte tekens in
argumenten en invoerbestanden), het gedrag van tekenklassen binnen reguliere
uitdrukkingen, de classificatie van tekens als hoofdletters of kleine letters,
de hoofdletterconversie van letters en de detectie van woordgrenzen.

LC_MESSAGES
Bepaal de landinstelling die moet worden gebruikt om het formaat en de inhoud van te beïnvloeden
diagnostische berichten geschreven naar standaardfout.

LIJNEN Negeer de door het systeem geselecteerde verticale schermgrootte, gebruikt als het aantal regels
in een schermvol en de verticale schermgrootte in visuele modus. Zie de basis
Definities volume van POSIX.1‐2008, Hoofdstuk 8, Milieu Variabelen voor geldig
waarden en resultaten wanneer deze niet is ingesteld of null is.

NLSPAT Bepaal de locatie van berichtencatalogi voor de verwerking van: LC_MESSAGES.

PATH Bepaal het zoekpad voor de shell-opdracht die is opgegeven in de ex editor
commando's !, schelp, dit artikel lezen en schrijven, en de opdracht open en visuele modus !; zien
de beschrijving van het zoeken en uitvoeren van opdrachten in sectie 2.9.1.1, commando
Ontdek en Uitvoering.

SHELL Bepaal de gewenste opdrachtregelinterpreter voor gebruik als de standaardwaarde van
de schelp optie bewerken.

TERMIJN Bepaal de naam van het terminaltype. Als deze variabele niet is ingesteld of null is, an
niet-gespecificeerd standaard terminaltype wordt gebruikt.

ASYNCHROON EVENEMENTEN


De volgende term wordt in deze en volgende secties gebruikt om opdracht en aan te geven
asynchrone gebeurtenisacties:

compleet schrijven
Een volledige schrijfbewerking is een schrijfbewerking van de volledige inhoud van de bewerkingsbuffer naar een bestand
van een ander type dan een eindapparaat, of het opslaan van de bewerkingsbuffer veroorzaakt
door de gebruiker die de ex behouden commando. Het schrijven van de inhoud van de bewerking
buffer naar een tijdelijk bestand dat wordt verwijderd wanneer de editor wordt afgesloten, niet
worden beschouwd als een volledig schrijven.

Bij ontvangst van signalen worden de volgende acties ondernomen:

SIGINT Als de standaardingang geen eindapparaat is, ex schrijft het bestand niet of
keert terug naar commando- of tekstinvoermodus en sluit af met een uitgang die niet gelijk is aan nul
statuut.

Anders, als u een open of visuele tekstinvoermodusopdracht uitvoert, ex in recept
van SIGINT gedraagt ​​zich identiek aan de ontvangst van de karakter.

Anders:

1. Bij het uitvoeren van een ex opdracht voor tekstinvoermodus, alle invoerregels die zijn ingevoerd
volledig ingevoerd wordt omgezet in de bewerkingsbuffer, en alle gedeeltelijk
ingevoerde regel wordt weggegooid.

2. Als er momenteel een opdracht wordt uitgevoerd, wordt deze afgebroken en wordt een bericht weergegeven
weergegeven. Tenzij anders aangegeven door de ex or vi commando beschrijvingen,
het is niet gespecificeerd of er regels verschijnen die zijn gewijzigd door de uitvoerende opdracht
gewijzigd, of zoals ze waren voordat ze werden gewijzigd door de uitvoerende opdracht, in
de buffer.

Als de momenteel uitgevoerde opdracht een bewegingsopdracht was, is deze gekoppeld
commando wordt weggegooid.

3. In de open of visuele commandomodus wordt de terminal gewaarschuwd.

4. De redacteur keert dan terug naar de opdrachtmodus.

SIGCONT Het scherm wordt vernieuwd in de open of visuele modus.

SIGHUP Als de bewerkingsbuffer is gewijzigd sinds de laatste volledige schrijfbewerking, ex zal
probeer de bewerkingsbuffer op te slaan zodat deze later kan worden hersteld met behulp van de r
optie of de ex herstellen commando. De redacteur zal het bestand niet schrijven of retourneren
naar commando- of tekstinvoermodus, en zal eindigen met een uitgangsstatus die niet gelijk is aan nul.

SIGTERM Zie SIGHUP.

De actie die wordt ondernomen voor alle andere signalen is niet gespecificeerd.

STDOUT


De standaarduitvoer wordt alleen gebruikt voor het schrijven van prompts aan de gebruiker, ter informatie
berichten, en voor het schrijven van regels uit het bestand.

STDERR


De standaardfout wordt alleen gebruikt voor diagnostische berichten.

OUTPUT FILES


De output van ex zullen tekstbestanden zijn.

UITGEBREID PRODUCTBESCHRIJVING


Alleen de ex modus van de editor wordt in deze sectie beschreven. Zien vi voor extra redactie
capaciteiten beschikbaar in ex.

Wanneer er een fout optreedt, ex zal een bericht schrijven. Als de terminal een opvallende modus ondersteunt
(zoals inverse video), wordt het bericht geschreven in opvallende modus. Als de terminal
ondersteunt geen opvallende modus en de bewerkingsoptie foutbellen is ingesteld, een waarschuwingsactie
moet voorafgaan aan de foutmelding.

Standaard ex start in de commandomodus, wat wordt aangegeven met een : snel; zien
de prompt commando. De tekstinvoermodus kan worden geactiveerd door de toevoegen, invoegenof verandering
commando's; het kan worden afgesloten (en de commandomodus opnieuw worden ingevoerd) door a te typen ('') alleen
aan het begin van een regel.

initialisatie in ex en vi
De volgende symbolen worden in deze en volgende secties gebruikt om locaties in de
bewerkingsbuffer:

afwisselend en actueel padnamen
Twee padnamen, named actueel en afwisselend, worden onderhouden door de redactie. Elk ex
commando's die bestandsnamen als argumenten nemen, stellen ze als volgt in:

1. Als een filet argument is opgegeven voor de ex Bewerk, exof herstellen commando's, of als
an ex label opdracht vervangt de inhoud van de bewerkingsbuffer.

A. Als de opdracht de inhoud van de bewerkingsbuffer vervangt, wordt de current
padnaam wordt ingesteld op de filet argument of het bestand aangegeven door de tag,
en de alternatieve padnaam wordt ingesteld op de vorige waarde van de huidige
padnaam.

B. Anders wordt de alternatieve padnaam ingesteld op de filet argument.

2. Als een filet argument is opgegeven voor de ex volgende opdracht:

A. Als de opdracht de inhoud van de bewerkingsbuffer vervangt, wordt de current
padnaam wordt ingesteld op de eerste filet argument en de alternatieve padnaam
wordt ingesteld op de vorige waarde van de huidige padnaam.

3. Als een filet argument is opgegeven voor de ex filet opdracht, de huidige padnaam
wordt ingesteld op de filet argument, en de alternatieve padnaam wordt ingesteld op
de vorige waarde van de huidige padnaam.

4. Als een filet argument is opgegeven voor de ex dit artikel lezen en schrijven commando's (dat wil zeggen, wanneer
lezen of schrijven van een bestand, en niet naar het programma genoemd door de schelp Bewerk
optie), of een filet argument is opgegeven voor de ex raken opdracht:

A. Als de huidige padnaam geen waarde heeft, wordt de huidige padnaam ingesteld op
de filet argument.

B. Anders wordt de alternatieve padnaam ingesteld op de filet argument.

Als de alternatieve padnaam is ingesteld op de vorige waarde van de huidige padnaam wanneer
de huidige padnaam had geen eerdere waarde, dan zal de alternatieve padnaam die hebben
daardoor geen waarde.

actueel lijn
De regel van de bewerkingsbuffer waarnaar wordt verwezen door de cursor. Elke opdrachtbeschrijving
specificeert de huidige regel nadat de opdracht is uitgevoerd, als de actueel lijn
waarde. Als de bewerkingsbuffer geen regels bevat, is de huidige regel nul; zien
Het aanpakken in ex.

actueel kolom
De kolom van de huidige weergaveregel die wordt ingenomen door de cursor. (De kolommen zijn
genummerd beginnend bij 1.) Elke opdrachtbeschrijving specificeert de huidige kolom
nadat de opdracht is uitgevoerd, als de actueel kolom waarde. Deze kolom is een
ideaal kolom die gedurende de levensduur van de editor wordt onthouden. De eigenlijke weergave
regel kolom waarop de cursor rust kan verschillen van de huidige kolom;
zie de discussie over cursorpositionering in commando beschrijvingen in vi.

reeks naar niet-
Een beschrijving voor een huidige kolomwaarde, wat betekent dat de huidige kolom zal zijn
ingesteld op de laatste kolom van de weergaveregel waarop een deel van de eerste wordt weergegeven
niet- van de lijn. Als de lijn geen niet- niet- karakters,
de huidige kolom wordt ingesteld op de laatste kolom van de weergaveregel waarop staat
enig deel van de laatste niet- karakter in de lijn. Als de lijn is
leeg is, wordt de huidige kolom ingesteld op kolompositie 1.

De lengte van regels in de bewerkingsbuffer kan beperkt zijn tot {LINE_MAX} bytes. Bij open en
visuele modus kan de lengte van regels in de bewerkingsbuffer worden beperkt tot het aantal
tekens die op het scherm passen. Als een van beide limieten wordt overschreden tijdens het bewerken, wordt een
foutbericht wordt geschreven. Als een van beide limieten wordt overschreden door een regel die is ingelezen uit een bestand,
er wordt een foutmelding geschreven en de bewerkingssessie kan worden beëindigd.

Als de editor stopt met werken vanwege een andere reden dan een gebruikerscommando, en het bestand edit
buffer is gewijzigd sinds de laatste volledige schrijfbewerking, is dit gelijk aan een SIGHUP
asynchrone gebeurtenis. Als het systeem crasht, is het gelijk aan een SIGHUP asynchroon
evenement.

Tijdens de initialisatie (voordat het eerste bestand wordt gekopieerd naar de bewerkingsbuffer of een gebruiker
commando's van de terminal worden verwerkt) gebeurt het volgende:

1. Als de omgevingsvariabele UITGANG is ingesteld, voert de editor de ex commando's
opgenomen in die variabele.

2. Indien de UITGANG variabele is niet ingesteld en al het volgende is waar:

a. Het HOME omgevingsvariabele is niet null en niet leeg.

B. Het bestand .exrc in de directory waarnaar wordt verwezen door de HOME omgevingsvariabele:

i. bestaat

ii. Is eigendom van hetzelfde gebruikers-ID als het echte gebruikers-ID van het proces of de
proces heeft de juiste rechten

iii. Is niet beschrijfbaar door iemand anders dan de eigenaar

de redacteur voert de ex opdrachten in dat bestand.

3. Als en alleen als alle volgende punten waar zijn:

A. Er wordt niet naar de huidige map verwezen door de HOME variabele omgeving.

B. Een opdracht in de UITGANG omgevingsvariabele of een opdracht in de .exrc bestand in de
directory waarnaar wordt verwezen door de HOME omgevingsvariabele stelt de editoroptie in
uitg.

c. Het .exrc bestand in de huidige directory:

i. bestaat

ii. Is eigendom van dezelfde gebruikers-ID als de echte gebruikers-ID van het proces, of van een van de
een set door de implementatie gedefinieerde gebruikers-ID's

iii. Is niet beschrijfbaar door iemand anders dan de eigenaar

de redacteur zal proberen het uit te voeren ex opdrachten in dat bestand.

Lijnen in elk .exrc bestanden die lege regels zijn, worden genegeerd. Indien van toepassing .exrc Bestand bestaat,
maar niet wordt gelezen om redenen van eigendom of toestemming, is het een fout.

Na het UITGANG variabel en elk .exrc bestanden worden verwerkt, wordt het eerste bestand gespecificeerd door
de gebruiker wordt als volgt bewerkt:

1. Als de gebruiker het t optie, zal het effect zijn alsof de ex label opdracht was
ingevoerd met het opgegeven argument, met de uitzondering dat als tagverwerking dat doet
niet resulteren in een bestand om te bewerken, zal het effect zijn zoals beschreven in stap 3. hieronder.

2. Anders, als de gebruiker een opdrachtregel heeft opgegeven filet argumenten, het effect zal zijn
alsof de ex Bewerk opdracht is ingevoerd met de eerste van die argumenten als zijn filet
argument.

3. Anders is het effect alsof de ex Bewerk opdracht is ingevoerd met een
niet-bestaande bestandsnaam als zijn filet argument. Het is niet gespecificeerd of deze actie zal
stel de huidige padnaam in. In een implementatie waar deze actie niet het
huidige padnaam, zal elk editorcommando dat de huidige padnaam gebruikt, mislukken totdat een
editor commando stelt de huidige padnaam in.

Indien de r optie is opgegeven, de eerste keer dat een bestand in de initiële lijst met argumenten of een
bestand gespecificeerd door de t optie wordt bewerkt, als er eerder herstelinformatie is geweest
erover opgeslagen, zal die informatie worden hersteld en zal de redacteur zich gedragen alsof de
inhoud van de bewerkingsbuffer is al gewijzigd. Als er meerdere exemplaren van zijn
het bestand dat moet worden hersteld, het laatst opgeslagen bestand zal worden hersteld, en een
informatief bericht dat er eerdere versies van het bestand zijn die kunnen worden hersteld
zal worden geschreven. Als er geen herstelinformatie over een bestand beschikbaar is, wordt een informational
bericht met deze strekking wordt geschreven en de bewerking gaat zoals gewoonlijk door.

Indien de c optie is opgegeven, zal de eerste keer dat een bestand dat al bestaat (inclusief een
bestand dat mogelijk niet bestaat, maar waarvoor herstelinformatie beschikbaar is, wanneer de r
optie is opgegeven) vervangt of initialiseert de inhoud van de bewerkingsbuffer, het huidige
regel wordt ingesteld op de laatste regel van de bewerkingsbuffer, de huidige kolom wordt ingesteld op
niet- , en de ex commando's gespecificeerd met de c optie wordt uitgevoerd. In deze
In dat geval zullen de huidige regel en huidige kolom niet worden ingesteld zoals beschreven voor de opdracht
geassocieerd met de vervanging of initialisatie van de inhoud van de bewerkingsbuffer. Echter, als
de t optie of een label opdracht is gekoppeld aan deze actie, de c optie commando's
worden uitgevoerd en vervolgens wordt de beweging naar de tag uitgevoerd.

De huidige lijst met argumenten wordt in eerste instantie ingesteld op de bestandsnamen die door de gebruiker zijn opgegeven
de opdrachtregel. Als er geen bestandsnamen zijn opgegeven door de gebruiker, wordt de huidige argumentenlijst
zal leeg zijn. Als de t optie is opgegeven, is het niet gespecificeerd of een bestandsnaam
die het resultaat zijn van tagverwerking, worden toegevoegd aan de huidige argumentenlijst. In het geval
waarbij de bestandsnaam als voorvoegsel wordt toegevoegd aan de huidige argumentenlijst, het huidige argument
lijstverwijzing wordt ingesteld op die bestandsnaam. In het geval dat de bestandsnaam niet is toegevoegd
als voorvoegsel voor de huidige lijst met argumenten, zal de verwijzing naar de lijst met huidige argumenten
logisch geplaatst zijn vóór de eerste van de bestandsnamen die op de opdrachtregel zijn opgegeven (voor
bijvoorbeeld een volgende ex volgende commando zal de eerste bestandsnaam van het commando bewerken
lijn). Als de t optie niet is opgegeven, is de referentie van de huidige lijst met argumenten to
de eerste van de bestandsnamen op de opdrachtregel.

Het aanpakken in ex
Adresseren in ex heeft betrekking op de huidige regel en de huidige kolom; het adres van een regel
is het op 1 gebaseerde regelnummer, het adres van een kolom is het op 1 gebaseerde aantal van de
begin van de lijn. Over het algemeen is de huidige regel de laatste regel waarop een opdracht betrekking heeft.
Het nummer van de huidige regel is het adres van de huidige regel. In elke commandobeschrijving,
het effect van het commando op het huidige regelnummer en de huidige kolom wordt beschreven.

Adressen zijn als volgt opgebouwd:

1. Het karakter '' (punt) richt zich op de huidige regel.

2. Het karakter '$' adresseert de laatste regel van de bewerkingsbuffer.

3. Het positieve decimale getal n richt zich op de ne regel van de bewerkingsbuffer.

4. Het adres "'X" verwijst naar de regel die is gemarkeerd met het merknaamteken 'X', welke
is een kleine letter uit de draagbare tekenset, het backquote-teken,
of het enkele aanhalingsteken. Het is een fout als de gemarkeerde regel dat niet is
momenteel aanwezig in de bewerkingsbuffer of de markering is niet gezet. Lijnen kunnen worden gemarkeerd
met de ex Mark or k commando's, of de vi m opdracht.

5. Een reguliere expressie ingesloten door karakters ('/') adresseert de eerste regel
gevonden door vooruit te zoeken vanaf de regel die de huidige regel volgt naar het einde van
de bewerkingsbuffer en stoppen bij de eerste regel waarvoor de regel exclusief de
beëindigen komt overeen met de reguliere expressie. Zoals vermeld in Normaal Uitdrukkingen
in ex, een adres dat bestaat uit een null reguliere expressie gescheiden door
karakters ("//") adresseert de volgende regel waarvoor de regel exclusief de
beëindigen komt overeen met de laatst aangetroffen reguliere expressie. In aanvulling,
de seconde kan worden weggelaten aan het einde van een opdrachtregel. Als de wrapscan Bewerk
optie is ingesteld, zal de zoekopdracht doorgaan naar het begin van de bewerkingsbuffer en
doorlopen tot en met de huidige regel, zodat de gehele bewerkingsbuffer aanwezig is
gezocht. Binnen de reguliere expressie is de reeks "\/" zal een letterlijke vertegenwoordigen
in plaats van het scheidingsteken voor reguliere expressies.

6. Een reguliere expressie ingesloten karakters ('?') richt zich op de
eerste regel gevonden door achteruit te zoeken vanaf de regel voorafgaand aan de huidige regel
richting het begin van de bewerkingsbuffer en stoppen bij de eerste regel waarvoor de
lijn exclusief de terminating komt overeen met de reguliere expressie. Een adres
bestaande uit een null reguliere expressie begrensd door karakters ("??")
adresseert de vorige lijn waarvoor de lijn exclusief de terminating
komt overeen met de laatst aangetroffen reguliere expressie. Daarnaast de tweede
mark> kan worden weggelaten aan het einde van een opdrachtregel. Als de wrapscan bewerkingsoptie is ingesteld,
de zoekopdracht loopt van het begin van de bewerkingsbuffer tot het einde van de
edit buffer en ga door tot en met de huidige regel, zodat de gehele edit
buffer wordt doorzocht. Binnen de reguliere expressie is de reeks "\?" vertegenwoordigt een
letterlijk in plaats van het RE-scheidingsteken.

7. EEN ('+') of een minteken ('−') gevolgd door een decimaal getal zal adresseren
de huidige regel plus of min het nummer. A '+' or '−' niet gevolgd door een decimaal
nummer adresseert de huidige regel plus of min 1.

Adressen kunnen optioneel worden gevolgd door nul of meer adresoffsets -gescheiden.
Adresoffsets zijn als volgt opgebouwd:

1. De '+' or '−' onmiddellijk gevolgd door een decimaal getal zal de optellen (aftrekken).
aangegeven aantal regels naar (van) het adres. A '+' or '−' niet gevolgd door a
een decimaal getal zal 1 optellen (aftrekken) bij (van) het adres.

2. Een decimaal getal voegt het aangegeven aantal regels toe aan het adres.

Het mag geen fout zijn als een tussenliggende adreswaarde kleiner dan nul of groter is
dan de laatste regel in de bewerkingsbuffer. Het zal een fout zijn voor de uiteindelijke adreswaarde
kleiner zijn dan nul of groter zijn dan de laatste regel in de bewerkingsbuffer.

Commando's hebben nul, één of twee adressen; zie de beschrijvingen van 1adr en 2adr in
commando beschrijvingen in ex. Indien er meer dan het vereiste aantal adressen worden verstrekt aan
een commando dat nul adressen vereist, zal het een fout zijn. Anders, als meer dan de
het vereiste aantal adressen wordt aan een opdracht verstrekt, waarbij de eerst opgegeven adressen worden opgegeven
worden geëvalueerd en vervolgens weggegooid totdat het maximale aantal geldige adressen overblijft.

Adressen worden van elkaar gescheiden door een ('') of een (';').
Als er geen adres is opgegeven voor of na a of scheidingsteken, dat zal het zijn
alsof het adres van de huidige regel voor of na het scheidingsteken is opgegeven. In de
geval van een scheidingsteken, de huidige regel ('') wordt op de eerste gezet
adres, en pas dan wordt het volgende adres berekend. Deze functie kan worden gebruikt
bepaal de startlijn voor voorwaarts en achterwaarts zoeken (zie regels 5. en 6.).

A ('%') komt overeen met het invoeren van de twee adressen "1,$".

Elke afbakening tekens tussen adressen, adresscheidingstekens of adres
compensaties worden verworpen.

commando Lijn Parsing in ex
Het volgende symbool wordt in deze en volgende secties gebruikt om het parseergedrag te beschrijven:

ontsnappen Als naar een teken wordt verwezen als `` -ontsnapt'' of `` ‐V-
ontsnapt'', betekent dit dat het personage een speciale betekenis heeft gekregen of verloren
op grond van respectievelijk voorafgegaan door a of -V
karakter. Tenzij anders vermeld, wordt het ontsnappingsteken weggegooid
op dat moment en zal voor geen enkel doel verder in aanmerking worden genomen.

Het parseren van de opdrachtregel vindt plaats in de volgende stappen. Voor elke stap, karakters
reeds geëvalueerd wordt genegeerd; dat wil zeggen, de zinsnede ``leidend personage'' verwijst naar
het volgende teken dat nog niet is geëvalueerd.

1. Leiden tekens worden overgeslagen.

2. Leiden tekens worden overgeslagen.

3. Als het hoofdteken een dubbel aanhalingsteken is, worden de tekens tot en met
inclusief de volgende niet- - ontsnapt worden weggegooid, en eventuele
daaropvolgende karakters zullen worden geparseerd als een aparte opdracht.

4. Hoofdtekens die als adressen kunnen worden geïnterpreteerd, worden geëvalueerd; zien
Het aanpakken in ex.

5. Leiden tekens worden overgeslagen.

6. Als het volgende teken een karakter of een :

A. Als het volgende teken een :

i. Als ex in open of visuele modus staat, wordt de huidige regel ingesteld op de laatste
eventueel opgegeven adres.

ii. Anders, als de laatste opdracht werd beëindigd door een karakter,
er wordt geen actie ondernomen; bijvoorbeeld de opdracht "|| " zal
voer twee impliciete opdrachten uit, niet drie.

iii. Anders stap 6.b. zijn van toepassing.

B. Anders is de impliciete opdracht de print commando. De laatste #, p en l
vlaggen gespecificeerd voor elke ex commando wordt onthouden en is hierop van toepassing
impliciete opdracht. Het uitvoeren van de ex aantal, printof lijst opdracht stelt de
herinnerde vlaggen aan #, niets, en l, respectievelijk, plus eventuele andere vlaggen
gespecificeerd voor die uitvoering van de aantal, printof lijst opdracht.

If ex voert momenteel geen a globaal or v commando, en geen adres of telling
is opgegeven, wordt de huidige regel met 1 opgehoogd voordat de opdracht wordt gegeven
uitgevoerd. Als het verhogen van de huidige regel zou resulteren in een adres voorbij de
laatste regel in de bewerkingsbuffer, zal de opdracht mislukken en de verhoging niet
gebeuren.

C. De of karakter wordt weggegooid en alle volgende
karakters zullen worden geparseerd als een aparte opdracht.

7. De opdrachtnaam bestaat uit het volgende teken (als het teken dat niet is
alfabetisch), of het volgende teken en alle daaropvolgende alfabetische tekens (als de
karakter is alfabetisch), met de volgende uitzonderingen:

A. Opdrachten die bestaan ​​uit een willekeurig voorvoegsel van de tekens in de opdrachtnaam verwijderen,
onmiddellijk gevolgd door een van de karakters 'ik', 'P', '+', '−'of '#' zal zijn
geïnterpreteerd als een verwijderen commando, gevolgd door een , gevolgd door de karakters
die geen deel uitmaakten van het voorvoegsel van de verwijderen commando. Het maximale aantal
karakters moeten overeenkomen met de opdrachtnaam verwijderen; bijvoorbeeld, "del" zal
niet worden behandeld als "de" gevolgd door de vlag l.

B. Commando's die uit het personage bestaan 'k', gevolgd door een karakter dat kan zijn
gebruikt als de naam van een merkteken, is gelijk aan het merktekencommando gevolgd door a
, gevolgd door het teken dat volgde op de 'k'.

C. Commando's die uit het personage bestaan 's', gevolgd door karakters die zouden kunnen zijn
geïnterpreteerd als geldige opties voor de s commando, is het equivalent van de s
commando, zonder enig patroon of vervangende waarden, gevolgd door een ,
gevolgd door de tekens na de 's'.

8. De commandonaam wordt vergeleken met de mogelijke commandonamen en een commando
naam die een voorvoegsel bevat dat overeenkomt met de tekens die door de gebruiker zijn opgegeven, is de
uitgevoerde opdracht. In het geval van opdrachten waarbij de tekens door de gebruiker zijn opgegeven
dubbelzinnig kan zijn, zal de uitgevoerde opdracht als volgt zijn:

┌───┬────────┬┬───┬───────┬┬───┬───────┐
atoevoegen ││nvolgende ││tt
cverandering ││pprint ││uongedaan maken
chverandering ││prprint ││unongedaan maken
eBewerk ││rdit artikel lezen ││vv
mbeweging ││redit artikel lezen ││wschrijven
maMark ││ss ││ │ │
└───┴────────┴┴───┴───────┴┴───┴───────┘
Implementatie-uitbreidingen met namen die vergelijkbare dubbelzinnigheden veroorzaken, worden niet gecontroleerd
voor een match totdat alle mogelijke matches voor commando's gespecificeerd door POSIX.1-2008 hebben
gecontroleerd.

9. Als de opdracht een ! commando, of als het commando een dit artikel lezen commando gevolgd door nul
of meer karakters en een !, of als de opdracht a schrijven commando gevolgd door
een of meer karakters en een !, omvat de rest van het commando alles
karakters tot een niet- - ontsnapt . De zal zijn
weggegooid en alle volgende tekens worden als een afzonderlijk teken geparseerd ex opdracht.

10. Anders, als de opdracht een Bewerk, exof volgende opdracht, of een visuele commando terwijl
in open of visuele modus wordt het volgende deel van de opdracht als volgt geparseerd:

A. Ieder '!' karakter onmiddellijk volgend op de opdracht zal worden overgeslagen en deel uitmaken
van de opdracht.

B. Enige leiding tekens worden overgeslagen en maken deel uit van de opdracht.

C. Als het volgende teken een '+', karakters tot aan de eerste niet- - ontsnapt
of niet- - ontsnapt worden overgeslagen en maken deel uit van de
opdracht.

D. De rest van de opdracht wordt bepaald door de stappen vermeld in paragraaf
12.

11. Anders, als de opdracht a globaal, open, sof v opdracht, het volgende deel van de
opdracht wordt als volgt geparseerd:

A. Enige leiding tekens worden overgeslagen en maken deel uit van de opdracht.

B. Als het volgende teken geen alfanumeriek, dubbel aanhalingsteken is, ,
, of karakter:

i. Het volgende teken wordt gebruikt als scheidingsteken voor opdrachten.

ii. Als de opdracht een globaal, openof v commando, karakters tot aan de eerste
niet- - ontsnapt , of eerste niet- -ontsnapt scheidingsteken
karakter, wordt overgeslagen en maakt deel uit van de opdracht.

iii. Als de opdracht een s commando, karakters tot aan de eerste
niet- - ontsnapt , of tweede niet- - ontsnapt
scheidingsteken, wordt overgeslagen en maakt deel uit van de opdracht.

C. Als de opdracht een globaal or v commando, karakters tot aan de eerste
niet- - ontsnapt worden overgeslagen en maken deel uit van de opdracht.

D. Anders wordt de rest van de opdracht bepaald door de stappen die zijn gespecificeerd in
paragraaf 12.

12. Anders:

A. Als de opdracht een kaart, kaart ongedaan maken, afkortenof onverkort commando, karakters
tot de eerste niet- ‐V-ontsnapt , , of dubbel-
aanhalingstekens worden overgeslagen en maken deel uit van de opdracht.

B. Anders worden tekens tot aan de eerste niet- - ontsnapt ,
, of dubbele aanhalingstekens worden overgeslagen en maken deel uit van de
opdracht.

C. Als de opdracht een toevoegen, veranderingof invoegen opdracht en de stap 12.b. geëindigd
bij een teken, alle volgende tekens, tot het volgende
niet- - ontsnapt wordt gebruikt als invoertekst voor de opdracht.

D. Als de opdracht werd beëindigd door een dubbel aanhalingsteken, worden alle volgende tekens,
tot de volgende niet- - ontsnapt , wordt weggegooid.

e. Het beëindigen of karakter zal worden weggegooid en eventuele
daaropvolgende karakters zullen worden geparseerd als een separaat ex opdracht.

Commando-argumenten worden geparseerd zoals beschreven in de samenvatting en beschrijving van elk
individueel ex commando. Dit parseren zal niet zijn -gevoelig, behalve de !
argument, dat de opdrachtnaam moet volgen zonder tussenkomst karakters, en
waar het anders onduidelijk zou zijn. Bijvoorbeeld, tellen en vlag argumenten hoeven niet
- gescheiden omdat "d22p" is niet dubbelzinnig, maar filet argumenten aan de ex volgende
opdracht moet worden gescheiden door een of meer karakters. Elk in opdracht
argumenten voor de afkorten, onverkort, kaart en kaart ongedaan maken commando's kunnen zijn ‐V-
ontsnapt, in welk geval de mag niet worden gebruikt als scheidingsteken voor argumenten. Elk
in het commando-argument voor elk ander commando kan zijn -ontsnapt, in welk geval
Dat mag niet worden gebruikt als scheidingsteken voor argumenten.

Binnen opdrachtargumenten voor de afkorten, onverkort, kaart en kaart ongedaan maken commando's, elk
karakter kan zijn ‐V-ontsnapt. Al dergelijke ontsnapte tekens worden behandeld
letterlijk en zal geen speciale betekenis hebben. Binnen commando-argumenten voor alle andere ex
commando's die geen reguliere expressies of vervangende tekenreeksen zijn, elk teken dat dat wel zou doen
anders een speciale betekenis kunnen hebben - ontsnapt. Ontsnapte karakters zullen zijn
letterlijk behandeld, zonder speciale betekenis als shell-uitbreidingstekens of '!', '%' en
'#' uitbreiding karakters. Zien Normaal Uitdrukkingen in ex en Vervanging Strings in ex For
beschrijvingen van opdrachtargumenten die reguliere expressies of vervangende tekenreeksen zijn.

Niet- - ontsnapt '%' karakters die voorkomen in filet argumenten voor elk ex commando zal
worden vervangen door de huidige padnaam; niet ontsnapt '#' tekens worden vervangen door de
alternatieve padnaam. Het is een fout als '%' or '#' karakters verschijnen unescaped in een
argument en de bijbehorende waarden zijn niet ingesteld.

Niet- - ontsnapt '!' karakters in de argumenten voor ofwel de ex ! commando of
de open en visuele modus ! opdracht, of in de argumenten voor de ex dit artikel lezen commando, waar de
eerste niet- na de commandonaam is a '!' karakter, of in de argumenten voor de
ex schrijven commando waarbij de commandonaam wordt gevolgd door een of meer karakters en
de eerste niet- na de commandonaam is a '!' karakter, wordt vervangen door
de argumenten voor de laatste van die drie commando's zoals ze verschenen, waren immers niet ontsnapt
'%', '#' en '!' karakters werden vervangen. Het is een fout als '!' tekens
verschijnen zonder escapecode in een van deze opdrachten en er is nog geen eerdere uitvoering van geweest
van deze commando's.

Als er een fout optreedt tijdens het parseren of uitvoeren van een ex opdracht:

* Hierover zal een informatief bericht worden geschreven. Uitvoering van de ex commando
stopt en de cursor (bijvoorbeeld de huidige regel en kolom) niet
verder aangepast.

* Als de ex commando was het resultaat van een kaartuitbreiding, alle karakters van die kaart
expansie zal worden weggegooid, tenzij anders aangegeven door de kaart opdracht.

* Anders, als de ex commando was het resultaat van de verwerking van een UITGANG milieu
variabel, een .exrc dien een ... in :bron bevel, een c optie, of een +commando gespecificeerd naar een
ex Bewerk, ex, volgendeof visuele commando, geen verdere commando's van de bron van de
commando's worden uitgevoerd.

* Anders, als de ex commando is het resultaat van de uitvoering van een buffer of een globaal or v
commando, geen verdere commando's veroorzaakt door de uitvoering van de buffer of de globaal or v
commando wordt uitgevoerd.

* Anders, als de ex opdracht is niet beëindigd door a , alle tekens tot en met
en inclusief de volgende niet- - ontsnapt worden weggegooid.

Invoer Editing in ex
Het volgende symbool wordt in deze en de volgende secties gebruikt om een ​​opdracht te specificeren
acties:

woord In de POSIX-locale bestaat een woord uit een maximale reeks letters, cijfers,
en onderstrepingstekens, aan beide uiteinden begrensd door andere tekens dan letters,
cijfers of underscores, of aan het begin of einde van een regel of de bewerkingsbuffer.

Bij het accepteren van invoertekens van de gebruiker, in een van beide ex commandomodus of ex tekstinvoer
mode, ex zal invoerverwerking in canonieke modus mogelijk maken, zoals gedefinieerd in de systeeminterfaces
deel van POSIX.1-2008.

Als in ex tekstinvoermodus:

1. Indien de aantal bewerkingsoptie is ingesteld, ex vraagt ​​om invoer met behulp van het regelnummer dat
zou worden toegewezen aan de regel als deze wordt ingevoerd, in het formaat dat is opgegeven voor de ex
aantal opdracht.

2. Indien de automatisch inspringen bewerkingsoptie is ingesteld, ex vraagt ​​om invoer met behulp van automatisch inspringen
karakters, zoals beschreven door de automatisch inspringen optie bewerken. automatisch inspringen karakters zullen
volg het regelnummer, indien van toepassing.

Als in ex commando-modus:

1. Indien de prompt bewerkingsoptie is ingesteld, wordt invoer gevraagd voor het gebruik van een single ':'
karakter; anders zal er geen prompt zijn.

De invoertekens in de volgende secties hebben de volgende effecten op de
invoer lijn.

Rol
synopsis:
eof

Zie de beschrijving van de stijf eof personage in stijf.

Als in ex commando-modus:

Indien de eof teken is het eerste teken dat op de regel wordt ingevoerd, de regel zal zijn
geëvalueerd alsof het twee karakters bevatte: a -D en een .

Anders de eof karakter heeft geen speciale betekenis.

Als in ex tekstinvoermodus:

Als de cursor volgt op een automatisch inspringen karakter, de automatisch inspringen karakters in de
regel zal worden aangepast zodat een deel van het volgende tekstinvoerteken zal zijn
weergegeven in de eerste kolom in de regel na de vorige ploegbreedte bewerkingsoptie
kolomgrens, en de gebruiker wordt opnieuw gevraagd om invoer voor dezelfde regel.

Anders, als de cursor volgt op een '0', die volgt op een automatisch inspringen karakter, en
de '0' was het vorige tekstinvoerteken, de '0' en alle automatisch inspringen
tekens in de regel worden weggegooid en de gebruiker wordt opnieuw gevraagd
invoer voor dezelfde lijn.

Anders, als de cursor volgt op een '^', die volgt op een automatisch inspringen karakter, en
de '^' was het vorige tekstinvoerteken, de '^' en alle automatisch inspringen
tekens in de regel worden weggegooid en de gebruiker wordt opnieuw gevraagd
invoer voor dezelfde lijn. tevens de automatisch inspringen niveau voor de volgende invoerregel
worden afgeleid van dezelfde lijn waaruit de automatisch inspringen niveau voor de stroom
invoerregel is afgeleid.

Anders, als er geen zijn automatisch inspringen of tekstinvoertekens in de regel, de eof
karakter wordt weggegooid.

Anders de eof karakter heeft geen speciale betekenis.


synopsis:

-J

Als in ex commando-modus:

Zorg ervoor dat de opdrachtregel wordt geparseerd; ‐J wordt toegewezen aan de
Voor dit doeleinde.

Als in ex tekstinvoermodus:

Beëindig de huidige lijn. Als er geen andere tekens zijn dan automatisch inspringen
tekens op de regel, worden alle tekens op de regel weggegooid.

Vragen om tekstinvoer op een nieuwe regel na de huidige regel. Als de automatisch inspringen Bewerk
optie is ingesteld, een geschikt aantal automatisch inspringen tekens worden toegevoegd als a
voorvoegsel aan de regel zoals beschreven door de ex automatisch inspringen optie bewerken.


synopsis:


Sta de invoer van een volgende toe of ‐J als een letterlijk karakter, verwijderend
elke speciale betekenis die het voor de editor kan hebben tijdens de tekstinvoermodus. De
karakter wordt behouden en geëvalueerd wanneer de opdrachtregel wordt geparseerd, of behouden en
opgenomen wanneer de invoertekst onderdeel wordt van de bewerkingsbuffer.

-V
synopsis:
-V

Sta de invoer toe van elk volgend teken als een letterlijk teken, waarbij speciale tekens worden verwijderd
wat betekent dat het voor de editor kan zijn tijdens de tekstinvoermodus. De -V karakter
wordt weggegooid voordat de opdrachtregel wordt geparseerd of de invoertekst onderdeel wordt van het
bewerkingsbuffer.

Als de ``letterlijke volgende'' functionaliteit wordt uitgevoerd door het onderliggende systeem, dan is dat zo
implementatie-gedefinieerd of een ander teken dan ‐V voert deze functie uit.

-W
synopsis:
-W

Gooi de ‐W, en het woord ervoor in de invoerregel, inclusief eventuele
tekens na het woord en voorafgaand aan de -W. Als het ``woord
wissen'' functionaliteit wordt uitgevoerd door het onderliggende systeem, het is door de implementatie gedefinieerd
of een ander personage dan ‐W voert deze functie uit.

commando beschrijvingen in ex
De volgende symbolen worden in deze sectie gebruikt om opdrachtmodificaties weer te geven. Enkele van
deze modifiers kunnen worden weggelaten, in welk geval de gespecificeerde defaults zullen worden gebruikt.

1adr Een adres met één regel, gegeven in een van de formulieren die worden beschreven in Het aanpakken in ex;
de standaard is de huidige regel (''), tenzij anders vermeld.

Als het lijnadres nul is, is het een fout, tenzij anders aangegeven in
de volgende opdrachtbeschrijvingen.

Als de bewerkingsbuffer leeg is en het adres is opgegeven met een commando other
neem contact =, toevoegen, invoegen, open, zetten, dit artikel lezenof visuele, of het adres is niet nul,
het zal een fout zijn.

2adr Twee adressen die een inclusief lijnenbereik specificeren. Als er geen adressen zijn
opgegeven, de standaard voor 2adr zal alleen de huidige regel zijn (".,."), behalve
anders gespecificeerd in de volgende opdrachtbeschrijvingen. Als er één adres is
gespecificeerd, 2adr specificeert alleen die regel, tenzij anders vermeld in de
volgende opdrachtbeschrijvingen.

Het is een fout als het eerste adres groter is dan het tweede adres.

Als de bewerkingsbuffer leeg is, en de twee adressen worden gespecificeerd met een commando
anders dan de !, schrijven, wqof raken commando's, of een van beide adressen is niet nul, het
zal een fout zijn.

tellen Een positief decimaal getal. Als tellen is gespecificeerd, is het gelijk aan
een extra adres voor de opdracht specificeren, tenzij anders aangegeven door
de volgende opdrachtbeschrijvingen. Het aanvullende adres is gelijk aan het
laatste adres opgegeven voor de opdracht (expliciet of standaard) plus
tellen-1.

Als dit zou resulteren in een adres dat groter is dan de laatste regel van de edit
buffer, wordt deze gecorrigeerd zodat deze gelijk is aan de laatste regel van de bewerkingsbuffer.

vlaggen Een of meer van de personages '+', '−', '#', 'P'of 'ik' (el). De vlag
karakters kunnen zijn -gescheiden, en in elke volgorde of combinatie. De
tekens '#', 'P' en 'ik' zorgt ervoor dat regels in het formaat worden geschreven
gespecificeerd door de print opdracht met het opgegeven vlaggen.

De te schrijven regels zijn als volgt:

1. Alle bewerkingsbufferregels die zijn geschreven tijdens de uitvoering van de ex &, ~, lijst,
aantal, open, print, s, visuele en z commando's worden geschreven zoals gespecificeerd
by vlaggen.

2. Na voltooiing van een ex commando met een vlag als argument, de
huidige regel wordt geschreven zoals gespecificeerd door vlaggen, tenzij de huidige regel
was de laatste regel geschreven door het commando.

De personages '+' en '−' veroorzaken de waarde van de huidige regel na de
uitvoering van de ex opdracht aan te passen door het offset-adres zoals beschreven in
Het aanpakken in ex. Deze aanpassing vindt plaats voordat de huidige regel is
geschreven zoals beschreven in 2. hierboven.

De standaard voor vlaggen zal er geen zijn.

buffer Een van een aantal benoemde gebieden voor het vasthouden van tekst. De benoemde buffers zijn opgegeven
door de alfanumerieke tekens van de POSIX-landinstelling. Er zal er ook een zijn
``naamloze'' buffer. Als er geen buffer is opgegeven voor editorcommando's die gebruikmaken van een
buffer, wordt de naamloze buffer gebruikt. Commando's die tekst opslaan in buffers
zal de tekst opslaan zoals deze was voordat het bevel van kracht werd, en zal opslaan
tekst die eerder in het bestand voorkomt vóór tekst die later in het bestand voorkomt,
ongeacht hoe het tekstgebied is gespecificeerd. Commando's die tekst opslaan in
buffers zullen de tekst zowel in de naamloze buffer als in de opgegeven buffers opslaan
buffer.

In ex commando's, worden buffernamen op zichzelf gespecificeerd als de naam. Bij open of
visuele modus commando's de naam wordt voorafgegaan door een dubbel aanhalingsteken (''') karakter.

Als de opgegeven buffernaam een ​​hoofdletter is, en de bufferinhoud
moeten worden gewijzigd, zal de buffer worden toegevoegd aan in plaats van te zijn
overschreven. Als de buffer niet wordt gewijzigd, specificeert u de buffernaam in
kleine letters en hoofdletters hebben identieke resultaten.

Er zullen ook buffers zijn met de nummers 1 tot en met 9. Open en visueel
modus, als een tekstgebied met tekens van meer dan een enkele regel is
wordt gewijzigd door de vi c or d commando's, het bewegingskarakter geassocieerd met
de c or d commando's specificeert dat de buffertekst in regelmodus moet zijn, of de
commando's %, `, /, ?, (, ), N, n, {of } worden gebruikt om een ​​tekstgebied voor te definiëren
de c or d commando's, wordt de inhoud van buffers 1 tot en met 8 verplaatst naar de
buffer genoemd door de volgende numeriek grotere waarde, de inhoud van buffer 9
wordt weggegooid en het tekstgebied wordt gekopieerd naar buffer 1. Dit
is een aanvulling op het kopiëren van de tekst naar een door de gebruiker gespecificeerde buffer of naamloos
buffer, of beide. Numerieke buffers kunnen worden opgegeven als bronbuffer voor open
en visuele modusopdrachten; echter een numerieke buffer specificeren als schrijven
doel van een commando in open of visuele modus zal niet-gespecificeerde resultaten hebben.

De tekst van elke buffer moet het kenmerk hebben dat hij in regel of regel staat
karakter modus. Door tekst toe te voegen aan een niet-lege buffer wordt de bijbehorende modus ingesteld
het kenmerk van de tekst die wordt toegevoegd. Het toevoegen van tekst aan een buffer zal
veroorzaken dat er ten minste één extra regel in de buffer wordt gemaakt. Alle tekst
opgeslagen in buffers door ex commando's zullen in lijnmodus zijn. De ex commando's dat
gebruik buffers als de bron van tekst specificeer individueel hoe buffers van verschillend zijn
modi worden behandeld. Elke opdracht in open of visuele modus die buffers gebruikt voor elk
doel specificeert individueel de modus van de tekst die in de buffer is opgeslagen en
hoe buffers van verschillende modi worden behandeld.

filet Commandotekst gebruikt om een ​​padnaam af te leiden. De standaardwaarde is de stroom
padnaam, zoals eerder gedefinieerd, in welk geval, als er nog geen huidige padnaam is
vastgesteld, is het een vergissing, tenzij specifiek vermeld in de
individuele opdrachtbeschrijvingen die volgen. Als de opdrachttekst er een bevat
van de karakters '~', '{', '[', '*', '?', '$', ''', aanhalingstekens, enkele aanhalingstekens,
En , zal het worden onderworpen aan het proces van ``schiluitbreidingen'',
zoals hieronder beschreven; als er meer dan één padnaam resulteert en de opdracht
verwacht er maar één, het zal een vergissing zijn.

Het proces van shell-uitbreidingen in de editor gaat als volgt. De ex
hulpprogramma zal twee argumenten doorgeven aan het programma met de naam van de shell-bewerkingsoptie;
de eerste zal zijn c, en de tweede is de string "echo" en het commando
tekst als een enkel argument. De standaarduitvoer en de standaardfout daarvan
commando zal de commandotekst vervangen.

! Een teken dat aan de opdrachtnaam kan worden toegevoegd om de werking ervan te wijzigen, zoals
beschreven in de afzonderlijke opdrachtbeschrijvingen. Met uitzondering van de ex
dit artikel lezen, schrijven en ! commando's, de '!' karakter zal alleen fungeren als een modifier als
er zijn geen tekens ertussen en de opdrachtnaam.

herinnerde search richting
De vi commando's N en n beginnen met zoeken in voorwaartse of achterwaartse richting in
de bewerkingsbuffer op basis van een onthouden zoekrichting, die aanvankelijk is
uitgeschakeld en wordt ingesteld door de ex globaal, v, s en label commando's, en de vi / en ?
commando's.

Afkorten
synopsis:
ab[verkorten][lhs rhs]

If lhs en rhs zijn niet gespecificeerd, schrijf de huidige lijst met afkortingen en doe niets
meer.

Implementaties kunnen de set tekens die wordt geaccepteerd in beperken lhs or rhs, behalve dat
afdrukbare tekens en karakters zijn niet beperkt. Aanvullend
beperkingen worden door de implementatie gedefinieerd.

In beide lhs en rhs, kan elk karakter worden ontsnapt met een ‐V, in welk geval de
karakter mag niet worden gebruikt om af te bakenen lhs oppompen van rhs, en de ontsnapping -V zal zijn
weggegooid.

In open en visuele tekstinvoermodus, als een niet-woord of karakter dat niet ontsnapt is
door een ‐V-teken wordt ingevoerd na een woordteken, er moet worden gecontroleerd op a
reeks tekens die overeenkomen lhs, in de tekst die tijdens deze opdracht is ingevoerd. Als het is
gevonden, zal het effect zijn alsof rhs werd ingevoerd in plaats van lhs.

De set tekens die wordt gecontroleerd, wordt als volgt gedefinieerd:

1. Als er geen tekens zijn ingevoegd voor het woord en niet-woord of karakters
die de controle veroorzaakte, bestaat de reeks tekens uit het woordteken.

2. Als het teken ingevoegd voor het woord en niet-woord of karakters dat
geactiveerd de controle is een woordteken, de reeks tekens zal bestaan ​​uit de
tekens ingevoegd vlak voor de activerende tekens die woord zijn
karakters, plus het activerende woordkarakter.

3. Als het teken ingevoegd voor het woord en niet-woord of karakters dat
de geactiveerde controle is geen woordteken, de set tekens zal bestaan ​​uit
de tekens die zijn ingevoegd vóór de activerende tekens die geen van beide zijn
karakters noch woordkarakters, plus het activerende woordkarakter.

Het is niet gespecificeerd of de lhs argument ingevoerd voor de ex afkorten en onverkort
commando's wordt op deze manier vervangen. Ongeacht of de vervanging plaatsvindt,
het effect van de opdracht zal zijn alsof de vervanging niet heeft plaatsgevonden.

Actueel lijn: Ongewijzigd.

Actueel kolom: Ongewijzigd.

toevoegen
synopsis:
[1adr] a[hangen][!]

Enter ex tekstinvoermodus; de invoertekst wordt na de gespecificeerde regel geplaatst. Als lijn
nul is opgegeven, wordt de tekst aan het begin van de bewerkingsbuffer geplaatst.

Deze opdracht wordt beïnvloed door de aantal en automatisch inspringen bewerkingsopties; volgens de
opdrachtnaam met '!' veroorzaakt de automatisch inspringen bewerkingsoptie-instelling waarnaar moet worden geschakeld
alleen de duur van deze opdracht.

Actueel lijn: Stel in op de laatste invoerregel; als er geen regels zijn ingevoerd, stelt u deze in op de opgegeven waarde
regel, of naar de eerste regel van de bewerkingsbuffer als er een regel nul is opgegeven, of nul als
de bewerkingsbuffer is leeg.

Actueel kolom: ingesteld op niet- .

argumenten
synopsis:
ar[gs]

Schrijf de huidige argumentenlijst, met het huidige item in de argumentenlijst, indien aanwezig, ertussen '['
en ']' tekens.

Actueel lijn: Ongewijzigd.

Actueel kolom: Ongewijzigd.

Veranderen
synopsis:
[2adr] c[hange][!][tellen]

Enter ex tekstinvoermodus; de invoertekst vervangt de gespecificeerde regels. De opgegeven
regels worden gekopieerd naar de naamloze buffer, die een lijnmodusbuffer wordt.

Deze opdracht wordt beïnvloed door de aantal en automatisch inspringen bewerkingsopties; volgens de
opdrachtnaam met '!' veroorzaakt de automatisch inspringen bewerkingsoptie-instelling waarnaar moet worden geschakeld
alleen de duur van deze opdracht.

Actueel lijn: Stel in op de laatste invoerregel; als er geen regels zijn ingevoerd, stelt u in op de vorige regel
het eerste adres, of naar de eerste regel van de bewerkingsbuffer als er geen regels voor zijn
het eerste adres, of naar nul als de bewerkingsbuffer leeg is.

Actueel kolom: ingesteld op niet- .

Veranderen Directory
synopsis:
chd[ir][!][directory]
cd[!][directory]

Wijzig de huidige werkmap in directory.

Zo nee directory argument is opgegeven, en de HOME omgevingsvariabele is ingesteld op een niet-
null en niet-lege waarde, directory standaard de waarde genoemd in de HOME
omgevingsvariabele. Als de HOME omgevingsvariabele leeg is of ongedefinieerd is, de
standaardwaarde van directory is implementatiegedefinieerd.

Zo nee '!' wordt toegevoegd aan de opdrachtnaam en de bewerkingsbuffer is sindsdien gewijzigd
de laatste volledige schrijfbewerking en de huidige padnaam begint niet met een '/', het zal zijn
een foutmelding.

Actueel lijn: Ongewijzigd.

Actueel kolom: Ongewijzigd.

Kopiëren
synopsis:
[2adr] co[py] 1adr [vlaggen]
[2adr] t 1adr [vlaggen]

Kopieer de opgegeven regels na de opgegeven bestemmingsregel; regel nul specificeert dat
de regels worden aan het begin van de bewerkingsbuffer geplaatst.

Actueel lijn: Instellen op de laatst gekopieerde regel.

Actueel kolom: ingesteld op niet- .

Verwijder
synopsis:
[2adr] d[Kiezen][buffer][tellen][vlaggen]

Verwijder de gespecificeerde regels in een buffer (standaard de naamloze buffer), die zal
een buffer in lijnmodus worden.

Vlaggen kunnen onmiddellijk volgen op de opdrachtnaam; zien commando Lijn Parsing in ex.

Actueel lijn: Stel in op de regel die volgt op de verwijderde regels, of op de laatste regel in de bewerking
buffer als die regel voorbij het einde van de bewerkingsbuffer is, of op nul als de bewerkingsbuffer dat is
leeg.

Actueel kolom: ingesteld op niet- .

Edit
synopsis:
e[DIT][!][+commando][filet]
ex[!][+commando][filet]

Zo nee '!' wordt toegevoegd aan de opdrachtnaam en de bewerkingsbuffer is sindsdien gewijzigd
de laatste volledige schrijfbewerking, zal het een fout zijn.

If filet is opgegeven, vervangt u de huidige inhoud van de bewerkingsbuffer door de huidige
inhoud van fileten stel de huidige padnaam in op filet. Indien filet is niet gespecificeerd, vervangen
de huidige inhoud van de bewerkingsbuffer met de huidige inhoud van het bestand genoemd door de
huidige padnaam. Als om welke reden dan ook de huidige inhoud van het bestand niet toegankelijk is,
de bewerkingsbuffer zal leeg zijn.

De +commando optie zal zijn -gescheiden; karakters binnen de +commando wel
ontsnappen door ze vooraf te gaan met a karakter. De +commando zal zijn
geïnterpreteerd als een ex opdracht onmiddellijk nadat de inhoud van de bewerkingsbuffer is verwijderd
vervangen en de huidige regel en kolom zijn ingesteld.

Als de bewerkingsbuffer leeg is:

Actueel lijn: Instellen op 0.

Actueel kolom: Instellen op 1.

Anders, indien uitgevoerd terwijl u binnen bent ex commandomodus of als de +commando argument is gespecificeerd:

Actueel lijn: ingesteld op de laatste regel van de bewerkingsbuffer.

Actueel kolom: ingesteld op niet- .

Anders, als filet wordt weggelaten of resulteert in de huidige padnaam:

Actueel lijn: ingesteld op de eerste regel van de bewerkingsbuffer.

Actueel kolom: ingesteld op niet- .

Anders, als filet hetzelfde is als het laatst bewerkte bestand, worden de regel en kolom ingesteld
als volgt; als het bestand eerder is bewerkt, kunnen de regel en kolom als volgt worden ingesteld:

Actueel lijn: Stel in op de laatste waarde die werd vastgehouden toen dat bestand voor het laatst werd bewerkt. Als deze waarde is
geen geldige regel in de nieuwe bewerkingsbuffer, ingesteld op de eerste regel van de bewerkingsbuffer.

Actueel kolom: Als de huidige regel was ingesteld op de laatste waarde die werd vastgehouden toen het bestand voor het laatst was
bewerkt, ingesteld op de laatste waarde die werd vastgehouden toen het bestand voor het laatst werd bewerkt. Anders, of als de
laatste waarde is geen geldige kolom in de nieuwe bewerkingsbuffer, ingesteld op niet- .

Anders:

Actueel lijn: ingesteld op de eerste regel van de bewerkingsbuffer.

Actueel kolom: ingesteld op niet- .

Dien in
synopsis:
f[s][filet]

Als een filet argument is opgegeven, wordt de alternatieve padnaam ingesteld op de huidige
padnaam, en de huidige padnaam wordt ingesteld op filet.

Schrijf een informatief bericht. Als het bestand een huidige padnaam heeft, zal deze worden opgenomen
in dit bericht; anders geeft het bericht aan dat er geen huidige padnaam is.
Als de bewerkingsbuffer regels bevat, wordt het huidige regelnummer en het aantal regels in het
bewerkingsbuffer wordt in dit bericht opgenomen; anders geeft het bericht dat aan
de bewerkingsbuffer is leeg. Als de bewerkingsbuffer is gewijzigd sinds de laatste complete
schrijven, zal dit feit in dit bericht worden opgenomen. Als de alleen lezen bewerkingsoptie is ingesteld,
dit feit zal in dit bericht worden opgenomen. Het bericht kan andere niet-gespecificeerde gegevens bevatten
informatie.

Actueel lijn: Ongewijzigd.

Actueel kolom: Ongewijzigd.

Globaal
synopsis:
[2adr] g[lobaal] /patroon/ [commando's]
[2adr] v /patroon/ [commando's]

De optionele '!' karakter na de globaal opdracht is hetzelfde als het uitvoeren van de v
opdracht.

If patroon leeg is (bijvoorbeeld "//") of niet opgegeven, de laatst gebruikte reguliere expressie
in de editor-opdracht wordt gebruikt als de patroon. De patroon kan worden afgebakend door
tekens (weergegeven in de samenvatting), evenals alle niet-alfanumerieke of niet-
anders dan , , , of dubbele aanhalingstekens.

Als er geen regels zijn opgegeven, gelden de regels standaard voor het hele bestand.

De globaal en v commando's zijn logischerwijs two-pass operaties. Markeer eerst de lijnen binnenin
de gespecificeerde lijnen waarvoor de lijn exclusief de terminating wedstrijden
(globaal) of komt niet overeen (v or globaal!) het opgegeven patroon. Ten tweede, voer de ex
commando's gegeven door commando's, met de huidige regel ('') ingesteld op elke gemarkeerde lijn. Als een
fout optreedt tijdens dit proces, of de inhoud van de bewerkingsbuffer wordt vervangen (bijv
bijvoorbeeld door de ex :bewerking commando) zal er een foutmelding worden geschreven en geen commando's meer
die voortvloeien uit de uitvoering van deze opdracht worden verwerkt.

meervoudig ex commando's kunnen worden opgegeven door meerdere commando's op een enkele regel in te voeren met behulp van
A om ze af te bakenen, of één per regel, door ze allemaal te escapen met een
.

Als er geen opdrachten zijn opgegeven:

1. Indien binnen ex commandomodus, zal het zijn alsof de print opdracht zijn opgegeven.

2. Anders wordt geen commando uitgevoerd.

Voor de toevoegen, verandering en invoegen commando's, zal de invoertekst worden opgenomen als onderdeel van
het commando en het beëindigen kan worden weggelaten als de opdracht de lijst met
commando's. De open en visuele commando's kunnen worden gespecificeerd als een van de commando's, waarin
In het geval dat elke gemarkeerde regel ervoor zorgt dat de editor in de open of visuele modus gaat. Indien geopend of
visuele modus wordt afgesloten met de vi Q opdracht, wordt de huidige regel ingesteld op de volgende
gemarkeerde lijn, en open of visuele modus opnieuw ingevoerd, totdat de lijst met gemarkeerde lijnen is
uitgeput.

De globaal, v en ongedaan maken commando's kunnen niet worden gebruikt in commando's. Gemarkeerde regels kunnen worden verwijderd
door opdrachten die worden uitgevoerd voor regels die eerder in het bestand voorkomen dan de gemarkeerde regels. In
in dit geval worden er geen opdrachten uitgevoerd voor de verwijderde regels.

Als de onthouden zoekrichting niet is ingesteld, wordt de globaal en v commando's zullen het instellen op
vooruit.

De automatisch afdrukken en automatisch inspringen bewerkingsopties worden geblokkeerd voor de duur van de g or
v opdracht.

Actueel lijn: Als er geen commando's worden uitgevoerd, stel dan in op de laatst gemarkeerde regel. Anders, zoals
gespecificeerd voor de uitgevoerde ex commando's.

Actueel kolom: Als er geen commando's worden uitgevoerd, zet u deze op non- ; anders, zoals aangegeven
voor het individu ex commando's.

Invoegen
synopsis:
[1adr] i[invoegen][!]

Enter ex tekstinvoermodus; de invoertekst wordt vóór de opgegeven regel geplaatst. Als de
regel nul of 1 is, wordt de tekst aan het begin van de bewerkingsbuffer geplaatst.

Deze opdracht wordt beïnvloed door de aantal en automatisch inspringen bewerkingsopties; volgens de
opdrachtnaam met '!' veroorzaakt de automatisch inspringen bewerkingsoptie-instelling waarnaar moet worden geschakeld
alleen de duur van deze opdracht.

Actueel lijn: Stel in op de laatste invoerregel; als er geen regels zijn ingevoerd, stelt u in op de vorige regel
de opgegeven regel, of naar de eerste regel van de bewerkingsbuffer als er geen regels zijn
voorafgaand aan de opgegeven regel, of nul als de bewerkingsbuffer leeg is.

Actueel kolom: ingesteld op niet- .

Aanmelden
synopsis:
[2adr] j[oin][!][tellen][vlaggen]

If tellen is gespecificeerd:

Als er geen adres is opgegeven, wordt de mee commando zal zich gedragen alsof 2adr waren de
huidige regel en de huidige regel plus tellen (.,.+ tellen).

Als er één adres is opgegeven, wordt het mee commando zal zich gedragen alsof 2adr waren de
opgegeven adres en het opgegeven adres plus tellen (addr,addr + tellen).

Als er twee adressen zijn opgegeven, wordt de mee commando zal zich gedragen als een extra
adres, gelijk aan het laatste adres plus tellen −1 (adres1,adres2,adres2 + tellen −1),
werd opgegeven.

Als dit zou resulteren in een tweede adres dat groter is dan de laatste regel van de bewerking
buffer, zal deze worden gecorrigeerd zodat deze gelijk is aan de laatste regel van de bewerkingsbuffer.

Zo nee tellen is gespecificeerd:

Als er geen adres is opgegeven, wordt de mee commando zal zich gedragen alsof 2adr waren de
huidige regel en de volgende regel (.,. +1).

Als er één adres is opgegeven, wordt het mee commando zal zich gedragen alsof 2adr waren de
opgegeven adres en de volgende regel (addr,addr + 1).

Voeg de tekst van de gespecificeerde regels samen tot een enkele regel, die zal worden vervangen
de opgegeven lijnen.

Als een '!' teken wordt toegevoegd aan de opdrachtnaam, de mee zal zonder zijn
wijziging van een lijn, onafhankelijk van de huidige locale.

Stel anders in de POSIX-landinstelling de huidige regel in op de eerste van de opgegeven regels,
en ga dan voor elke volgende regel als volgt te werk:

1. Gooi de leiding weg tekens uit de regel die moet worden samengevoegd.

2. Als de lijn die moet worden samengevoegd nu leeg is, verwijdert u deze en slaat u stap 3 tot en met 5 over.

3. Als de huidige regel eindigt op een , of het eerste teken van de regel die moet worden samengevoegd
is een ')' teken, voegt u zich bij de lijnen zonder verdere wijziging.

4. Als het laatste teken van de huidige regel een is '', sluit je aan bij de lijnen met twee
karakters ertussen.

5. Sluit anders aan bij de lijnen met een single tussen hen.

Actueel lijn: ingesteld op de eerste opgegeven regel.

Actueel kolom: ingesteld op niet- .

Lijst
synopsis:
[2adr] l[is][tellen][vlaggen]

Deze opdracht is gelijk aan de ex opdracht:

[2adr] p[rint][tellen] l[vlaggen]

Bekijk Print.

Wereldmap
synopsis:
kaart[!][lhs rhs]

If lhs en rhs zijn niet gespecificeerd:

1. Als '!' is opgegeven, schrijft u de huidige lijst met toewijzingen voor tekstinvoermodi.

2. Schrijf anders de huidige lijst met opdrachtmoduskaarten.

3. Doe niets meer.

Implementaties kunnen de set tekens die wordt geaccepteerd in beperken lhs or rhs, behalve dat
afdrukbare tekens en karakters zijn niet beperkt. Aanvullend
beperkingen worden door de implementatie gedefinieerd. In beide lhs en rhs, kan elk karakter zijn
ontsnapt met een ‐V, in welk geval het teken niet wordt gebruikt om af te bakenen lhs
oppompen van rhs, en de ontsnapping ‐V wordt weggegooid.

Als het personage '!' wordt toegevoegd aan de kaart opdrachtnaam, zal de mapping effectief zijn
tijdens de open of visuele tekstinvoermodus in plaats van open or visuele commando modus. Dit maakt het mogelijk
lhs twee verschillende hebben kaart definities tegelijkertijd: één voor commandomodus en één
voor de tekstinvoermodus.

Voor opdrachtmodustoewijzingen:

Wanneer de lhs wordt ingevoerd als een onderdeel van a vi commando in open of visuele modus (maar niet
als onderdeel van de argumenten voor het commando), zal de actie zijn alsof de
overeenkomstig rhs was ingevoerd.

Als een ander teken in de opdracht, behalve het eerste, is ontsnapt met behulp van een
‐V karakter, dat karakter zal geen deel uitmaken van een match met een lhs.

Het is niet gespecificeerd of implementaties zullen ondersteunen kaart commando's waar de lhs
is meer dan een enkel teken lang, waarbij het eerste teken van de lhs is
afdrukbaar.

If lhs bevat meer dan één teken en het eerste teken is '#', Gevolgd door
een cijferreeks die overeenkomt met een genummerde functietoets, dan wanneer dit
functietoets is getypt, zal deze worden toegewezen aan rhs. Andere tekens dan cijfers
na een '#' teken vertegenwoordigen ook de functietoets die door de tekens wordt genoemd
in de lhs na '#' en kan worden toegewezen aan rhs. Het is niet gespecificeerd hoe
functietoetsen worden genoemd of welke functietoetsen worden ondersteund.

Voor toewijzingen van tekstinvoermodus:

Wanneer de lhs wordt ingevoerd als elk deel van de tekst dat wordt ingevoerd in open of visuele tekstinvoer
modi, de actie zal zijn alsof de corresponderende rhs was ingevoerd.

Als een teken in de invoertekst is ontsnapt met behulp van een -V karakter, dat
personage mag geen deel uitmaken van een match met een lhs.

Het is niet gespecificeerd of de lhs tekst ingevoerd voor volgende kaart or kaart ongedaan maken commando's
wordt vervangen door de rhs tekst ten behoeve van de schermweergave; los van
of het display al dan niet verschijnt als het corresponderende rhs tekst is ingevoerd,
het effect van de opdracht zal zijn alsof de lhs tekst is ingevoerd.

Als slechts een deel van de lhs wordt ingevoerd, is het niet gespecificeerd hoe lang de editor zal wachten
aanvullende, mogelijk overeenkomende tekens voordat u de reeds ingevoerde tekens behandelt als
niet overeenkomen met de lhs.

De rhs karakters zullen zelf opnieuw worden toegewezen, tenzij anders aangegeven door
de remap bewerkingsoptie, behalve dat als de tekens in lhs voorkomen als voorvoegseltekens in
rhs, worden die tekens niet opnieuw toegewezen.

Op terminals in blokmodus hoeft de mapping niet onmiddellijk plaats te vinden (het kan bijvoorbeeld gebeuren
nadat de terminal een groep tekens naar het systeem heeft verzonden), maar het zal lukken
dezelfde resultaten alsof het onmiddellijk gebeurde.

Actueel lijn: Ongewijzigd.

Actueel kolom: Ongewijzigd.

Markeer
synopsis:
[1adr] ma[rk] karakter
[1adr] k karakter

Implementaties zullen ondersteunen karakter waarden van een enkele kleine letter van de POSIX
locale en de aanhalingstekens en enkele aanhalingstekens; ondersteuning van andere personages is
uitvoering gedefinieerd.

Als het uitvoeren van de vi m opdracht, stel de opgegeven markering in op de huidige regel en op 1 gebaseerd
genummerd teken waarnaar wordt verwezen door de huidige kolom, indien aanwezig; anders kolompositie 1.

Stel anders de opgegeven markering in op de opgegeven regel en eerst op 1 gebaseerd
niet- niet- in de lijn, indien aanwezig; anders, de laatste niet- in de
lijn, indien aanwezig; anders kolompositie 1.

De markering blijft geassocieerd met de lijn totdat de markering wordt gereset of de lijn wordt gereset
verwijderd. Als een verwijderde regel wordt hersteld door een volgende ongedaan maken commando, eventuele markeringen eerder
geassocieerd met de lijn, die niet zijn gereset, worden ook hersteld. Elk gebruik van
een markering die niet geassocieerd is met een huidige regel in de bewerkingsbuffer zal een fout zijn.

de merktekens ` en ' worden ingesteld zoals eerder beschreven, direct voor het volgende
gebeurtenissen vinden plaats in de editor:

1. Het gebruik van '$' als ex adres

2. Het gebruik van een positief decimaal getal als een ex adres

3. Het gebruik van een zoekopdracht als een ex adres

4. Het gebruik van een merkreferentie als aanduiding ex adres

5. Het gebruik van de volgende opdrachten in de open en visuele modus: ‐], %, (, ), [, ], {,
}

6. Het gebruik van de volgende opdrachten voor de open en visuele modus: ', G, H, L, M, z indien de
de huidige regel zal veranderen als gevolg van de opdracht

7. Het gebruik van de opdrachten voor de open en visuele modus: /, ?, N, `, n als de huidige regel of
kolom zal veranderen als gevolg van de opdracht

8. Het gebruik van de ex modusopdrachten: z, ongedaan maken, globaal, v

Voor regels 1., 2., 3. en 4. geldt de ` en ' Er worden geen punten toegekend als de ex commando is
geparseerd zoals gespecificeerd in regel 6.a. in commando Lijn Parsing in ex.

Voor regels 5., 6. en 7. geldt de ` en ' Er mogen geen markeringen worden ingesteld als de opdrachten worden gebruikt als
bewegingsopdrachten in open en visuele modus.

Voor regels 1., 2., 3., 4., 5., 6., 7. en 8. geldt de ` en ' Er worden geen punten toegekend als de
opdracht mislukt.

De ` en ' Elke keer dat de inhoud van de bewerking wordt gewijzigd, worden markeringen ingesteld zoals eerder beschreven
buffer worden vervangen (inclusief het bewerken van de initiële buffer), indien open of visueel
modus, of indien in ex modus en de bewerkingsbuffer is niet leeg vóór opdrachten of bewegingen
(inclusief commando's of bewegingen gespecificeerd door de c or t opties of de +commando
argument) worden uitgevoerd in de bewerkingsbuffer. In de open of visuele modus moeten de merktekens zijn
ingesteld alsof u de vi m commando; anders, alsof u de ex Mark opdracht.

Bij het wisselen van ex modus naar open of visuele modus, als de ` en ' merken zijn dat nog niet
stel de ` en ' markeringen moeten worden ingesteld zoals eerder beschreven.

Actueel lijn: Ongewijzigd.

Actueel kolom: Ongewijzigd.

Verplaatsen
synopsis:
[2adr] m[ove] 1adr [vlaggen]

Verplaats de opgegeven regels na de opgegeven bestemmingsregel. Een bestemming van lijn nul
specificeert dat de regels aan het begin van de bewerkingsbuffer worden geplaatst. Het zal zijn
een fout als de doellijn zich binnen het bereik van de te verplaatsen lijnen bevindt.

Actueel lijn: instellen op de laatste van de verplaatste regels.

Actueel kolom: ingesteld op niet- .

Volgende
synopsis:
n[ext][!][+commando][filet ...]

Zo nee '!' wordt toegevoegd aan de opdrachtnaam en de bewerkingsbuffer is sindsdien gewijzigd
de laatste volledige schrijfbewerking zal een fout zijn, tenzij het bestand met succes wordt geschreven als
gespecificeerd door de automatisch schrijven optie.

Als een of meer bestanden zijn opgegeven:

1. Stel de argumentenlijst in op de opgegeven bestandsnamen.

2. Stel de huidige argumentenlijstreferentie in als de eerste vermelding in de argumentenlijst.

3. Stel de huidige padnaam in op de eerste opgegeven bestandsnaam.

Anders:

1. Het is een fout als er geen bestandsnamen meer in de argumentenlijst staan ​​na de
bestandsnaam waarnaar momenteel wordt verwezen.

2. Stel de huidige padnaam en de huidige argumentenlijstverwijzing in naar de bestandsnaam erna
de bestandsnaam waarnaar momenteel wordt verwezen in de argumentenlijst.

Vervang de inhoud van de bewerkingsbuffer door de inhoud van het bestand met de naam current
padnaam. Als om welke reden dan ook de inhoud van het bestand niet toegankelijk is, wordt de bewerkingsbuffer
zal leeg zijn.

Deze opdracht wordt beïnvloed door de automatisch schrijven en schrijven opties bewerken.

De +commando optie zal zijn -afgebakend; karakters kunnen ontsnappen
voorafgegaan door een karakter. De +commando zal worden geïnterpreteerd als een ex
commando onmiddellijk nadat de inhoud van de bewerkingsbuffer is vervangen en de
huidige regel en kolom zijn ingesteld.

Actueel lijn: Instellen zoals beschreven voor de Bewerk opdracht.

Actueel kolom: Instellen zoals beschreven voor de Bewerk opdracht.

Telefoon Nummer
synopsis:
[2adr] nu[ber][tellen][vlaggen]
[2adr] #[tellen][vlaggen]

Deze commando's zijn gelijkwaardig aan de ex opdracht:

[2adr] p[rint][tellen] #[vlaggen]

Bekijk Print.

Openen
synopsis:
[1adr] o[pen] /patroon/ [vlaggen]

Deze opdracht hoeft niet te worden ondersteund op terminals in blokmodus of terminals met onvoldoende
mogelijkheden. Als standaardinvoer, standaarduitvoer of standaardfout niet terminal zijn
apparaten, de resultaten zijn niet gespecificeerd.

Ga naar de open modus.

Het scheidingsteken aan het einde kan worden weggelaten patroon aan het einde van de opdrachtregel. Als
patroon leeg is (bijvoorbeeld "//") of niet gespecificeerd, de laatste reguliere expressie die is gebruikt
de editor wordt als patroon gebruikt. Het patroon kan worden afgebakend door
tekens (weergegeven in de Synopsis), evenals eventuele alfanumerieke of niet- anders dan
, , , of dubbele aanhalingstekens.

Actueel lijn: instellen op de opgegeven regel.

Actueel kolom: ingesteld op niet- .

Behouden
synopsis:
pre[dienen]

Sla de bewerkingsbuffer op in een vorm die later kan worden hersteld met behulp van de r optie of door
met de ex herstellen commando. Nadat het bestand is bewaard, wordt er een e-mailbericht verzonden
naar de gebruiker verzonden. Dit bericht kan worden gelezen door het aanroepen van de mailx nutsvoorziening. De
bericht bevat de naam van het bestand, het tijdstip van bewaring en een ex commando
waarmee het bestand kan worden hersteld. Er kan aanvullende informatie in de e-mail worden opgenomen
bericht.

Actueel lijn: Ongewijzigd.

Actueel kolom: Ongewijzigd.

Print
synopsis:
[2adr] p[rint][tellen][vlaggen]

Schrijf de geadresseerde regels. Het gedrag is niet gespecificeerd als het aantal kolommen op de
weergave is kleiner dan het aantal kolommen dat nodig is om een ​​enkel teken in de tekst te schrijven
regels worden geschreven.

Niet-afdrukbare tekens, behalve de , wordt geschreven als door de implementatie gedefinieerd
reeksen van meerdere tekens.

Indien de # vlag is opgegeven of de aantal bewerkingsoptie is ingesteld, wordt elke regel voorafgegaan
op basis van het regelnummer in de volgende notatie:

"%6d ", <lijn aantal>

Indien de l vlag is opgegeven of de lijst bewerkingsoptie is ingesteld:

1. De karakters vermeld in het Base Definitions-volume van POSIX.1-2008, tafel 5-1,
Ontsnappen Sequenties en Geassocieerd Acties wordt geschreven als de overeenkomstige ontsnapping
volgorde.

2. Niet-afdrukbare tekens die niet voorkomen in het Base Definitions-volume van POSIX.1-2008, tafel
5-1, Ontsnappen Sequenties en Geassocieerd Acties wordt geschreven als één octaal van drie cijfers
nummer (met een voorafgaande ) voor elke byte in het teken (meest significante
bytes eerst).

3. Het einde van elke regel wordt gemarkeerd met een '$', en letterlijk '$' karakters binnen de
regel moet met een voorafgaande worden geschreven .

Lange lijnen moeten worden gevouwen; de lengte waarop vouwen plaatsvindt, is niet gespecificeerd, maar zou dat wel moeten doen
geschikt zijn voor de uitvoerterminal, gezien het aantal kolommen van de terminal.

Als een lijn wordt gevouwen en de l vlag is niet gespecificeerd en de lijst bewerkingsoptie is niet ingesteld,
het is niet gespecificeerd of een teken met meerdere kolommen op de vouwpositie wordt gescheiden;
het mag niet worden weggegooid.

Actueel lijn: instellen op de laatste geschreven regel.

Actueel kolom: Ongewijzigd als de huidige regel ongewijzigd is; anders stelt u het in op niet- .

Zetten
synopsis:
[1adr] pu[t][buffer]

Voeg tekst uit de opgegeven buffer (standaard de naamloze buffer) toe aan de opgegeven
lijn; regel nul specificeert dat de tekst aan het begin van de bewerking moet worden geplaatst
buffer. Elk deel van een regel in de buffer wordt een nieuwe regel in de bewerkingsbuffer,
ongeacht de modus van de buffer.

Actueel lijn: Instellen op de laatste regel die in de bewerkingsbuffer is ingevoerd.

Actueel kolom: ingesteld op niet- .

Verlaten
synopsis:
q[visitors][!]

Zo nee '!' wordt toegevoegd aan de opdrachtnaam:

1. Als de bewerkingsbuffer sinds de laatste volledige schrijfbeurt is gewijzigd, zal dit een
fout.

2. Als er bestandsnamen in de argumentenlijst staan ​​na de bestandsnaam waarnaar momenteel wordt verwezen,
en het laatste commando was niet a ophouden, wq, rakenof ZZ (Zie afrit) commando, het zal een
fout.

Beëindig anders de bewerkingssessie.

Lees
synopsis:
[1adr] r[ead][!][filet]

If '!' is niet de eerste niet- om de opdrachtnaam te volgen, een kopie van het opgegeven
bestand wordt na de opgegeven regel aan de bewerkingsbuffer toegevoegd; regel nul specificeert
dat de kopie aan het begin van de bewerkingsbuffer wordt geplaatst. Het aantal regels en
gelezen bytes worden geschreven. Als Nee filet wordt genoemd, zal de huidige padnaam de
standaard. Als er geen huidige padnaam is, dan filet wordt de huidige padnaam. Als
er is geen huidige padnaam of filet operand, zal het een fout zijn. Het specificeren van een filet dat
niet van het type regulier is, zal niet-gespecificeerde resultaten opleveren.

Anders, als filet wordt voorafgegaan door '!', de rest van de regel na de '!' zal hebben '%',
'#' en '!' tekens uitgebreid zoals beschreven in commando Lijn Parsing in ex.

De ex utility zal dan twee argumenten doorgeven aan het programma dat door de shell edit wordt genoemd
keuze; de eerste zal zijn c en de tweede zijn de uitgebreide argumenten voor de dit artikel lezen
opdracht als één enkel argument. De standaardinvoer van het programma moet worden ingesteld op de
standaardinvoer van de ex programma toen het werd aangeroepen. De standaardfout en standaard
uitvoer van het programma wordt na de opgegeven regel aan de bewerkingsbuffer toegevoegd.

Elke regel in het gekopieerde bestand of de programma-uitvoer (zoals afgebakend door karakters of
het einde van het bestand of de uitvoer als dit niet onmiddellijk wordt voorafgegaan door a ), zal zijn
een aparte regel in de bewerkingsbuffer. Eventuele voorvallen van En
paren in de uitvoer worden als enkelvoudig behandeld karakters.

De bijzondere betekenis van de '!' na dit artikel lezen commando kan worden overschreven door te ontsnappen
het met een karakter.

Actueel lijn: Als er geen regels worden toegevoegd aan de bewerkingsbuffer, ongewijzigd. Anders, indien geopend
of visuele modus, ingesteld op de eerste regel die in de bewerkingsbuffer wordt ingevoerd. Anders stelt u in op de
laatste regel ingevoerd in de bewerkingsbuffer.

Actueel kolom: ingesteld op niet- .

Herstellen
synopsis:
rec[over][!] filet

Zo nee '!' wordt toegevoegd aan de opdrachtnaam en de bewerkingsbuffer is sindsdien gewijzigd
de laatste volledige schrijfbewerking, zal het een fout zijn.

Zo nee filet operand is opgegeven, wordt de huidige padnaam gebruikt. Als er geen
huidige padnaam of filet operand, zal het een fout zijn.

Als er eerder geen herstelinformatie over is opgeslagen filet herstellen commando zal
zich identiek gedragen als de Bewerk commando, en een informatieve boodschap daartoe zal worden verzonden
geschreven worden.

Anders stelt u de huidige padnaam in op fileten vervang de huidige inhoud van de bewerking
buffer met de herstelde inhoud van filet. Als er meerdere exemplaren van het bestand zijn
die moet worden hersteld, wordt degene die het meest recent is opgeslagen, hersteld, en een informatief bestand
bericht dat er eerdere versies van het bestand zijn die kunnen worden hersteld
geschreven. De editor zal zich gedragen alsof de inhoud van de bewerkingsbuffer al is geweest
gewijzigd.

Actueel filet: Instellen zoals beschreven voor de Bewerk opdracht.

Actueel kolom: Instellen zoals beschreven voor de Bewerk opdracht.

Rewind
synopsis:
herw[ind][!]

Zo nee '!' wordt toegevoegd aan de opdrachtnaam en de bewerkingsbuffer is sindsdien gewijzigd
de laatste volledige schrijfbewerking zal een fout zijn, tenzij het bestand met succes wordt geschreven als
gespecificeerd door de automatisch schrijven optie.

Als de argumentenlijst leeg is, is er sprake van een fout.

De huidige argumentenlijstreferentie en de huidige padnaam moeten op de eerste worden ingesteld
bestandsnaam in de argumentenlijst.

Vervang de inhoud van de bewerkingsbuffer door de inhoud van het bestand met de naam current
padnaam. Als om welke reden dan ook de inhoud van het bestand niet toegankelijk is, wordt de bewerkingsbuffer
zal leeg zijn.

Deze opdracht wordt beïnvloed door de automatisch schrijven en schrijven opties bewerken.

Actueel lijn: Instellen zoals beschreven voor de Bewerk opdracht.

Actueel kolom: Instellen zoals beschreven voor de Bewerk opdracht.

Zet de
synopsis:
zo[t][optie[=[waarde]] ...][geenoptie ...][optie? ...][allen]

Als er geen argumenten zijn opgegeven, schrijft u de waarde van de termijn bewerkingsoptie en die opties
waarvan de waarden zijn gewijzigd ten opzichte van de standaardinstellingen; wanneer de argumentatie allen is
opgegeven, schrijft u alle optiewaarden op.

Een optienaam opgeven, gevolgd door het teken '?' zal de huidige waarde daarvan veroorzaken
optie geschreven worden. De '?' kan door nul of meer van de optienaam worden gescheiden
karakters. De '?' is alleen nodig voor opties met een Booleaanse waarde. Booleaans
opties kunnen via het formulier waarden krijgen reeks optie om ze in te schakelen of reeks geenoptie draaien
ze uit; tekenreeks- en numerieke opties kunnen via het formulier worden toegewezen reeks optie=waarde. Ieder
tekens in tekenreeksen kunnen als zodanig worden opgenomen door ze vooraf te laten gaan Met een
ontsnappen . Er kan meer dan één optie worden ingesteld of weergegeven met één set-commando
door meerdere argumenten op te geven, elk gescheiden van de volgende door een of meer argumenten
tekens.

Bekijk Edit Opties in ex voor meer informatie over specifieke opties.

Actueel lijn: Ongewijzigd.

Actueel kolom: Ongewijzigd.

Shell
synopsis:
sh[el]

Roep het programma aan dat genoemd wordt in de schelp bewerkingsoptie met het enkele argument i (interactief
modus). Het bewerken wordt hervat wanneer het programma wordt afgesloten.

Actueel lijn: Ongewijzigd.

Actueel kolom: Ongewijzigd.

bron
synopsis:
Dus[Urcan naar] filet

Lezen en uitvoeren ex commando's van filet. Regels in het bestand die blanco regels zijn, zijn
buiten beschouwing gelaten.

Actueel lijn: Zoals gespecificeerd voor het individu ex commando's.

Actueel kolom: Zoals gespecificeerd voor het individu ex commando's.

Plaatsvervanger
synopsis:
[2adr] s[ubstituee][/patroon/antwoord/[opties][tellen][vlaggen]]
[2adr] &[opties][tellen][vlaggen]]
[2adr] ~[opties][tellen][vlaggen]]

Vervang het eerste exemplaar van het patroon patroon door het touwtje antwoord op elk gespecificeerd
lijn. (Zien Normaal Uitdrukkingen in ex en Vervanging Strings in ex.) Elke niet-alfabetische,
niet- ander scheidingsteken dan , '|', , of dubbele aanhalingstekens kunnen worden gebruikt
in plaats van '/'. tekens kunnen worden gebruikt om aan scheidingstekens te ontsnappen,
tekens en andere speciale tekens.

Het scheidingsteken aan het einde kan worden weggelaten patroon of via antwoord aan het einde van de opdracht
lijn. Als beide patroon en antwoord zijn niet gespecificeerd of zijn leeg (bijvoorbeeld "//"), De
laatste s opdracht wordt herhaald. Als maar patroon is niet gespecificeerd of is leeg, de laatste
reguliere expressie die in de editor wordt gebruikt, wordt als patroon gebruikt. Als maar antwoord is niet
opgegeven of leeg is, wordt het patroon door niets vervangen. Als het geheel
vervangingspatroon is '%', het laatste vervangingspatroon voor een s commando zal worden gebruikt.

Het invoeren van een in antwoord (wat een ontsnapping vereist in ex mode
en een ontsnapping ‐V in open of vi mode) zal de lijn op dat punt splitsen,
een nieuwe regel maken in de bewerkingsbuffer. De worden weggegooid.

If opties bevat de brief 'G' (globaal), alle niet-overlappende exemplaren van het patroon
in de lijn worden vervangen.

If opties bevat de brief 'C' (bevestigen), dan zal vóór elke vervanging de lijn
geschreven zijn; de geschreven regel moet alle voorgaande vervangingen weerspiegelen. Op de volgende
lijn, tekens worden geschreven onder de tekens van de regel die dat wel zijn
voor de patroon te vervangen, en '^' tekens die onder de tekens zijn geschreven
ingesloten in de patroon vervangen worden. De ex hulpprogramma zal dan wachten op een reactie van
de gebruiker. Een bevestigend antwoord zal ervoor zorgen dat de vervanging plaatsvindt, terwijl elke andere reactie plaatsvindt
input zal de vervanging niet bewerkstelligen. Een bevestigend antwoord bestaat uit een lijn
met het bevestigende antwoord (zoals gedefinieerd door de huidige landinstelling) aan het begin van de
lijn. Deze regel moet op dezelfde manier worden bewerkt als de ex opdrachtregel.

Indien onderbroken (zie de sectie ASYNCHRONE GEBEURTENISSEN), worden eventuele wijzigingen bevestigd door de
gebruiker wordt na de interrupt in de bewerkingsbuffer bewaard.

Als de onthouden zoekrichting niet is ingesteld, wordt de s commando zal het op vooruit zetten.

In de tweede synopsis wordt de & commando herhaalt de vorige vervanging, alsof de &
opdracht vervangen door:

s/patroon/antwoord/

WAAR patroon en antwoord zijn zoals aangegeven in het voorgaande s, &of ~ opdracht.

In de derde synopsis wordt de ~ commando herhaalt de vorige vervanging, alsof de '~'
werden vervangen door:

s/patroon/antwoord/

WAAR patroon is de laatste reguliere expressie die aan de editor is opgegeven, en antwoord zal
afkomstig zijn van de vorige vervanging (inclusief & en ~) commando.

Deze commando's worden beïnvloed door de LC_MESSAGES variabele omgeving.

Actueel lijn: ingesteld op de laatste regel waarin een vervanging plaatsvond, of ongewijzigd indien nee
vervanging heeft plaatsgevonden.

Actueel kolom: ingesteld op niet- .

Opschorten
synopsis:
zo[besteden][!]
st[op][!]

Laat de controle terugkeren naar het aanroepproces; ex zal zichzelf opschorten alsof dat het geval was
het SIGTSTP-signaal ontvangen. De opschorting vindt alleen plaats als taakbeheer is ingeschakeld
de aanroepende shell (zie de beschrijving van reeks m).

Deze commando's worden beïnvloed door de automatisch schrijven en schrijven opties bewerken.

De huidige opschorten karakter (zie stijf) is gelijk aan de opschorten opdracht.

Tag
synopsis:
ta[g][!] tagtekenreeks

De resultaten zijn niet gespecificeerd als de indeling van een tagsbestand niet overeenkomt met de specificaties van het ctags
nut (zie ctags) Omschrijving.

De label commando zal zoeken tagtekenreeks in de tagbestanden waarnaar wordt verwezen door de label Bewerk
optie, in de volgorde waarin ze zijn opgegeven, tot een verwijzing naar tagtekenreeks is gevonden. Bestanden
van begin tot eind worden doorzocht. Als er geen referentie wordt gevonden, is er sprake van een fout
en er zal een foutmelding hierover worden geschreven. Als de referentie niet wordt gevonden, of als
er treedt een fout op tijdens het verwerken van een bestand waarnaar wordt verwezen in de label bewerk optie, het zal een
fout, en bij de eerste keer dat een dergelijke fout optreedt, wordt er een foutmelding geschreven.

Anders, als het tagsbestand een patroon bevatte, zal het patroon als een normaal patroon worden behandeld
expressie gebruikt in de editor; bijvoorbeeld voor de doeleinden van de s opdracht.

Indien de tagtekenreeks zich in een bestand bevindt met een andere naam dan de huidige padnaam, stelt u de
huidige padnaam naar de naam van dat bestand en vervang de inhoud van de bewerkingsbuffer
met de inhoud van dat bestand. In dit geval, indien nee '!' wordt toegevoegd aan de opdrachtnaam,
en de bewerkingsbuffer is gewijzigd sinds de laatste volledige schrijfbewerking, dan zal dit een fout zijn,
tenzij het bestand met succes is geschreven zoals gespecificeerd door de automatisch schrijven optie.

Deze opdracht wordt beïnvloed door de automatisch schrijven, label, taglengte en schrijven Bewerk
opties.

Actueel lijn: Als het tagsbestand een regelnummer bevat, stelt u dit regelnummer in. Als de
regelnummer groter is dan de laatste regel in de bewerkingsbuffer, zal er een foutmelding verschijnen
geschreven en de huidige regel wordt ingesteld zoals gespecificeerd voor de Bewerk opdracht.

Als het tagsbestand een patroon bevatte, stelt u dit in op de eerste keer dat het patroon voorkomt in het
bestand. Als er geen passend patroon wordt gevonden, wordt er een foutmelding geschreven en de huidige
lijn wordt ingesteld zoals gespecificeerd voor de Bewerk opdracht.

Actueel kolom: Als het tagsbestand een regelnummerreferentie en dat regelnummer bevatte
niet groter was dan de laatste regel in de bewerkingsbuffer, of als het tagsbestand een
patroon en dat patroon is gevonden, ingesteld op niet- . Anders instellen zoals aangegeven voor
de Bewerk opdracht.

Niet verkort
synopsis:
een[kort] lhs

If lhs is geen vermelding in de huidige lijst met afkortingen (zie Afkorten), het zal zijn
een fout. Anders verwijderen lhs uit de lijst met afkortingen.

Actueel lijn: Ongewijzigd.

Actueel kolom: Ongewijzigd.

ongedaan maken
synopsis:
u[ndo]

Maak de wijzigingen ongedaan die zijn aangebracht door de laatste opdracht die de inhoud van de bewerking heeft gewijzigd
buffer, incl ongedaan maken. Voor dit doel is het globaal, v, open en visuele commando's, en
Er wordt rekening gehouden met opdrachten die het resultaat zijn van bufferuitvoeringen en toegewezen karakteruitbreidingen
enkele commando's.

Als er geen actie is voorafgegaan die ongedaan kan worden gemaakt ongedaan maken opdracht, zal het een fout zijn.

Indien de ongedaan maken commando herstelt lijnen die gemarkeerd zijn, de markering zal ook hersteld worden
tenzij het opnieuw werd ingesteld na het verwijderen van de regels.

Actueel lijn:

1. Als er regels worden toegevoegd of gewijzigd in het bestand, stelt u in op de eerste regel die wordt toegevoegd of gewijzigd.

2. Stel in op de regel voordat de eerste regel werd verwijderd, als deze bestaat.

3. Stel in op 1 als de bewerkingsbuffer niet leeg is.

4. Zet op nul.

Actueel kolom: ingesteld op niet- .

Map ongedaan maken
synopsis:
onm[ap][!] lhs

If '!' wordt toegevoegd aan de opdrachtnaam, en if lhs is geen vermelding in de tekstlijst
kaartdefinities in de invoermodus, zal dit een fout zijn. Anders verwijderen lhs uit de lijst van
kaartdefinities in de tekstinvoermodus.

Zo nee '!' wordt toegevoegd aan de opdrachtnaam, en if lhs is geen vermelding in de lijst van
kaartdefinities in de commandomodus, zal dit een fout zijn. Anders verwijderen lhs uit de lijst van
kaartdefinities in de opdrachtmodus.

Actueel lijn: Ongewijzigd.

Actueel kolom: Ongewijzigd.

Versie
synopsis:
ve[rsie]

Schrijf een bericht met versie-informatie voor de editor. Het formaat van het bericht
is niet gespecificeerd.

Actueel lijn: Ongewijzigd.

Actueel kolom: Ongewijzigd.

Visual
synopsis:
[1adr] vi[normaal][ type dan: ][tellen][vlaggen]

If ex bevindt zich momenteel in de open of visuele modus, de synopsis en het gedrag van de visuele opdracht
zal hetzelfde zijn als de Bewerk opdracht, zoals gespecificeerd door Edit.

Anders hoeft deze opdracht niet te worden ondersteund op terminals in blokmodus of terminals met
onvoldoende capaciteiten. Als standaardinvoer, standaarduitvoer of standaardfout dat niet zijn
eindapparaten, de resultaten zijn niet gespecificeerd.

If tellen is opgegeven, de waarde van de venster bewerkingsoptie wordt ingesteld op tellen (als
beschreven in venster). Als de '^' type karakter werd ook gespecificeerd, de venster Bewerk
optie moet worden ingesteld voordat deze door het typeteken wordt gebruikt.

Ga naar de visuele modus. Als type dan: niet gespecificeerd is, zal het zijn alsof a type dan: of '+' was
gespecificeerd. De type dan: zal de volgende gevolgen veroorzaken:

+ Plaats het begin van de opgegeven regel bovenaan het scherm.

- Plaats het einde van de opgegeven regel onderaan het scherm.

. Plaats het begin van de opgegeven regel in het midden van het scherm.

^ Als de opgegeven regel kleiner is dan of gelijk is aan de waarde van de venster bewerkingsoptie,
stel de regel in op 1; anders verlaagt u de regel met de waarde van de venster Bewerk
optie min 1. Plaats het begin van deze regel zo dicht mogelijk bij de onderkant van de
weergegeven lijnen mogelijk, terwijl nog steeds de waarde van de wordt weergegeven venster Bewerk
optie aantal regels.

Actueel lijn: instellen op de opgegeven regel.

Actueel kolom: ingesteld op niet- .

Schrijven
synopsis:
[2adr] w[rite][!][>>][filet]
[2adr] w[rite][!][filet]
[2adr] wq[!][>>][filet]

Als er geen regels zijn opgegeven, gelden de regels standaard voor het hele bestand.

Het bevel wq is gelijk aan a schrijven commando gevolgd door een ophouden opdracht; wq!
zal gelijk zijn aan schrijven! gevolgd door ophouden. In beide gevallen, als de schrijven commando
faalt, de ophouden mag niet worden geprobeerd.

Als de opdrachtnaam niet wordt gevolgd door een of meer karakters, of filet is niet
voorafgegaan door a '!' karakter, de schrijven zal naar een bestand gaan.

1. Indien de >> argument is opgegeven en het bestand al bestaat, zullen de regels zijn
toegevoegd aan het bestand in plaats van de inhoud ervan te vervangen. Als de >> argument is:
opgegeven en het bestand nog niet bestaat, is het niet gespecificeerd of de write
gaat te werk alsof de >> argument niet is opgegeven of dat het schrijven zal mislukken.

2. Indien de alleen lezen bewerkingsoptie is ingesteld (zie alleen lezen), De schrijven zal mislukken.

3. Als filet is opgegeven en niet de huidige padnaam is, en het bestand bestaat, de schrijven
zal mislukken.

4. Als filet niet is opgegeven, wordt de huidige padnaam gebruikt. Als er geen stroom is
padnaam, de schrijven commando zal mislukken.

5. Als de huidige padnaam wordt gebruikt en de huidige padnaam is gewijzigd door de filet
or dit artikel lezen commando's en het bestand bestaat, de schrijven zal mislukken. Als de schrijven is
succesvol, vervolg schrijvens zullen om deze reden niet falen (tenzij de huidige
padnaam wordt opnieuw gewijzigd).

6. Als niet de gehele bewerkingsbuffer wordt geschreven en het te schrijven bestand bestaat, wordt de
schrijven zal mislukken.

Voor regels 1., 2., 3. en 5. geldt de schrijven kan worden geforceerd door het teken toe te voegen '!' naar
de opdrachtnaam.

Voor regels 2., 3. en 5. geldt de schrijven kan worden geforceerd door het instellen van de schrijven optie bewerken.

Aanvullende, door de implementatie gedefinieerde tests kunnen ervoor zorgen dat de schrijven falen.

Als de bewerkingsbuffer leeg is, wordt een bestand zonder enige inhoud geschreven.

Er moet een informatiebericht worden geschreven waarin het aantal geschreven regels en bytes wordt vermeld.

Anders, als de opdracht wordt gevolgd door een of meer tekens, en het bestand is
voorafgegaan door '!', de rest van de regel na de '!' zal hebben '%', '#' en '!'
tekens uitgebreid zoals beschreven in commando Lijn Parsing in ex.

De ex hulpprogramma zal dan twee argumenten doorgeven aan het programma met de naam schelp Bewerk
keuze; de eerste zal zijn c en de tweede zijn de uitgebreide argumenten voor de schrijven
opdracht als één enkel argument. De gespecificeerde regels moeten naar de standaardinvoer worden geschreven
van de opdracht. De standaardfout en de standaarduitvoer van het programma, indien aanwezig, zijn
geschreven zoals beschreven voor de print commando. Als het laatste teken in die uitvoer geen a
, A wordt aan het einde van de uitvoer geschreven.

De bijzondere betekenis van de '!' na schrijven commando kan worden overschreven door te ontsnappen
het met een karakter.

Actueel lijn: Ongewijzigd.

Actueel kolom: Ongewijzigd.

Schrijven en afrit
synopsis:
[2adr] x[it][!][filet]

Als de bewerkingsbuffer niet is gewijzigd sinds de laatste voltooiing schrijven, raken zal zijn
gelijk aan de ophouden opdracht, of als a '!' wordt toegevoegd aan de opdrachtnaam, to ontslag nemen!.

Anders, raken is gelijk aan de wq opdracht, of als a '!' wordt toegevoegd aan de
opdrachtnaam, naar wq!.

Actueel lijn: Ongewijzigd.

Actueel kolom: Ongewijzigd.

rukken
synopsis:
[2adr] ya[nk][buffer][tellen]

Kopieer de opgegeven regels naar de opgegeven buffer (standaard de naamloze buffer).
wordt een lijnmodusbuffer.

Actueel lijn: Ongewijzigd.

Actueel kolom: Ongewijzigd.

Adjust venster
synopsis:
[1adr] z[!][ type dan: ...][tellen][vlaggen]

Als er geen regel is opgegeven, is de huidige regel de standaard; als type dan: wordt weggelaten als
Welnu, de huidige lijnwaarde wordt eerst met 1 verhoogd. Als u de stroom verhoogt
regel ervoor zou zorgen dat deze groter is dan de laatste regel in de bewerkingsbuffer, zal het een
fout.

Als er zijn karakters tussen de type dan: betoog en het voorgaande z commando naam
of optionele '!' karakter, zal het een vergissing zijn.

If tellen is opgegeven, de waarde van de venster bewerkingsoptie wordt ingesteld op tellen (als
beschreven in venster). Als tellen wordt weggelaten, wordt standaard 2 maal de waarde van de
rol bewerkingsoptie, of als ! was opgegeven, het aantal regels op het display minus 1.

If type dan: wordt dan weggelaten tellen regels die beginnen met de opgegeven regel moeten worden geschreven.
Anders, tellen regels beginnend met de regel gespecificeerd door de type dan: betoog zal zijn
geschreven.

De type dan: argument zal de te schrijven regels veranderen. De mogelijke waarden van type dan: zijn als
volgt:

− De opgegeven regel wordt verlaagd met de volgende waarde:

(((nummer of ``−'' karakters) x tellen) −1)

Als de berekening zou resulteren in een getal kleiner dan 1, dan is er sprake van een fout. Schrijven
regels uit de bewerkingsbuffer, beginnend bij de nieuwe waarde van regel, tot tellen lijnen of
de laatste regel in de bewerkingsbuffer is geschreven.

+ De opgegeven regel wordt verhoogd met de volgende waarde:

(((nummer of ``+'' karakters) -1) x tellen) +1

Als de berekening zou resulteren in een getal dat groter is dan de laatste regel in de bewerking
buffer, zal het een fout zijn. Schrijf regels vanuit de bewerkingsbuffer, beginnend bij het nieuwe
waarde van lijn, tot tellen regels of de laatste regel in de bewerkingsbuffer is geweest
geschreven.

=,. Indien meer dan één '' or '=' is opgegeven, zal het een fout zijn. Het volgende
Er zullen stappen worden ondernomen:

1. Als tellen nul is, mag er niets worden geschreven.

2. Schrijf zoveel mogelijk van de N regels vóór de huidige regel in de bewerkingsbuffer als
bestaan. Als tellen or '!' werd opgegeven, N zal zijn:

(tellen −1) /2

Anders, N zal zijn:

(tellen -3) /2

If N een getal kleiner dan 3 is, mogen er geen regels worden geschreven.

3. Als '=' is opgegeven als het typeteken, schrijft u een regel bestaande uit de
kleinste van het aantal kolommen op het display gedeeld door twee, of 40 '−'
tekens.

4. Schrijf de huidige regel.

5. Herhaal stap 3.

6. Schrijf zoveel mogelijk van de N regels na de huidige regel in de bewerkingsbuffer zoals aanwezig.
N wordt gedefinieerd zoals in stap 2. Indien N een getal kleiner dan 3 is, mogen er geen lijnen zijn
geschreven. Als tellen kleiner is dan 3, mogen er geen regels worden geschreven.

^ De opgegeven regel wordt verlaagd met de volgende waarde:

(((nummer of ``^'' karakters) + 1) x tellen) −1

Als de berekening zou resulteren in een getal kleiner dan 1, dan is er sprake van een fout. Schrijven
regels uit de bewerkingsbuffer, beginnend bij de nieuwe waarde van regel, tot tellen lijnen of
de laatste regel in de bewerkingsbuffer is geschreven.

Actueel lijn: ingesteld op de laatst geschreven regel, tenzij het type dat is =, in welk geval, stel in op
de opgegeven lijn.

Actueel kolom: ingesteld op niet- .

Ontsnappen
synopsis:
! commando
[addr]! commando

De inhoud van de regel na de '!' zal hebben '%', '#' en '!' karakters uitgebreid
zoals beschreven in commando Lijn Parsing in ex. Als de uitbreiding de tekst van de regel veroorzaakt
om te wijzigen, wordt het opnieuw weergegeven, voorafgegaan door een enkele '!' karakter.

De ex hulpprogramma voert het programma uit dat wordt genoemd door de schelp optie bewerken. Er zullen er twee passeren
argumenten voor het programma; de eerste zal zijn c, en de tweede zal de uitgebreide zijn
argumenten aan de ! opdracht als één enkel argument.

Als er geen regels zijn opgegeven, worden de standaardinvoer, standaarduitvoer en standaardfout van de
programma moet worden ingesteld op de standaardinvoer, standaarduitvoer en standaardfout van de ex
programma toen het werd aangeroepen. Bovendien zal er een waarschuwingsbericht worden geschreven als de bewerking
buffer is gewijzigd sinds de laatste volledige schrijfbeurt, en de waarschuwen bewerkingsoptie is ingesteld.

Als er regels zijn gespecificeerd, worden deze als standaardinvoer aan het programma doorgegeven, en de
standaarduitvoer en standaardfout van het programma zullen deze regels in de bewerking vervangen
buffer. Elke regel in de programma-uitvoer (zoals begrensd door karakters of het einde
van de uitvoer als deze niet onmiddellijk wordt voorafgegaan door a ), moet een aparte regel zijn
in de bewerkingsbuffer. Eventuele voorvallen van En paren in de uitvoer
worden als enkelvoudig behandeld karakters. De opgegeven regels worden gekopieerd naar
de naamloze buffer voordat ze worden vervangen, en de naamloze buffer wordt een lijn-
modusbuffer.

Als in ex modus, een enkele '!' karakter wordt geschreven wanneer het programma is voltooid.

Deze opdracht wordt beïnvloed door de schelp en waarschuwen opties bewerken. Als er geen lijnen zijn
gespecificeerd, wordt dit commando beïnvloed door de automatisch schrijven en schrijven opties bewerken. Als
regels zijn opgegeven, wordt dit commando beïnvloed door de automatisch afdrukken optie bewerken.

Actueel lijn:

1. Als er geen regels zijn opgegeven, ongewijzigd.

2. Stel anders de laatst ingelezen regel in, als er regels zijn ingelezen.

3. Anders stelt u de regel in vóór de eerste regel van de opgegeven regels, als het om die regel gaat
bestaat.

4. Stel anders in op de eerste regel van de bewerkingsbuffer als de bewerkingsbuffer niet leeg is.

5. Anders op nul zetten.

Actueel kolom: Als er geen regels zijn opgegeven, ongewijzigd. Stel anders in op niet- .

Shift Links
synopsis:
[2adr] <[< ...][tellen][vlaggen]

Verschuif de opgegeven regels naar het begin van de regel; het aantal te bereiken kolomposities
shifted is het aantal commandotekens maal de waarde van de ploegbreedte Bewerk
keuze. Alleen maar leidend karakters worden verwijderd of veranderd in andere
karakters in verschuiving; andere karakters worden niet beïnvloed.

Te verschuiven lijnen worden gekopieerd naar de naamloze buffer, die een lijn-
modusbuffer.

Deze opdracht wordt beïnvloed door de automatisch afdrukken optie bewerken.

Actueel lijn: ingesteld op de laatste regel in de opgegeven regels.

Actueel kolom: ingesteld op niet- .

Shift Rechts
synopsis:
[2adr] >[> ...][tellen][vlaggen]

Verplaats de opgegeven regels weg van het begin van de regel; het aantal kolomposities
dat moet worden verschoven, is het aantal commandotekens maal de waarde van de ploegbreedte
optie bewerken. De verschuiving wordt bewerkstelligd door toevoeging tekens als voorvoegsel voor
de lijn of het veranderen van de leiding karakters in andere karakters. Lege regels
zal niet worden gewijzigd.

Te verschuiven lijnen worden gekopieerd naar de naamloze buffer, die een lijn-
modusbuffer.

Deze opdracht wordt beïnvloed door de automatisch afdrukken optie bewerken.

Actueel lijn: ingesteld op de laatste regel in de opgegeven regels.

Actueel kolom: ingesteld op niet- .

-D
synopsis:
-D

Schrijf het volgende n lijnen, waar n is het minimum van de waarden van de rol bewerkingsoptie en
het aantal regels na de huidige regel in de bewerkingsbuffer. Als de huidige regel de
laatste regel van de bewerkingsbuffer zal een fout zijn.

Actueel lijn: instellen op de laatst geschreven regel.

Actueel kolom: ingesteld op niet- .

Schrijven Lijn Telefoon Nummer
synopsis:
[1adr] = [vlaggen]

If lijn niet is opgegeven, wordt standaard de laatste regel in de bewerkingsbuffer gebruikt. Schrijf de
regelnummer van de opgegeven regel.

Actueel lijn: Ongewijzigd.

Actueel kolom: Ongewijzigd.

Uitvoeren
synopsis:
[2adr] @ buffer
[2adr] * buffer

Als er geen buffer is opgegeven of is opgegeven als '@' or '*', zal de laatst uitgevoerde buffer zijn
gebruikt. Als er geen eerdere buffer is uitgevoerd, is er sprake van een fout.

Voor elke regel die door de adressen wordt gespecificeerd, stelt u de huidige regel in ('') naar het opgegeven
regel en voer de inhoud van het genoemde bestand uit buffer (zoals ze waren op het moment dat de @ commando
werd geëxecuteerd) als ex opdrachten. Voor elke lijn van een lijnmodusbuffer, en alle behalve de laatste
regel van een karaktermodusbuffer, de ex command parser zal zich gedragen alsof de regel was
beëindigd door een .

Als er tijdens dit proces een fout optreedt, of als een door de adressen opgegeven regel dat niet doet
bestaat wanneer de huidige regel erop zou worden ingesteld, of als er meer dan één regel is opgegeven
door de adressen, en de inhoud van de bewerkingsbuffer wordt vervangen (bijvoorbeeld door de ex
:bewerking commando) zal er een foutmelding worden geschreven, en er zullen geen commando's meer voortvloeien uit de
uitvoering van dit commando wordt verwerkt.

Actueel lijn: Zoals gespecificeerd voor het individu ex commando's.

Actueel kolom: Zoals gespecificeerd voor het individu ex commando's.

Normaal Uitdrukkingen in ex
De ex utility ondersteunt reguliere expressies die een superset zijn van de reguliere basis
uitdrukkingen beschreven in het Base Definitions-volume van POSIX.1-2008, sectie 9.3, Basic
Normaal Uitdrukkingen. Een nul reguliere expressie ("//") is gelijk aan de laatste
reguliere expressie tegengekomen.

Reguliere expressies kunnen in adressen worden gebruikt om regels te specificeren en in sommige opdrachten (bijv
bijvoorbeeld, de vervanging commando), om gedeelten van een regel op te geven die moeten worden vervangen.

De volgende constructies kunnen worden gebruikt om de reguliere reguliere expressies te verbeteren:

\< Zorg ervoor dat het begin van a overeenkomt woord. (Zie de definitie van woord begin
commando beschrijvingen in ex.)

\> Zorg ervoor dat het einde van a overeenkomt woord.

~ Match het vervangende onderdeel van de leest vervanging commando. De ('~')
karakter kan in een reguliere expressie worden geëscaped om daarmee een normaal karakter te worden
geen speciale betekenis. De worden weggegooid.

Wanneer de editoroptie magie niet is ingesteld, zullen de enige tekens met een speciale betekenis dat wel doen
be '^' aan het begin van een patroon, '$' aan het einde van een patroon, en . De
tekens '', '*', '[' en '~' worden behandeld als gewone tekens, tenzij voorafgegaan
door een ; wanneer voorafgegaan door een ze zullen hun speciale betekenis terugkrijgen,
of in het geval van , als single worden behandeld . karakters
gebruikt om aan andere karakters te ontsnappen, worden weggegooid.

Vervanging Strings in ex
Het personage '&' ('\&' als de editoroptie magie is niet ingesteld) in de vervangende string
staat voor de tekst die overeenkomt met het patroon dat moet worden vervangen. Het personage '~' ('\~' if
magie is niet ingesteld) wordt vervangen door het vervangende onderdeel van de vorige vervanging
commando. De reeks '\n', Waar n een geheel getal is, wordt vervangen door de overeenkomende tekst
door de overeenkomstige terugverwijzingsuitdrukking. Als de overeenkomstige terugverwijzing
uitdrukking niet overeenkomt, dan worden de tekens weergegeven '\n' wordt vervangen door de lege string.

De touwtjes '\l', '\u', '\L' en '\U' kan worden gebruikt om het hoofdlettergebruik van elementen in de
vervangende tekenreeks (met behulp van de '\&' or "\"cijfer) notatie. De snaar '\l' ('\u') zullen
ervoor zorgen dat het teken dat volgt, wordt omgezet in kleine letters (hoofdletters). De snaar '\L'
('\U') zorgt ervoor dat alle daaropvolgende tekens worden omgezet in kleine letters
(hoofdletters) zoals ze door de vervanging tot aan de string worden ingevoegd '\e' or '\E'Of de
einde van de vervangende string wordt aangetroffen.

Anders wordt elk teken na a zal als letterlijk worden behandeld
karakter en het ontsnappen worden weggegooid.

Een voorbeeld van caseconversie met de s commando is als volgt:

:p
De hoe zat on de mast.
:s/\<.at\>/\u&/gp
De Kat Za on de Mat.
:s/S\(.*\)M/S\U\1\eM/p
De Kat ZA ON HET Mat.

Edit Opties in ex
De ex hulpprogramma heeft een aantal opties die het gedrag ervan wijzigen. Deze opties hebben
standaardinstellingen, die kunnen worden gewijzigd met behulp van de reeks opdracht.

Opties zijn Booleaans, tenzij anders aangegeven.

automatisch inspringen, ai
[Standaard uitgeschakeld]

If automatisch inspringen is ingesteld, wordt elke regel in de invoermodus ingesprongen (eerst zoveel
karakters mogelijk te maken, zoals bepaald door de editoroptie tabstopen vervolgens gebruiken
tekens) om uit te lijnen met een andere regel, als volgt:

1. Indien in de open of visuele modus en de tekstinvoer deel uitmaakt van een lijngeoriënteerd commando (zie
de UITGEBREIDE BESCHRIJVING in vi), uitlijnen met de eerste kolom.

2. Anders wordt, indien in de open of visuele modus, de inspringing voor elke regel ingesteld als
volgt:

A. Als er eerder een regel is ingevoegd als onderdeel van deze opdracht, wordt deze ingesteld op de
standaard inspringen van de laatst ingevoegde regel, of zoals anders aangegeven
de ‐D-teken in Invoer Mode commando's in vi.

B. Anders wordt deze ingesteld op de inspringing van de vorige huidige regel, indien
elk; anders naar de eerste kolom.

3. Voor de ex a, i en c opdrachten, wordt de inspringing voor elke regel als volgt ingesteld:

A. Als er eerder een regel is ingevoegd als onderdeel van deze opdracht, wordt deze ingesteld op de
standaard inspringen van de laatst ingevoegde regel, of zoals anders aangegeven
de eof personage in Rol.

B. Anders, als de opdracht de ex a commando, wordt het op de regel gezet
eventueel daarna toegevoegd; anders naar de eerste kolom.

C. Anders, als de opdracht de ex i commando, wordt het op de regel gezet
eerder ingevoegd, indien aanwezig; anders naar de eerste kolom.

D. Anders, als de opdracht de ex c commando, wordt deze ingesteld op de inspringing
van de lijn vervangen.

automatisch afdrukken, ap
[Standaard reeks]

If automatisch afdrukken is ingesteld, wordt na elke regel de huidige regel geschreven ex opdracht die wijzigt
de inhoud van de huidige bewerkingsbuffer, en daarna label opdracht waarvoor de tag
er is een zoekpatroon gevonden of het tagregelnummer was geldig, tenzij:

1. De opdracht werd uitgevoerd in de open of visuele modus.

2. De opdracht is uitgevoerd als onderdeel van een globaal or v commando of @ bufferuitvoering.

3. Het bevel was de vorm van de dit artikel lezen commando dat een bestand in de bewerkingsbuffer leest.

4. Het bevel was de toevoegen, veranderingof invoegen opdracht.

5. De opdracht is niet beëindigd door a .

6. De huidige regel wordt geschreven door een vlag die bij de opdracht is opgegeven; Bijvoorbeeld,
verwijderen # schrijft de huidige regel zoals gespecificeerd voor de vlagmodificator naar de verwijderen
opdracht, en niet zoals gespecificeerd door de automatisch afdrukken optie bewerken.

automatisch schrijven, aw
[Standaard uitgeschakeld]

If automatisch schrijven is ingesteld en de bewerkingsbuffer is sinds de laatste keer volledig gewijzigd
naar een bestand wordt geschreven, wordt de inhoud van de bewerkingsbuffer geschreven alsof het ex schrijven
opdracht was opgegeven zonder argumenten, vóór elke opdracht die door de
automatisch schrijven bewerkingsoptie wordt uitgevoerd. Het karakter toevoegen '!' naar de opdrachtnaam van any
van de ex commando's behalve '!' zal het schrijven verhinderen. Als het schrijven mislukt, is dit een
fout en de opdracht wordt niet uitgevoerd.

verfraaien, bf
[Standaard uitgeschakeld]

If verfraaien is ingesteld, alle niet-afdrukbare tekens, behalve , , En
feed> tekens, worden verwijderd uit tekst die uit bestanden wordt ingelezen.

adresboek, dir
[Standaard implementatie gedefinieerd]

De waarde van deze optie specificeert de map waarin de editorbuffer zich moet bevinden
geplaatst. Als deze directory niet schrijfbaar is voor de gebruiker, zal de editor stoppen.

compatibel, ed
[Standaard uitgeschakeld]

Veroorzaakt de aanwezigheid van g en c achtervoegsels op vervangende opdrachten die moeten worden onthouden, en
geschakeld door de achtervoegsels te herhalen.

foutbellen, eb
[Standaard uitgeschakeld]

Als de redacteur aanwezig is ex modus, en de terminal ondersteunt geen opvallende modus (zoals
omgekeerde video), en foutbellen is ingesteld, worden foutmeldingen voorafgegaan door het waarschuwen van de
terminal.

uitg
[Standaard uitgeschakeld]

If uitg is ingesteld, ex heeft toegang tot alle .exrc bestand in de huidige map, zoals beschreven in
initialisatie in ex en vi. Indien uitg is niet ingesteld, ex zal er geen negeren .exrc bestand in de
huidige map tijdens initialisatie, tenzij de huidige map de map is die wordt genoemd door de
HOME variabele omgeving.

negeer zaak, ic
[Standaard uitgeschakeld]

If negeer zaak is ingesteld, zullen tekens met hoofdletters en kleine letters dat ook doen
ervoor te zorgen dat deze representaties als gelijkwaardig worden beschouwd voor doeleinden van reguliere expressie
vergelijking.

De negeer zaak de bewerkingsoptie heeft invloed op alle onthouden reguliere expressies; Bijvoorbeeld,
het ongedaan maken van de negeer zaak edit-optie zal een volgende veroorzaken vi n opdracht om naar te zoeken
de laatste reguliere reguliere expressie op hoofdlettergevoelige wijze.

lijst
[Standaard uitgeschakeld]

If lijst is ingesteld, bewerk dan de bufferregels die zijn geschreven terwijl u in bent ex opdrachtmodus wordt geschreven als
gespecificeerd voor de print commando met de l vlag opgegeven. In open of visuele modus, elk
de bewerkingsbufferlijn wordt weergegeven zoals gespecificeerd voor de ex print commando met de l vlag
gespecificeerd. In de open of visuele tekstinvoermodus, wanneer de cursor nergens op rust
teken in de regel, zal het rusten op de '$' het einde van de lijn markeren.

magie
[Standaard reeks]

If magie is ingesteld, wijzigt u de interpretatie van tekens in reguliere expressies en
vervanging vervangende snaren (zie Normaal Uitdrukkingen in ex en Vervanging Strings in
ex).

bericht
[Standaard reeks]

If bericht is ingesteld, de toestemming voor anderen om de schrijven or praten opdrachten om naar te schrijven
de terminal moet worden ingeschakeld in de open of visuele modus. De opdracht op shell-niveau bericht
n heeft voorrang op elke instelling van de ex bericht keuze; dat wil zeggen, als bericht y was
uitgegeven voordat de editor begon (of in een shell-escape), zoals:

:!mesg y

de bericht optie ex zal inkomende berichten onderdrukken, maar de bericht optie niet
schakel inkomende berichten in als bericht n werd uitgegeven.

nummer, nu
[Standaard uitgeschakeld]

If aantal is ingesteld, bewerk dan de bufferregels die zijn geschreven terwijl u in bent ex commandomodus zal worden geschreven met
regelnummers, in het formaat gespecificeerd door de print commando met de # vlag opgegeven. In
ex tekstinvoermodus, wordt elke regel voorafgegaan door het regelnummer dat deze in de tekstinvoermodus heeft
bestand.

In de open of visuele modus wordt elke bewerkingsbufferregel weergegeven met een voorafgaande regel
nummer, in het formaat gespecificeerd door de ex print commando met de # vlag opgegeven. Dit
Het lijnnummer wordt voor de evaluatie van de lijn niet beschouwd als onderdeel van de lijn
huidige kolom; dat wil zeggen dat kolompositie 1 de eerste kolompositie na de
formaat gespecificeerd door de print opdracht.

paragrafen, voor
[Standaard in de POSIX-landinstelling IPLPPPQPP Lipplpipbp]

De paragrafen de bewerkingsoptie definieert aanvullende alineagrenzen voor de open en
opdrachten in de visuele modus. De paragrafen bewerkingsoptie kan worden ingesteld op een tekenreeks
bestaande uit nul of meer karakterparen. Het zal een fout zijn om dit op een oneven waarde in te stellen
aantal karakters.

prompt
[Standaard reeks]

If prompt is ingesteld, ex commandomodusinvoer wordt gevraagd met a (':'); wanneer
niet is ingesteld, wordt er geen prompt geschreven.

alleen lezen
[Standaard zien tekst]

Indien de alleen lezen bewerkingsoptie is ingesteld, wordt de alleen-lezenmodus ingeschakeld (zie Schrijven). De
alleen lezen De bewerkingsoptie wordt geïnitialiseerd om in te stellen als een van de volgende omstandigheden van toepassing is
waar:

* De opdrachtregeloptie −R is opgegeven.

* Acties uitvoeren die gelijkwaardig zijn aan de toegang() functie aangeroepen met het volgende
argumenten geeft aan dat het bestand geen schrijfrechten heeft:

1. De huidige padnaam wordt gebruikt als pad argument.

2. De constante W_OK wordt gebruikt als de eenmode argument.

De alleen lezen De bewerkingsoptie kan worden geïnitialiseerd om in te stellen voor andere, door de implementatie gedefinieerde instellingen
redenen. De alleen lezen De bewerkingsoptie mag niet worden geïnitialiseerd om uit te schakelen op basis van een speciale bewerking
rechten van de gebruiker of het proces. De alleen lezen bewerkingsoptie wordt elke keer opnieuw geïnitialiseerd
tijdstip waarop de inhoud van de bewerkingsbuffer wordt vervangen (bijvoorbeeld door een Bewerk or volgende
commando) tenzij de gebruiker dit expliciet heeft ingesteld, in welk geval het ingesteld blijft tot
de gebruiker schakelt het expliciet uit. Eenmaal uitgeschakeld, wordt het elke keer opnieuw opnieuw geïnitialiseerd
de inhoud van de bewerkingsbuffer wordt vervangen.

terugtrekken
[Standaard uitgeschakeld]

De editor simuleert een intelligente terminal op een domme terminal. (Omdat dit waarschijnlijk wel het geval is
vereisen een grote hoeveelheid uitvoer naar de terminal, dit is alleen nuttig bij hoge transmissie
snelheden.)

remap
[Standaard reeks]

If remap is ingesteld, zal de kaartvertaling kaarten mogelijk maken die zijn gedefinieerd in termen van andere kaarten;
de vertaling gaat door totdat er een eindproduct is verkregen. Indien niet ingesteld, slechts één stap
vertaling zal plaatsvinden.

verslag
[Standaard 5]

De waarde hiervan verslag bewerkingsoptie specificeert hoeveel regels worden toegevoegd, gekopieerd,
verwijderd of gewijzigd in de bewerkingsbuffer zal ervoor zorgen dat er een informatiebericht wordt geschreven
aan de gebruiker. De volgende omstandigheden veroorzaken een informatief bericht. De boodschap
bevat het aantal toegevoegde, gekopieerde, verwijderde of gewijzigde regels, maar dat is anders
niet gespecificeerd.

* Een ex or vi editoropdracht, anders dan open, ongedaan makenof visuele, dat verandert tenminste
de waarde van de verslag bewerk optie aantal regels, en die geen deel uitmaakt van een ex
globaal or v commando, of ex or vi bufferuitvoering, zal een informatieve
bericht dat geschreven moet worden.

* Een ex rukken or vi y or Y commando, dat tenminste de waarde kopieert van de verslag Bewerk
optie plus 1 aantal regels, en die geen deel uitmaakt van een ex globaal or v commando, of
ex or vi bufferuitvoering, zal ervoor zorgen dat er een informatiebericht wordt geschreven.

* Een ex globaal, v, open, ongedaan makenof visuele commando of ex or vi bufferuitvoering, dat voegt toe
of verwijdert een totaal van ten minste de waarde van de verslag bewerk optie aantal regels,
en die geen deel uitmaakt van een ex globaal or v commando, of ex or vi bufferuitvoering,
ervoor zorgen dat er een informatief bericht wordt geschreven. (Als er bijvoorbeeld 3 regels zijn
toegevoegd en 8 regels verwijderd tijdens een ex visuele commando, zou 5 het vergeleken getal zijn
tegen verslag bewerkingsoptie nadat de opdracht is voltooid.)

rol, scr
[Standaard (aantal regels op het display −1)/2]

De waarde van de rol De bewerkingsoptie bepaalt het aantal regels dat wordt gescrolld door de ex
‐D en z opdrachten. Voor de vi ‐D en -U-commando's, dat zal zo zijn
het aanvankelijke aantal regels dat moet worden gescrolld als er geen voorgaande is ‐D of ‐U-commando
is uitgevoerd.

secties
[Standaard in de POSIX-landinstelling NHSHH HUnhsh]

De secties De bewerkingsoptie definieert aanvullende sectiegrenzen voor de open en
opdrachten in de visuele modus. De secties bewerkingsoptie kan worden ingesteld op een tekenreeks bestaande uit
van nul of meer karakterparen; het zal een fout zijn om het op een oneven aantal in te stellen
tekens.

shell, sh
[Standaard van de omgevingsvariabele SHELL]

De waarde van deze optie moet een string zijn. De standaardwaarde wordt overgenomen van de SHELL
omgevingsvariabele. Als de SHELL omgevingsvariabele nul of leeg is, de sh (Zie sh)
hulpprogramma is de standaardinstelling.

ploegbreedte, sw
[Standaard 8]

De waarde van deze optie geeft de breedte in kolommen van een gebruikt inspringniveau weer
tijdens automatische inspringing en door de shift-opdrachten (< en >).

laat overeenkomst zien, sm
[Standaard uitgeschakeld]

De functionaliteit beschreven voor de laat overeenkomst zien bewerkingsoptie hoeft niet te worden ondersteund op blok-
terminals of terminals met onvoldoende mogelijkheden.

If laat overeenkomst zien wordt ingesteld, in open of visuele modus, wanneer een ')' or '}' wordt getypt, als het overeenkomt
'(' or '{' is momenteel zichtbaar op het display, de matching '(' or '{' zal worden gemarkeerd
de cursor voor onbepaalde tijd naar zijn locatie verplaatsen.

showmodus
[Standaard uitgeschakeld]

If showmodus is ingesteld, in open of visuele modus, zal de huidige modus waarin de editor zich bevindt
weergegeven op de laatste regel van het display. De commandomodus en de tekstinvoermodus zijn
gedifferentieerd; andere niet-gespecificeerde modi en door de implementatie gedefinieerde informatie kunnen dat wel zijn
weergegeven.

langzaam openen
[Standaard uitgeschakeld]

If langzaam openen is ingesteld tijdens open en visuele tekstinvoermodi, zal de editor niet updaten
andere gedeelten van het scherm dan de weergaveregelkolommen waarin de tekens worden weergegeven
ingevoerd door de gebruiker (zie Invoer Mode commando's in vi).

tabstop, ts
[Standaard 8]

De waarde van deze bewerkingsoptie specificeert de kolomgrens die wordt gebruikt door a in de
weergeven (zie automatisch afdrukken, ap en Invoer Mode commando's in vi).

taglengte, tl
[Standaard nul]

De waarde van deze bewerkingsoptie specificeert het maximale aantal tekens
als significant beschouwd in de door de gebruiker opgegeven tagnaam en in de tagnaam uit de tags
bestand. Als de waarde nul is, zijn alle tekens in beide tagnamen significant.

labels
[Standaard zien tekst]

De waarde van deze bewerkingsoptie moet een reeks zijn van -gescheiden padnamen van bestanden
gebruikt door de label commando. De standaardwaarde is niet gespecificeerd.

termijn
[Standaard van de omgevingsvariabele TERMIJN]

De waarde van deze bewerkingsoptie moet een tekenreeks zijn. De standaardwaarde wordt overgenomen van de TERMIJN
variabel in de omgeving. Als de TERMIJN omgevingsvariabele leeg of null is, wordt de
standaard is niet gespecificeerd. De redacteur zal de waarde van deze bewerkingsoptie gebruiken om te bepalen
het type weergaveapparaat.

De resultaten zijn niet gespecificeerd als de gebruiker de waarde van de termbewerkingsoptie daarna wijzigt
initialisatie van de editor.

kortom
[Standaard uitgeschakeld]

If kortom is ingesteld, kunnen foutmeldingen minder uitgebreid zijn. Maar afgezien van dit voorbehoud,
foutmeldingen zijn niet gespecificeerd. Bovendien hoeven niet alle foutmeldingen te worden gewijzigd
verschillende instellingen van deze optie.

waarschuwen
[Standaard reeks]

If waarschuwen is ingesteld en de inhoud van de bewerkingsbuffer is sindsdien gewijzigd
laatst volledig geschreven, zal de redacteur een waarschuwingsbericht schrijven voordat het definitief is !
commando's (zie Ontsnappen).

venster
[Standaard zien tekst]

Een waarde die in de open en visuele modus wordt gebruikt door de ‐B en ‐F-opdrachten, en, in
visuele modus, om het aantal regels op te geven dat wordt weergegeven wanneer het scherm opnieuw wordt geverfd.

Indien de w opdrachtregeloptie niet is opgegeven, wordt de standaardwaarde ingesteld op
waarde van de LIJNEN omgevingsvariabele. Als de LIJNEN omgevingsvariabele is leeg of
null, de standaardwaarde is het aantal regels op het scherm min 1.

Het instellen van venster bewerkingsoptie op nul of op een waarde die groter is dan het aantal regels erin
de weergave minus 1 (expliciet of gebaseerd op de w optie of de LIJNEN milieu
variabele) zal ervoor zorgen dat de venster bewerkingsoptie die moet worden ingesteld op het aantal regels in het
min 1 weergeven.

De baudrate van de terminallijn kan de standaardwaarde wijzigen in een door de implementatie gedefinieerde configuratie
manier.

wikkelmarge, wm
[Standaard 0]

Als de waarde van deze bewerkingsoptie nul is, heeft deze geen effect.

Als het niet in de POSIX-landinstellingen is, is het effect van deze bewerkingsoptie door de implementatie gedefinieerd.

Anders moet het een aantal kolommen specificeren vanaf de eindmarge van de terminal.

Tijdens open en visuele tekstinvoermodi wordt voor elk teken waarvoor een deel van de
teken wordt weergegeven in een kolom die kleiner is dan wikkelmarge kolommen vanaf het einde
marge van de weergaveregel, zal de editor zich als volgt gedragen:

1. Als het personage dat deze gebeurtenis activeert een , het, en alles wat er onmiddellijk aan voorafgaat
tekens op de huidige regel die zijn ingevoerd tijdens de uitvoering van de huidige regel
tekstinvoeropdracht, wordt weggegooid en de editor gedraagt ​​zich alsof de gebruiker dat had gedaan
een single ingevoerd in plaats van. Bovendien, als het volgende door de gebruiker ingevoerde teken is
A , wordt deze ook weggegooid.

2. Anders, als er een of meer zijn tekens op de huidige regel onmiddellijk
voorafgaand aan de laatste groep ingevoegde niet- tekens die zijn ingevoerd tijdens
de uitvoering van het huidige tekstinvoercommando, de karakters zullen zijn
vervangen alsof de gebruiker er één had ingevoerd in plaats van.

Indien de automatisch inspringen bewerkingsoptie is ingesteld en de gebeurtenissen beschreven in 1. of 2. worden uitgevoerd,
elk tekens op of na de cursor in de huidige regel worden weggegooid.

De eindmarge wordt bepaald door het systeem of wordt overschreven door de gebruiker, zoals
beschreven voor COLUMNS in de sectie OMGEVINGVARIABELEN en het volume Basisdefinities
van POSIX.1-2008, Hoofdstuk 8, Milieu Variabelen.

wrapscan, ws
[Standaard reeks]

If wrapscan is ingesteld, zoekt (de ex / or ? adressen, of open en visuele modus /, ?, N,
en n commando's) loopt rond het begin of einde van de bewerkingsbuffer; wanneer uitgeschakeld,
zoekopdrachten stoppen aan het begin of einde van de bewerkingsbuffer.

schrijf, wa
[Standaard uitgeschakeld]

If schrijven is ingesteld, worden enkele van de controles uitgevoerd bij het uitvoeren van de ex schrijven commando's
wordt geblokkeerd, zoals beschreven in de editoroptie automatisch schrijven.

EXIT STATUS


De volgende exit-waarden worden geretourneerd:

0 Succesvolle afronding.

>0 Er is een fout opgetreden.

GEVOLGEN OF FOUTEN


Wanneer er een fout wordt aangetroffen en de standaardinvoer geen terminalapparaatbestand is, ex
zal het bestand niet schrijven of terugkeren naar de opdracht- of tekstinvoermodus en zal eindigen met
een uitgangsstatus die niet gelijk is aan nul.

Als er anders een onherstelbare fout wordt aangetroffen, is dit gelijk aan een SIGHUP
asynchrone gebeurtenis.

Anders zal de editor, wanneer er een fout wordt aangetroffen, zich gedragen zoals gespecificeerd in commando
Lijn Parsing in ex.

De volgend secties zijn informatief.

TOEPASSING GEBRUIK


Als er een SIGSEGV-signaal wordt ontvangen terwijl ex een bestand opslaat, is het bestand mogelijk niet
succesvol opgeslagen.

De volgende commando kan meer dan één bestand accepteren, dus gebruik zoals:

volgende 'ls [abc]*`

is geldig; het zou niet geldig zijn voor de Bewerk or dit artikel lezen commando's, bijvoorbeeld omdat ze
verwacht slechts één bestand en er treden niet-gespecificeerde resultaten op.

Voorbeelden


Geen.

BEWEEGREDENEN


De ex/vi specificatie is gebaseerd op de historische praktijk gevonden in de 4 BSD en System
V-implementaties van ex en vi.

A begrensd editor (zowel de historische rood nut en aanpassingen aan ex) waren
overwogen en afgewezen voor opname. Geen van beide opties bood het beveiligingsniveau dat dat bood
gebruikers zouden kunnen verwachten.

Dat wordt erkend ex visuele modus en gerelateerde functies zouden moeilijk zijn, zo niet
onmogelijk om op bevredigende wijze te implementeren op een terminal in blokmodus, of op een terminal zonder
elke vorm van cursoradressering; het is dus geen verplichte vereiste dat dergelijke kenmerken aanwezig zijn
zou op alle terminals moeten werken. Het is echter de bedoeling dat een ex uitvoering
moeten de volledige reeks mogelijkheden bieden op alle terminals die deze kunnen ondersteunen.

Opties
De c vervanging voor +commando werd geïnspireerd door de e optie van dorst. Historisch gezien allemaal
Dergelijke commando's (zie Bewerk en volgende ook) werden uitgevoerd vanaf de laatste regel van de bewerking
buffer. Dit betekende bijvoorbeeld dat "+/patroon" zou mislukken tenzij de wrapscan optie
werd ingesteld. POSIX.1‐2008 vereist conformiteit met de historische praktijk. De +commando Optie is
niet langer gespecificeerd door POSIX.1-2008, maar kan in sommige implementaties aanwezig zijn.
Historisch gezien beperkten sommige implementaties de ex opdrachten die als onderdeel kunnen worden vermeld
van de opdrachtregelargumenten. Omwille van de consistentie staat POSIX.1‐2008 dit niet toe
beperkingen.

In historische implementaties van de editor is de R optie (en de alleen lezen bewerkingsoptie)
verhinderde alleen het overschrijven van bestanden; toevoegen aan bestanden was nog steeds toegestaan, mapping
losjes in de csh geen gek variabel. Sommige implementaties zijn echter niet gevolgd
deze semantische, en alleen lezen laat ook geen toevoeging toe. POSIX.1‐2008 volgt de
laatste praktijk, in de overtuiging dat het een meer voor de hand liggende en intuïtieve betekenis is van alleen lezen.

De s optie onderdrukt alle interactieve gebruikersfeedback en is handig voor het bewerken van scripts
bij batchtaken. De lijst met specifieke effecten is historische praktijk. Het terminaltype
``niet in staat om open en visuele modi te ondersteunen'' wordt historisch gezien ``dom'' genoemd.

De t optie was vereist omdat de ctags hulpprogramma verschijnt in POSIX.1-2008 en de
optie is beschikbaar in alle historische implementaties van ex.

Historisch gezien is de ex en vi nutsbedrijven geaccepteerd a x optie, waarop encryptie gebaseerd was
het algoritme gevonden in het historische crypt nutsvoorziening. De x optie voor encryptie, en de
geassocieerd crypt hulpprogramma, zijn weggelaten omdat het gebruikte algoritme niet specificeerbaar was
de exportcontrolewetten van sommige landen maken het moeilijk om cryptografie te exporteren
technologie. Bovendien bood het historisch gezien niet het beveiligingsniveau dat gebruikers hadden
zou kunnen verwachten.

Standaard Invoer
Een einde-bestandsvoorwaarde is niet gelijk aan een einde-bestand-teken. Een gemeenschappelijk eind-
bestandskarakter, ‐D, is historisch gezien een ex opdracht.

Er was geen maximale regellengte in historische implementaties van ex. Concreet, zoals het
in stukjes werd geparseerd, hadden de adressen een andere maximale lengte dan de bestandsnamen.
Verder werd de maximale lijnbuffergrootte aangegeven als BUFSIZ, wat verschillende lengtes had
op verschillende systemen. Deze versie heeft de waarde {LINE_MAX} geselecteerd om een ​​redelijke waarde op te leggen
beperking op draagbaar gebruik van ex en om testsuiteschrijvers te helpen bij hun ontwikkeling van
realistische tests die deze limiet hanteren.

Invoer Bestanden
Het was een expliciete beslissing van de standaardontwikkelaars dat a worden toegevoegd aan eventuele
bestand waar er één ontbreekt. Men geloofde dat dit kenmerk van ex en vi werd vertrouwd door gebruikers in
om ervoor te zorgen dat tekstbestanden geen trailing hebben draagbaarder. Dat wordt erkend
hiervoor is een door de gebruiker gespecificeerde optie of extensie vereist voor implementaties die dit toestaan ex
en vi om bestanden van een ander type dan tekst te bewerken als dergelijke bestanden niet anderszins worden geïdentificeerd door
het systeem. Er werd overeengekomen dat de mogelijkheid om bestanden van een willekeurig type te bewerken nuttig kan zijn,
maar het werd niet nodig geacht om dat te verplichten ex or vi implementatie nodig zijn
om andere bestanden dan tekstbestanden te verwerken.

De paragraaf in de sectie INPUT FILES, ``Standaard, ...'', is bedoeld om een
al lang bestaand veiligheidsprobleem in ex en vi; die van de ``modeline'' of ``modelines''
optie bewerken. Met deze functie is elke regel in de eerste of laatste vijf regels van het bestand mogelijk
waarin de snaren zitten "ex:" or "vi:" (en blijkbaar "ei:" or "vx:") een lijn zijn
met editoropdrachten, en ex interpreteert de hele tekst tot de volgende ':' of
als opdracht. Denk bijvoorbeeld aan de gevolgen als een nietsvermoedende gebruiker gebruik maakt van ex or
vi als redacteur bij het beantwoorden van een e-mailbericht waarin een regel staat als:

ex:! rm −rf :

verscheen in de handtekeningregels. De standaardontwikkelaars waren er sterk van overtuigd dat een editor
zou standaard geen regels van een bestand moeten interpreteren. Verkopers worden dringend verzocht deze te verwijderen
deze functie uit hun implementaties van ex en vi.

Asynchronous Evenementen
De bedoeling van de zinsnede ``complete write'' is dat de gehele bewerkingsbuffer wordt geschreven
naar stabiele opslag. De opmerking over tijdelijke bestanden is bedoeld voor implementaties die
gebruik tijdelijke bestanden om bewerkingsbuffers te back-uppen die niet door de gebruiker zijn genoemd.

Historisch gezien werd SIGQUIT genegeerd door ex, maar was het equivalent van de Q commando in visueel
modus; dat wil zeggen, het verliet de visuele modus en ging naar binnen ex modus. POSIX.1-2008 staat het toe, maar doet het wel
Dit gedrag is niet vereist. Historisch gezien werd SIGINT vaak gebruikt door vi gebruikers te beëindigen
tekstinvoermodus ( ‐C is vaak gemakkelijker in te voeren dan ). Enkele implementaties
of vi waarschuwde de terminal over deze gebeurtenis, en sommigen niet. POSIX.1-2008 vereist dat
SIGINT gedraagt ​​zich identiek aan , en dat de terminal niet wordt gewaarschuwd.

Historisch gezien is het opschorten van de ex editor tijdens tekstinvoermodus was vergelijkbaar met SIGINT, zoals
voltooide regels bleven behouden, maar elke gedeeltelijke regel werd weggegooid, en de redacteur keerde terug naar
opdrachtmodus. POSIX.1-2008 zwijgt over deze kwestie; implementaties worden aangemoedigd
volg waar mogelijk de historische praktijk.

Historisch gezien is de vi de editor behandelde SIGTSTP niet als een asynchrone gebeurtenis, en dat was het ook
daarom onmogelijk om de editor op te schorten in de visuele tekstinvoermodus. Er zijn twee belangrijke
redenen hiervoor. De eerste is dat SIGTSTP een uitzendsignaal is op UNIX-systemen, en de
keten van gebeurtenissen waarbij de schaal execHet is een applicatie die dan execs vi meestal veroorzaakt
verwarring voor de terminalstatus als SIGTSTP werd afgeleverd bij de procesgroep in de
standaard manier. De tweede was dat de meeste implementaties van UNIX vloeken pakket deed
SIGTSTP niet veilig afhandelen, en de ontvangst van SIGTSTP op het verkeerde moment zou dit veroorzaken
botsen. POSIX.1-2008 zwijgt over deze kwestie; implementaties worden aangemoedigd om te behandelen
opschorting indien mogelijk als een asynchrone gebeurtenis.

Historisch gezien onderbraken wijzigingen in de bewerkingsbuffer die vóór SIGINT werden aangebracht een bewerking
werden behouden; dat wil zeggen, ergens tussen nul en alle regels die moeten worden gewijzigd
gewijzigd tegen de tijd dat de SIGINT arriveerde. Deze wijzigingen zijn niet door de regering verworpen
komst van SIGINT. POSIX.1-2008 staat dit gedrag toe, waarbij wordt opgemerkt dat de ongedaan maken commando is
vereist om deze gedeeltelijk voltooide opdrachten ongedaan te kunnen maken.

De actie die wordt ondernomen voor andere signalen dan SIGINT, SIGCONT, SIGHUP en SIGTERM is
niet gespecificeerd omdat sommige implementaties proberen de bewerkingsbuffer in een bruikbare staat op te slaan
wanneer andere signalen worden ontvangen.

Standaard Fout
Voor ex/viDiagnostische berichten zijn berichten die zijn gerapporteerd als gevolg van een mislukte poging
aan te roepen ex or vi, zoals ongeldige opties of onvoldoende middelen, of een abnormaal
beëindigingsvoorwaarde. Diagnostische berichten mogen niet worden verward met de foutmeldingen
gegenereerd door ongepaste of illegale gebruikersopdrachten.

initialisatie in ex en vi
Indien een ex commando (anders dan cd, chdirof (bron)) heeft een bestandsnaamargument, een of beide
de alternatieve en huidige padnamen worden ingesteld. Informeel zijn ze als volgt vastgesteld:

1. Indien de ex opdracht is er een die de inhoud van de bewerkingsbuffer vervangt, en it
slaagt, wordt de huidige padnaam ingesteld op het bestandsnaamargument (het eerste
bestandsnaamargument in het geval van de volgende command) en de alternatieve padnaam zal zijn
ingesteld op de vorige huidige padnaam, als die er was.

2. In het geval van de lees-/schrijfformulieren van het bestand dit artikel lezen en schrijven commando's, als die er zijn
geen huidige padnaam, de huidige padnaam wordt ingesteld op het bestandsnaamargument.

3. Anders wordt de alternatieve padnaam ingesteld op het bestandsnaamargument.

Bijvoorbeeld :bewerking foo en :herstellen foo, indien succesvol, stelt u de huidige padnaam in, en
als er eerder een huidige padnaam was, de alternatieve padnaam. De commando's :schrijven,
!opdracht en :bewerking stel noch de huidige, noch de alternatieve padnamen in. Als de :bewerking foo
opdracht om de een of andere reden zou mislukken, zou de alternatieve padnaam worden ingesteld. De dit artikel lezen en
schrijven commando's stellen de alternatieve padnaam in op hun filet argument, tenzij de huidige
padnaam is niet ingesteld, in welk geval ze de huidige padnaam instellen op hun filet argumenten.
De alternatieve padnaam is historisch gezien niet ingesteld door de :bron commando. POSIX.1-2008
vereist aanpassing aan de historische praktijk. Implementaties die opdrachten toevoegen die nemen
bestandsnamen als argumenten wordt aangemoedigd om de alternatieve padnaam in te stellen zoals hier beschreven.

Historisch ex en vi Lees de .exrc bestand in de $ HOME map twee keer, als de editor
werd geëxecuteerd in de $ HOME map. POSIX.1‐2008 verbiedt dit gedrag.

Historisch gezien is de 4 BSD ex en vi Lees de $ HOME en lokaal .exrc bestanden als ze eigendom waren
door de echte ID van de gebruiker, of de bron optie is ingesteld, ongeacht andere
overwegingen. Dit was een beveiligingsprobleem omdat het mogelijk is om normale UNIX te plaatsen
systeemopdrachten binnen a .exrc bestand. POSIX.1-2008 specificeert niet de bron keuze,
en historische implementaties worden aangemoedigd om het te verwijderen.

De .exrc bestanden moeten eigendom zijn van de echte ID van de gebruiker en mogen niet door iemand anders kunnen worden geschreven
dan de eigenaar. De juiste privilege-uitzondering is bedoeld om gebruikers dit toe te staan
verkrijg speciale privileges, maar blijf gebruik maken van de .exrc bestanden in hun thuismappen.

Systeem V versie 3.2 en hoger vi implementaties hebben de optie toegevoegd [geen]uitg. Het gedrag
is dat lokaal .exrc bestanden zijn alleen-lezen als de uitg optie is ingesteld. De standaardinstelling voor de
uitg optie was uitgeschakeld, dus standaard lokaal .exrc bestanden zijn niet gelezen. Het probleem was dit
bedoeld om op te lossen was dat Systeem V gebruikers toestond bestanden weg te geven, dus dat is er niet
mogelijke eigendoms- of schrijfbaarheidstest om ervoor te zorgen dat het bestand veilig is. Dit is nog steeds een
beveiligingsprobleem op systemen waar gebruikers bestanden kunnen weggeven, maar er is niets
extra dat POSIX.1-2008 kan doen. De door de implementatie gedefinieerde uitzondering is bedoeld om
toestaan ​​dat groepen lokaal zijn .exrc bestanden die door gebruikers worden gedeeld, door pseudo-gebruikers te creëren
eigenaar worden van de gedeelde bestanden.

POSIX.1-2008 vermeldt niet het hele systeem ex en vi opstartbestanden. Terwijl ze bestaan
diverse implementaties van ex en vi, ze zijn in geen enkele implementatie aanwezig
beschouwd als historische praktijk door POSIX.1-2008. Implementaties die dergelijke bestanden hebben
mag ze alleen gebruiken als ze eigendom zijn van de echte gebruikers-ID of van een geschikte gebruiker (bijv
bijvoorbeeld root op UNIX-systemen) en of ze door geen enkele andere gebruiker dan hun schrijfbaar zijn
eigenaar. Systeembrede opstartbestanden moeten worden gelezen vóór de UITGANG variabele, $HOME/.exrc,
of lokaal .exrc bestanden worden geëvalueerd.

Historisch gezien: elke ex commando kan worden ingevoerd in de UITGANG variabele of de .exrc bestand
hoewel degenen die vereisen dat de bewerkingsbuffer over het algemeen al regels tekst bevatten
zorgde ervoor dat historische implementaties van de editor daalden kern. POSIX.1-2008 vereist dat
elke ex opdracht is toegestaan ​​in de UITGANG variabele en .exrc bestanden, voor de eenvoud van
specificatie en consistentie, hoewel velen van hen uiteraard onder vele zullen falen
situatie.

De initialisatie van de inhoud van de bewerkingsbuffer gebruikt de zinsnede ``het effect zal
wees'' met betrekking tot verschillende ex opdrachten. De bedoeling van deze zin is die bewerkingsbuffer
inhoud die tijdens de initialisatiefase is geladen, gaat niet verloren; dat wil zeggen, het laden van de bewerking
buffer zou moeten mislukken als de .exrc bestand de inhoud van een bestand ingelezen en niet
schrijf vervolgens de bewerkingsbuffer. Een aanvullende bedoeling van deze zin is om dat te specificeren
de initiële huidige regel en kolom worden ingesteld zoals gespecificeerd voor het individu ex commando's.

Historisch gezien is de t optie gedroeg zich alsof het zoeken naar tags een +commando; dat wil zeggen, het was
uitgevoerd vanaf de laatste regel van het bestand gespecificeerd door de tag. Dit resulteerde in de zoektocht
mislukt als het patroon een voorwaarts zoekpatroon was en de wrapscan bewerkingsoptie was dat niet
set. POSIX.1-2008 staat dit gedrag niet toe en vereist dat er naar de tag wordt gezocht
patroon op het gehele bestand moet worden uitgevoerd en, als dit niet wordt gevonden, dat de huidige regel moet worden ingesteld
naar een redelijkere locatie in het bestand.

Historisch gezien werd de lege bewerkingsbuffer aangeboden voor bewerking wanneer een bestand niet was opgegeven door
de gebruiker had geen naam. Dit is toegestaan ​​door POSIX.1-2008; implementaties zijn dat echter wel
aangemoedigd om gebruikers een tijdelijke bestandsnaam voor deze buffer te geven, omdat dit hen dit toestaat
het gebruik van ex opdrachten die de huidige padnaam gebruiken tijdens tijdelijke bewerkingssessies.

Historisch gezien werd het bestand opgegeven met behulp van de t optie maakte geen deel uit van het huidige argument
lijst. Deze praktijk is toegestaan ​​door POSIX.1-2008; implementaties worden echter aangemoedigd
om de naam op te nemen in de huidige argumentenlijst voor consistentie.

Historisch gezien is de c opdracht werd over het algemeen pas uitgevoerd als een bestand al bestond
is bewerkt. POSIX.1‐2008 vereist conformiteit met deze historische praktijk. Beveelt dat
zou de oorzaak kunnen zijn c uit te voeren opdracht omvat de ex commando's Bewerk, volgende, herstellen,
terugspoelen en labelEn vi commando's ‐^ en ‐]. Historisch gezien is het lezen van a
bestand in een bewerkingsbuffer veroorzaakte niet de c commando dat moet worden uitgevoerd (ook al zou dit kunnen
stel de huidige padnaam in), met de uitzondering dat dit wel het c opdracht te zijn
uitgevoerd als: de editor aanwezig was ex modus had de bewerkingsbuffer geen huidige padnaam, de edit
buffer was leeg en er waren nog geen leesopdrachten geprobeerd. Voor consistentie en
eenvoud van specificatie, POSIX.1-2008 staat dit gedrag niet toe.

Historisch gezien is de r optie was hetzelfde als een normale bewerkingssessie als er geen herstel was
beschikbare informatie voor het bestand. Hierdoor konden gebruikers het volgende invoeren:

vi r *.C

en herstel alle bestanden die herstelbaar waren. In sommige implementaties was er sprake van herstel
alleen geprobeerd voor het eerste genoemde bestand, en het bestand is niet in het argument ingevoerd
lijst; in andere gevallen werd voor elk genoemd bestand geprobeerd te herstellen. Daarnaast enkele historische
implementaties genegeerd r if t is opgegeven of ondersteunt de opdrachtregel niet filet
argumenten met de t keuze. Voor consistentie en eenvoud van specificatie,
POSIX.1-2008 staat deze speciale gevallen niet toe en vereist dat wordt geprobeerd het bestand te herstellen
de eerste keer dat elk bestand wordt bewerkt.

Historisch vi initialiseerde de ` en ' merken, maar ex deed niet. Dit betekende dat als de
eerste commando binnen ex modus was visuele of als een ex opdracht als eerste werd uitgevoerd (bijvoorbeeld
vi + 10 filet), vi is ingevoerd zonder dat de markeringen zijn geïnitialiseerd. Omdat de standaard
ontwikkelaars waren van mening dat de markeringen over het algemeen nuttig waren, en voor consistentie en eenvoud
Volgens de specificatie vereist POSIX.1-2008 dat ze altijd worden geïnitialiseerd als ze open zijn of
visuele modus, of indien in ex modus en de bewerkingsbuffer is niet leeg. Initialiseert het niet ex
modus als de bewerkingsbuffer leeg is, is historische praktijk; het is echter altijd zo geweest
mogelijk om markeringen in lege bewerkingsbuffers in te stellen (en te gebruiken) in open en visuele bewerkingsmodi
sessies.

Het aanpakken
Historisch ex en vi de aanvullende adresformulieren geaccepteerd '\/' en '\?'. Zij waren
gelijkwaardig "//" en "??"respectievelijk. Meestal zijn ze niet vereist door POSIX.1-2008
omdat niemand zich kan herinneren of ze historisch gezien ooit iets anders hebben gedaan.

Historisch ex en vi stond een adres van nul toe voor verschillende commando's, en toegestaan
de % adres in lege bestanden voor anderen. Voor consistentie heeft POSIX.1-2008 ondersteuning nodig
voor de eerste in de weinige commando's waar het zinvol is, en het anderszins niet toestaat. In
bovendien, omdat POSIX.1-2008 dat vereist % logisch gelijkwaardig zijn aan "1,$", het is
wordt ook ondersteund waar dit zinvol is en is anderszins niet toegestaan.

Historisch gezien is de % adres kon niet worden gevolgd door verdere adressen. Voor consistentie
en eenvoud van specificatie vereist POSIX.1-2008 dat er extra adressen zijn
ondersteund.

Al het volgende is geldig adressen:

+++ Drie regels na de huidige regel.

/re/− Eén regel vóór het volgende voorkomen van re.

−2 Twee regels voor de huidige regel.

3 −−−− 2 Regel één (let op het tussenliggende negatieve adres).

1 2 3 Lijn zes.

Elk aantal adressen kan worden verstrekt aan commando's die adressen aannemen; Bijvoorbeeld,
"1,2,3,4,5p" drukt regels 4 en 5 af, omdat twee het grootste geldige aantal adressen is
geaccepteerd door de print commando. Dit in combinatie met de scheidingsteken,
stelt gebruikers in staat om opdrachten te maken op basis van geordende patronen in het bestand. Bijvoorbeeld de
commando 3;/foo/;+2afdrukken geeft de eerste regel na regel 3 weer die het patroon bevat
foo, plus de volgende twee regels. Merk op dat het adres 3; moet worden geëvalueerd voordat het wordt uitgevoerd
verwijderd omdat de zoekoorsprong voor de /foe/ commando hangt hiervan af.

Historisch gezien konden waarden aan adressen worden toegevoegd door ze na een of meer adressen op te nemen
tekens; Bijvoorbeeld, 3 - 5p schreef de zevende regel van het bestand, en /foe/ 5
was hetzelfde als /foe/+5. Er konden echter alleen absolute waarden worden toegevoegd; Bijvoorbeeld,
5 /foe/ was een fout. POSIX.1‐2008 vereist conformiteit met de historische praktijk. Adres
compensaties worden afzonderlijk gespecificeerd van adressen, omdat dit historisch gezien het geval zou kunnen zijn
verstrekt aan zoekopdrachten in de visuele modus.

Historisch gezien werden ontbrekende adressen standaard op de huidige regel gezet. Dit gold voor
voor- en achteraan -gescheiden adressen, en voor achteraan -gescheiden adressen
adressen. Voor consistentie vereist POSIX.1-2008 dit voor -adressen als voorloop
goed.

Historisch ex en vi accepteerde de '^' teken als adres en als vlagoffset
voor commando's. In beide gevallen was het identiek aan de '−' karakter. POSIX.1-2008 niet
dit gedrag vereisen of verbieden.

Historisch gezien konden de verbeteringen aan reguliere reguliere expressies worden gebruikt bij het adresseren;
bijvoorbeeld '~', '\<' en '\>'. POSIX.1-2008 vereist conformiteit met het historische
oefening; dat wil zeggen dat het gebruik van reguliere expressies consistent moet zijn, en dat dit regelmatig moet zijn
expressieverbeteringen worden ondersteund overal waar reguliere expressies worden gebruikt.

commando Lijn Parsing in ex
Historisch ex Het parseren van opdrachten was zelfs nog complexer dan wat hier wordt beschreven. POSIX.1-2008
vereist de subset van de opdrachtparsering waarvan de standaardontwikkelaars dachten dat dit het geval was
gedocumenteerd en waarvan redelijkerwijs mag worden verwacht dat ze deze op een draagbare manier gebruiken, en
dat was historisch consistent tussen implementaties. (De verwijderde functionaliteit is
op zijn best onduidelijk.) Historische implementaties zullen veranderingen vereisen om hieraan te voldoen
met POSIX.1-2008; Er wordt echter niet van gebruikers verwacht dat ze deze wijzigingen opmerken. Meest
van de complexiteit van ex parseren is bedoeld om drie speciale beëindigingsgevallen af ​​te handelen:

1. De !, globaal, v, en de filterversies van de dit artikel lezen en schrijven opdrachten zijn gescheiden
door -tekens (ze kunnen -tekens bevatten die normaal gesproken
shellpijpen).

2. De ex, Bewerk, volgende en visuele in de open en visuele modus worden alle opdrachten uitgevoerd ex commando's,
optioneel met tekens, als hun eerste argumenten.

3. De s command neemt een reguliere expressie als eerste argument, en gebruikt de
tekens afbakenen om de opdracht af te bakenen.

Historisch gezien zijn tekens in de +commando argument van de ex, Bewerk, volgende,
vi en visuele opdrachten, en in de patroon en vervanging delen van de s bevel, deed
de opdracht niet afbakenen, en in de filtergevallen voor dit artikel lezen en schrijvenEn !, globaal,
en v commando's, ze bakenden het commando helemaal niet af. Bijvoorbeeld het volgende
commando's zijn allemaal geldig:

:bewerken +25 | s/abc/ABC/bestand.c
:s/ | /PIJP/
:lees !spell % | columneren
:globaal/patroon/p | l
:s/a/b/ | s/c/d | set

Historisch gezien werden lege of regels ingevuld .exrc bestanden (bron)d-bestanden (evenals
UITGANG variabelen en ex opdrachtscripts) werden behandeld als standaardopdrachten; dat is, print
opdrachten. POSIX.1-2008 vereist specifiek dat ze worden genegeerd wanneer ze worden aangetroffen in
.exrc en (bron)d-bestanden om een ​​veelvoorkomende bron van nieuwe gebruikersfouten te elimineren.

Historisch ex opdrachten met meerdere aangrenzende (of gescheiden) verticale lijnen
werden vreemd behandeld toen ze werden geëxecuteerd ex modus. Het commando bijvoorbeeld ||| <koets-
return>, wanneer de cursor op regel 1 stond, werden de regels 2, 3 en 5 van het bestand weergegeven. In
bovendien de opdracht | zou alleen de regel na de volgende regel weergeven, in plaats van de
volgende twee regels. De eerste werkte logischer wanneer deze werd uitgevoerd vanuit vi modus en weergegeven
regels 2, 3 en 4. POSIX.1-2008 vereist de vi gedrag; dat wil zeggen, een enkele standaard
opdracht- en regelnummerverhoging voor elk opdrachtscheidingsteken, en achteraan
tekens na scheidingstekens worden weggegooid.

Historisch ex stond een enkele extra toe als leidend commandoteken; voor
voorbeeld, :g/patroon/:p was een geldig bevel. POSIX.1-2008 generaliseert dit om dat te vereisen
een willekeurig aantal voorlooptekens wordt verwijderd.

Historisch gezien is elk voorvoegsel van de verwijderen commando kon worden gevolgd zonder tussenkomst
tekens door een vlagteken omdat in de opdracht d p, p wordt geïnterpreteerd als de
buffer p. POSIX.1‐2008 vereist conformiteit met de historische praktijk.

Historisch gezien is de k commando kan worden gevolgd door de merknaam zonder tussenkomst van
karakters. POSIX.1‐2008 vereist conformiteit met de historische praktijk.

Historisch gezien is de s commando kan onmiddellijk worden gevolgd door vlag- en optietekens;
bijvoorbeeld s/e/E/|s|sgc3p was een geldig bevel. Vlagkarakters konden echter niet uitstaan
alleen; bijvoorbeeld de commando's sp en s l zou mislukken, terwijl het commando sg en s gl
zou slagen. (Het is duidelijk dat de '#' flag-teken werd gebruikt als scheidingsteken als dit het geval was
volgde het commando.) Een ander probleem was dat optietekens vóór de vlag moesten staan
tekens, zelfs als het commando volledig gespecificeerd was; bijvoorbeeld de opdracht s/e/E/blz
zou mislukken, terwijl het commando s/e/E/gp zou slagen. POSIX.1-2008 vereist conformiteit met
historische praktijk.

Historisch gezien was dit de eerste opdrachtnaam met een voorvoegsel dat overeenkwam met de invoer van de gebruiker
was het uitgevoerde commando; Bijvoorbeeld, ve, ver en naar allen voerden de versie opdracht.
Commando's waren echter in een specifieke volgorde, dus dat a op elkaar afgestemd toevoegen, Niet afkorten.
POSIX.1‐2008 vereist conformiteit met de historische praktijk. De beperking op commando
zoekvolgorde voor implementaties met extensies is om de toevoeging van commando's zoals
dat de historische voorvoegsels niet draagbaar zouden werken.

Historische implementaties van ex en vi meerdere niet correct afgehandeld ex commando's,
gescheiden door tekens, die de visuele modus of de editor binnengingen of verlieten.
Omdat implementaties van vi bestaan ​​die deze foutmodus niet vertonen, POSIX.1-2008
staat het niet toe.

De vereiste dat alfabetische opdrachtnamen uit alle volgende alfabetische namen bestaan
tekens tot aan het volgende niet-alfabetische teken betekent dat alfabetische opdrachtnamen
moeten normaal gesproken van hun argumenten worden gescheiden door een of meer niet-alfabetische tekens
een of '!' teken, behalve zoals gespecificeerd voor de uitzonderingen, de verwijderen, k en s
commando's.

Historisch gezien is de herhaalde uitvoering van de ex verzuim print commando's (‐D, eof,
, ) wiste elk promptteken en gaf de volgende regels weer
zonder door de terminal te scrollen; dat wil zeggen, direct onder eventuele eerder weergegeven regels.
Dit zorgde voor een schonere presentatie van de regels in het bestand voor de gebruiker. POSIX.1-2008
vereist dit gedrag niet omdat het in sommige situaties onmogelijk kan zijn; Echter,
implementaties worden sterk aangemoedigd om deze semantiek indien mogelijk te bieden.

Historisch gezien was het mogelijk om bestanden midden in een opdracht te wijzigen en de
rest van de opdracht uitgevoerd in het nieuwe bestand; Bijvoorbeeld:

:bewerking + 25 bestand.c | s/abc/ABC/ | 1

was een geldige opdracht en de vervanging werd geprobeerd in het zojuist bewerkte bestand.
POSIX.1‐2008 vereist conformiteit met de historische praktijk. De volgende opdrachten zijn
voorbeelden die de uitoefening van de ex ontleden:

echo 'foo' | bar' > bestand1; echo 'foe/bar' > bestand2;
vi
:bewerking +1 | s/|/PIJP/ | w file1 | e file2 | 1 | s/\//SLASH/ | wq

Historisch gezien was er geen bescherming in editorimplementaties die vermeden kon worden ex globaal, v, @,
or * opdrachten die bewerkingsbuffers wijzigen tijdens de uitvoering van de bijbehorende opdrachten. Omdat
dit zou bijna altijd resulteren in een catastrofaal falen van de redacteur, en
Er bestaan ​​implementaties die deze problemen vertonen, POSIX.1-2008 vereist dat verandering
de bewerkingsbuffer tijdens a globaal or v commando, of tijdens een @ or * opdracht waarvoor er
zal meer zijn dan een enkele uitvoering, een fout zijn. Implementaties die meerdere ondersteunen
gelijktijdig bewerken van buffers wordt sterk aangemoedigd om dezelfde semantiek toe te passen
ook schakelen tussen buffers.

De ex opdrachtciteren vereist door POSIX.1-2008 is een superset van het citeren in historic
implementaties van de editor. Het was bijvoorbeeld historisch gezien niet mogelijk om te ontsnappen aan een
in een bestandsnaam; Bijvoorbeeld, :bewerking foe\\\ bars zou melden dat er te veel bestandsnamen zijn
was ingevoerd voor het bewerkingscommando, en er was geen manier om aan een te ontsnappen
het eerste argument van an Bewerk, ex, volgendeof visuele commando helemaal niet. POSIX.1‐2008 breidt uit
historische praktijk, die vereist dat het citatiegedrag voor iedereen consistent wordt gemaakt ex
commando's, behalve de kaart, kaart ongedaan maken, afkorten en onverkort commando's, welke
historisch gebruikte ‐V in plaats van tekens voor aanhalingstekens. Voor degenen
vier commando's vereist POSIX.1-2008 overeenstemming met de historische praktijk.

Backslash citeert in ex is niet intuïtief. -escapes worden genegeerd, tenzij ze
ontsnappen aan een speciaal karakter; bijvoorbeeld tijdens het optreden filet argumentuitbreiding, de
snaar "\\%" is gelijk aan '\%', niet "\<actueel padnaam>". Dit kan verwarrend zijn voor
gebruikers omdat meestal een van de tekens is die shell-uitbreiding veroorzaakt
worden uitgevoerd en daarom moeten de regels voor het citeren van shells in overweging worden genomen.
Over het algemeen worden aanhalingstekens alleen overwogen als ze aan een speciaal teken ontsnappen, en
er moet een aanhalingsteken worden opgegeven voor elke parseringslaag waarvoor het teken geldt
speciaal. Nog een voorbeeld: er is slechts één nodig voor de '\l' volgorde
in vervangende vervangingspatronen, omdat het personage 'ik' is voor niemand speciaal
parseerlaag erboven.

‐V tussen aanhalingstekens ex verschilt enigszins van het citeren van een backslash. Bij de vier
opdrachten waarbij ‐V aanhalingstekens van toepassing zijn (afkorten, onverkort, kaart en kaart ongedaan maken), ieder
karakter kan worden geëscaped door een -V, ongeacht of het een speciale betekenis zou hebben of niet.
POSIX.1-2008 vereist overeenstemming met de historische praktijk.

Historische implementaties van de editor vereisten geen scheidingstekens binnen karakters
te ontsnappen klassen; bijvoorbeeld de opdracht :S/[/]// aan het touwtje "xxx/jjj" zou
verwijder de '/' uit het touwtje. POSIX.1‐2008 staat deze historische praktijk niet toe
consistentie en omdat het een grote last op de implementatie legt door dat te eisen
kennis van reguliere expressies worden ingebouwd in de editor-parser.

Historisch gezien is het citeren van -tekens in ex commando's werden inconsistent afgehandeld. In
in de meeste gevallen beëindigde het -teken altijd de opdracht, ongeacht welke opdracht dan ook
voorafgaande escape-teken, omdat -tekens niet aan ontsnapten
karakters voor de meesten ex opdrachten. Echter, sommige ex opdrachten (bijvoorbeeld s, kaart en
afkorting) stond toe dat -tekens werden geëscaped (hoewel in het geval van kaart
en afkorting, -V-tekens ontsnapten eraan in plaats van -tekens).
Dit gold niet alleen voor de opdrachtregel, maar ook voor de opdrachtregel .exrc en (bron)d-bestanden. Bijvoorbeeld,
het bevel:

kaart = foobar

zou slagen, hoewel het soms moeilijk was om de ‐V en de ingevoegde te krijgen
doorgegeven aan de ex parser. Voor consistentie en eenvoud van specificatie,
POSIX.1-2008 vereist dat het mogelijk is -tekens te escapen in ex commando's bij
altijd, waarbij in de meeste gevallen -tekens worden gebruikt ex commando's, en het gebruik van -V
karakters voor de kaart en afkorting opdrachten. Het commando bijvoorbeeld
printlijst moet worden geparseerd als het enige commando printlijst.
Hoewel dit afwijkt van de historische praktijk, achtten de ontwikkelaars van POSIX.1-2008 dit onwaarschijnlijk
dat elk script of elke gebruiker afhankelijk was van het historische gedrag.

Historisch gezien kan een fout in een opdracht die is opgegeven met behulp van de c optie veroorzaakte de rest niet
van de c opdrachten die moeten worden genegeerd. POSIX.1‐2008 staat dit niet toe vanwege consistentie met
toegewezen sleutels, de @, globaal, (bron) en v commando's, de UITGANG omgevingsvariabele, en
de .exrc bestanden.

Invoer Editing in ex
Een van de meest voorkomende toepassingen van het historische ex editor heeft last van trage netwerkverbindingen.
Editors die in de canonieke modus draaien, hebben mogelijk veel minder verkeer nodig van en naar, en veel minder
verwerking op de hostmachine, en het gemakkelijker ondersteunen van terminals in blokmodus.
Om deze redenen vereist POSIX.1-2008 dat ex worden geïmplementeerd met behulp van canonieke modusinvoer
verwerking, zoals historisch gebeurde.

POSIX.1-2008 vereist niet de historische 4 BSD-invoerbewerkingstekens ``word erase''
of ``letterlijke volgende''. Om deze reden is niet gespecificeerd hoe hiermee wordt omgegaan ex,
hoewel ze wel het gewenste effect moeten hebben. Implementaties die deze problemen oplossen na de
regel is beëindigd met behulp van een - of -M-teken, en implementaties die
vertrouwen op de onderliggende systeemterminalondersteuning voor deze verwerking, zijn beide conform.
Bij implementaties wordt sterk aangeraden om de onderliggende systeemfunctionaliteit te gebruiken, of helemaal niet
mogelijk, voor compatibiliteit met andere systeemtekstinvoerinterfaces.

Historisch gezien, toen de eof teken werd gebruikt om de automatisch inspringen niveau, het
cursor verplaatst om het nieuwe einde van de weer te geven automatisch inspringen karakters, maar verplaatste de
cursor naar een nieuwe regel, noch werd het -D-teken van de regel gewist.
POSIX.1-2008 specificeert niet dat de cursor op dezelfde regel moet blijven of dat de rest van de cursor op dezelfde regel blijft staan
de lijn is gewist; implementaties worden echter sterk aangemoedigd om het beste te bieden
mogelijke gebruikersinterface; dat wil zeggen dat de cursor op dezelfde regel moet blijven, en welke dan ook
-D-teken op de regel moet worden gewist.

POSIX.1‐2008 vereist niet het historische 4 BSD-invoerbewerkingsteken ``reprint'',
traditioneel -R, waarbij de huidige invoer van de gebruiker opnieuw werd weergegeven. Voor deze
reden, en omdat de functionaliteit niet kan worden geïmplementeerd nadat de lijn is geweest
beëindigd door de gebruiker, stelt POSIX.1‐2008 geen eisen aan deze functionaliteit.
Er wordt sterk aangedrongen op implementaties om deze historische functionaliteit beschikbaar te maken
mogelijk.

Historisch gezien voerde -Q geen letterlijke volgende functie uit ex, zoals het deed in vi.
POSIX.1-2008 vereist conformiteit met de historische praktijk om te voorkomen dat de geschiedenis wordt doorbroken ex
scripts en .exrc bestanden.

eof
Of het eof karakter wijzigt onmiddellijk de automatisch inspringen tekens in de prompt zijn
niet gespecificeerd gelaten, zodat implementaties kunnen conformeren in de aanwezigheid van systemen die dat wel doen
ondersteunen deze functionaliteit niet. Implementaties worden aangemoedigd om de lijn aan te passen en
indien mogelijk onmiddellijk opnieuw weergeven.

De specificatie van de afhandeling van de eof karakter verschilt van de historische praktijk
alleen daarin eof tekens worden niet weggegooid als ze normale tekens in de tekst volgen
invoer. Historisch gezien werden ze altijd weggegooid.

commando beschrijvingen in ex
Historisch gezien zijn verschillende opdrachten (bijvoorbeeld globaal, v, visuele, s, schrijven, wq, rukken, !, <,
>, & en ~) uitvoerbaar waren in lege bestanden (dat wil zeggen, de standaardadressen waren 0), of
toegestane expliciete adressen van 0 (0 was bijvoorbeeld een geldig adres, of 0,0 was een geldig adres).
bereik). Adressen van 0, of uitvoering van opdrachten in een leeg bestand, zijn alleen zinvol voor
opdrachten die nieuwe tekst toevoegen aan de bewerkingsbuffer of opdrachten schrijven (omdat gebruikers dat misschien willen).
lege bestanden schrijven). POSIX.1-2008 vereist dit gedrag voor dergelijke opdrachten en staat het niet toe
anders, voor consistentie en eenvoud van specificatie.

Een telling tot een ex Het bevel is historisch gecorrigeerd en is niet groter dan het vorige
regel in een bestand; in een bestand van vijf regels bijvoorbeeld de opdracht 1,6 afdrukken zou mislukken, maar de
commando 1afdruk300 zou slagen. POSIX.1‐2008 vereist conformiteit met de historische praktijk.

Historisch gezien is het gebruik van vlaggen in ex commando's kunnen onduidelijk zijn. Algemeen historisch
de praktijk was zoals beschreven in POSIX.1-2008, maar er waren enkele speciale gevallen. Voor
bijvoorbeeld de lijst, aantal en print commando's negeerden offsets van volgadressen; voor
voorbeeld, 3p +++# zou regel 3 weergeven, en 3 zou de huidige regel zijn na de uitvoering
van de opdracht. De open en visuele commando's negeerden zowel de trailing offsets als de
achterliggende vlaggen. Ook vlaggen die zijn opgegeven voor de open en visuele commando's werkten slecht samen
met de lijst edit-optie, en deze in- en uitschakelen tijdens het openen/visualiseren
sessie zou veroorzaken vi om te stoppen met het weergeven van regels in het opgegeven formaat. Voor consistentie
en eenvoud van specificatie, POSIX.1-2008 staat geen van deze uitzonderingen toe
de algemene regel.

POSIX.1-2008 gebruikt het woord kopiëren op verschillende plaatsen bij de bespreking van buffers. Dit is niet
bedoeld om implementatie te impliceren.

Historisch ex gebruikers konden geen numerieke buffers opgeven vanwege de dubbelzinnigheid hiervan
zou veroorzaken; bijvoorbeeld in de opdracht 3 verwijderen 2, het is onduidelijk of 2 een buffer is
naam of een tellen. POSIX.1-2008 vereist standaard conformiteit met de historische praktijk, maar
sluit uitbreidingen niet uit.

Historisch gezien werd de inhoud van de naamloze buffer vaak na opdrachten weggegooid
dat had daar niet expliciet invloed op; bijvoorbeeld bij het gebruik van de Bewerk commando om te schakelen
bestanden. Vanwege de consistentie en eenvoud van de specificatie staat POSIX.1‐2008 dit niet toe
gedrag.

De ex nutsbedrijven hadden historisch gezien geen toegang tot de numerieke buffers, en bovendien
regels verwijderen ex hebben de inhoud ervan niet gewijzigd. Bijvoorbeeld als u, na een verwijdering
in vi, waarnaar de gebruiker is overgeschakeld ex, deed nog een verwijdering en schakelde vervolgens terug naar vi
de inhoud van de numerieke buffers zou niet zijn veranderd. POSIX.1‐2008 vereist conformiteit
naar de historische praktijk. Numerieke buffers worden beschreven in de ex nut om
beperk de beschrijving van buffers tot één enkele locatie in POSIX.1‐2008.

De metatekens die shell-uitbreiding in gang zetten filet argumenten komen overeen met de geschiedenis
oefenen, evenals de methode voor het uitbreiden van de schaal. Implementaties die willen bieden
gebruikers met de flexibiliteit om de set metatekens te wijzigen, worden aangemoedigd om een
shellmeta optie voor het bewerken van tekenreeksen.

Historisch ex opdrachten uitgevoerd vanaf vi ververst het scherm als dit niet strikt het geval is
moet dit doen; Bijvoorbeeld, :!datum > / Dev / null vereist geen schermvernieuwing omdat
de uitvoer van UNIX gegevens commando vereist slechts een enkele regel van het scherm.
POSIX.1‐2008 vereist dat het scherm wordt vernieuwd als het is overschreven, maar dat gebeurt wel
er zijn geen vereisten met betrekking tot de manier waarop een implementatie deze bepaling moet maken.
Implementaties kunnen hoe dan ook het scherm oproepen en vernieuwen.

Afkorten
Historisch was het gebruikelijk dat karakters als onderdeel van een afkorting werden ingevoerd
vervanging waren onderworpen kaart uitbreidingen, de laat overeenkomst zien bewerkingsoptie, verder
uitbreidingen van afkortingen, enzovoort; dat wil zeggen, ze werden logischerwijs naar de terminal geduwd
invoerwachtrij, en waren geen eenvoudige vervanging. POSIX.1-2008 vereist conformiteit met
historische praktijk. De historische praktijk was dat wanneer een niet-woordkarakter (dat had
niet geëscaped door een ‐V) werd ingevoerd na een woordteken, vi zou controleren
afkortingen. De controle was gebaseerd op het type teken dat vóór het woord was ingevoerd
teken van het woord/niet-woord-paar dat de controle heeft geactiveerd. Het woordkarakter van de
woord/niet-woord-paar dat de controle heeft geactiveerd en alle tekens die vóór de trigger zijn ingevoerd
paren van dat type zijn in de controle opgenomen, met uitzondering van
tekens, die altijd de afkorting begrensden.

Dit betekent dat, om de afkorting te laten werken, de lhs moet eindigen met een woordteken,
er mogen geen overgangen plaatsvinden van woord- naar niet-woordtekens (of vice versa) anders dan
tussen het laatste en het voorlaatste teken in de lhs, en er kan geen zijn
karakters in de lhs. Bovendien was dat vanwege de historische citatenregels wel het geval
onmogelijk om een ​​letterlijke -V in te voeren in de lhs. POSIX.1‐2008 vereist conformiteit
naar de historische praktijk. Historische implementaties informeerden gebruikers niet over afkortingen
die nooit gebruikt konden worden, werden ingevoerd; implementaties worden hiertoe sterk aangemoedigd.

De volgende afkortingen zullen bijvoorbeeld werken:

:ab (p VERVANGEN
:ab p VERVANGEN
:ab ((P VERVANGEN

De volgende afkortingen werken niet:

:ab ( VERVANGEN
:ab (blz VERVANGEN

Historische praktijk is dat woorden op de vi colon-opdrachtregel waren onderworpen aan
afkortinguitbreiding, inclusief de argumenten voor de afgekort (en nog interessanter) de
onverkort commando. Omdat er implementaties zijn die geen afkortingsuitbreiding doen
voor het eerste argument bij deze opdrachten is dit toegestaan, maar niet vereist door
POSIX.1-2008. Echter de volgende volgorde:

:ab foo bars
:ab foo baz

resulteerde in de toevoeging van een afkorting van "baz" voor de snaar "bar" in historisch
ex/vi, en de volgorde:

:ab foo1 bars
:ab foo2 bars
:niet verkort foo2

heb de afkorting verwijderd "foe1", Niet "foe2". Dit gedrag is niet toegestaan ​​door
POSIX.1-2008 omdat ze duidelijk de verwachtingen van de gebruiker schenden.

Het was historisch gebruikelijk dat -V, en niet , karakters geïnterpreteerd werden als
ontsnappen aan volgende karakters in de afkorten commando. POSIX.1-2008 vereist
conformiteit met de historische praktijk; Er moet echter worden opgemerkt dat het een afkorting is
met een zal nooit werken.

toevoegen
Historisch gezien werd elke tekst die volgt op een -opdrachtscheidingsteken na een toevoegen,
veranderingof invoegen commando werd onderdeel van de invoegtekst. In het commando bijvoorbeeld:

:g/patroon/toevoegen|stuff1

een regel met de tekst "dingen1" zou worden toegevoegd aan elk lijnmatchingspatroon. Het
was ook historisch geldig om deel te nemen:

:toevoegen|dingen1
spullen2
.

en de tekst op de ex opdrachtregel zou worden toegevoegd samen met de tekst die erna wordt ingevoegd
Het. Er was echter een historische bug dat de gebruiker twee afsluitingen moest invoeren
lijnen (de '' regels) om in dit geval de tekstinvoermodus te beëindigen. POSIX.1-2008 vereist
overeenstemming met de historische praktijk, maar verbiedt de historische behoefte aan meerdere
afsluitende lijnen.

Veranderen
Zie de RATIONALE voor de toevoegen commando. Historische praktijk voor cursorpositionering na
het wijzigingscommando als er geen tekst is ingevoerd, is zoals beschreven in POSIX.1‐2008. Echter, één
Het is bekend dat de implementatie van Systeem V zodanig is gewijzigd dat de cursor is gepositioneerd
op het eerste opgegeven adres, en niet op de regel vóór het eerste adres. POSIX.1-2008
staat deze wijziging niet toe vanwege de consistentie.

Historisch gezien is de verandering commando ondersteunde geen bufferargumenten, hoewel sommige
implementaties maken de specificatie van een optionele buffer mogelijk. Dit gedrag is geen van beide
vereist noch verboden door POSIX.1-2008.

Veranderen Directory
Een veel voorkomende extensie in ex implementaties is het gebruik van de elementen van a cdpad optie bewerken als
voorvoegselmappen voor pad argumenten om chdir dat zijn relatieve padnamen en die niet
hebben '' or ".." als hun eerste onderdeel. Elementen in de cdpad bewerkingsoptie zijn
-gescheiden. De initiële waarde van de cdpad bewerkingsoptie is de waarde van de shell
CDPATH omgevingsvariabele. Deze functie is niet opgenomen in POSIX.1‐2008, omdat dit wel het geval is
bestaat niet in een van de implementaties die als historische praktijk worden beschouwd.

Kopiëren
Historische implementaties van ex toegestane kopieën naar regels binnen het opgegeven bereik;
bijvoorbeeld :2,5kopie3 was een geldig bevel. POSIX.1‐2008 vereist conformiteit met
historische praktijk.

Verwijder
POSIX.1‐2008 vereist ondersteuning voor het historisch ontleden van a verwijderen commando gevolgd door
vlaggen, zonder tussenliggende tekens. Bijvoorbeeld:

1dp Verwijdert de eerste regel en drukt de tweede regel af.

1deep Wat betreft 1dp.

1d Verwijdert de eerste regel en slaat deze op in de buffer p.

1d p1l (Pee-one-ell.) Verwijdert de eerste regel en slaat deze op in de buffer pen een lijst met de regel
dat was de tweede.

Edit
Historisch gezien: elke ex commando kan worden ingevoerd als een +commando argument tegen de Bewerk commando,
ook al zijn sommige (bijvoorbeeld invoegen en toevoegen) stonden erom bekend dat ze het historische verwarren
implementaties. Voor consistentie en eenvoud van specificatie vereist POSIX.1-2008:
dat elk commando wordt ondersteund als argument voor de Bewerk opdracht.

Historisch gezien werd het opdrachtargument uitgevoerd met de huidige regel ingesteld op de laatste regel
van het bestand, ongeacht of de Bewerk opdracht werd uitgevoerd vanuit de visuele modus of niet.
POSIX.1-2008 vereist overeenstemming met de historische praktijk.

Historisch gezien is de +commando opgegeven aan de Bewerk en volgende commando's werd begrensd door de
eerst , en er was geen manier om ze te citeren. Voor consistentie vereist POSIX.1-2008
dat het gebruikelijke ex backslash-citaten worden verstrekt.

Historisch gezien is het specificeren van de +commando argument voor de bewerkingsopdracht vereiste een bestandsnaam to
ook worden gespecificeerd; Bijvoorbeeld, :bewerking + 100 zou altijd mislukken. Voor consistentie en
eenvoud van specificatie, POSIX.1-2008 laat niet toe dat dit gebruik daarvoor mislukt
reden.

Historisch gezien werd alleen de cursorpositie van het laatst bewerkte bestand onthouden door de
editor. POSIX.1-2008 vereist dat dit wordt ondersteund; implementaties zijn dat echter wel
toegestaan ​​om de cursorpositie voor elk eerder bewerkt bestand te onthouden en te herstellen.

Dien in
Historische versies van de ex editor filet opdracht gaf een huidige regel en een aantal weer
regels in de bewerkingsbuffer van 0 toen het bestand leeg was, terwijl de vi ‐G commando
een huidige regel weergegeven en een aantal regels in de bewerkingsbuffer van 1 in dezelfde
situatie. POSIX.1-2008 staat deze discrepantie niet toe, maar vereist in plaats daarvan een bericht
weergegeven, wat aangeeft dat het bestand leeg is.

Globaal
De twee-pass-operatie van de globaal en v commando's is niet bedoeld om te impliceren
implementatie, alleen het vereiste resultaat van de operatie.

De huidige regel en kolom worden ingesteld zoals gespecificeerd voor het individu ex commando's. Dit
vereiste is cumulatief; dat wil zeggen dat de huidige regel en kolom het hele traject moeten volgen
opdrachten uitgevoerd door de globaal or v commando's.

Invoegen
Zie de RATIONALE voor de toevoegen opdracht.

Historisch invoegen kon niet worden gebruikt met een adres nul; dat wil zeggen, niet wanneer de bewerking
buffer was leeg. POSIX.1‐2008 vereist dat deze opdracht zich consistent gedraagt ​​met de
toevoegen opdracht.

Aanmelden
De actie van de mee commando met betrekking tot de speciale tekens is alleen gedefinieerd voor
de POSIX-landinstelling omdat de juiste hoeveelheid witruimte na een punt varieert; in
In het Japans is er geen vereist, in het Frans slechts één spatie, enzovoort.

Lijst
De historische output van de lijst commando was mogelijk dubbelzinnig. De standaard
ontwikkelaars waren van mening dat het corrigeren hiervan belangrijker was dan het naleven van historische gegevens
praktijk, en POSIX.1-2008 vereist ondubbelzinnige output.

Wereldmap
Historisch gezien werden opdrachtmodustoewijzingen alleen toegepast op opdrachtnamen; bijvoorbeeld als de
karakter 'X' in kaart werd gebracht 'j', het bevel fx zocht naar de 'X' karakter, niet de
'j' karakter. POSIX.1-2008 vereist dit gedrag. Historisch gezien werd ‐V ingevoerd als
het eerste teken van a vi opdracht was een fout. Verschillende implementaties zijn uitgebreid
de semantiek van vi zodanig dat ‐V betekent dat het volgende commandoteken is
niet in kaart gebracht. Dit is toegestaan, maar niet vereist, door POSIX.1-2008. Hoe dan ook, gebruiken
-V om te ontsnappen aan het tweede of latere teken in een reeks tekens die dat wel zouden kunnen
overeenkomen met een kaart commando, of welk teken dan ook in de tekstinvoermodus, is een historische praktijk, en
voorkomt dat de ingevoerde sleutels overeenkomen met een kaart. POSIX.1-2008 vereist conformiteit met
historische praktijk.

Historische implementaties maakten het mogelijk dat cijfers als a kaart commando lhs, maar dan
negeerde de kaart. POSIX.1-2008 vereist dat de in kaart gebrachte cijfers niet worden genegeerd.

De historische implementatie van de kaart opdracht liet het niet toe kaart commando's die dat waren
meer dan één teken lang als het eerste teken afdrukbaar was. Dit gedrag
is toegestaan, maar niet vereist, door POSIX.1-2008.

Historisch gezien werden toegewezen karakters opnieuw toegewezen, tenzij de remap bewerkingsoptie is niet ingesteld, of
het voorvoegsel van de toegewezen tekens kwam overeen met de toegewezen tekens; bijvoorbeeld in de
kaart:

:kaart ab abcd

de karakters "ab" werden gebruikt zoals ze zijn en werden niet opnieuw toegewezen, maar de karakters "CD" waren
eventueel in kaart gebracht. Dit kan oneindige lussen veroorzaken in de vi mechanismen in kaart brengen.
POSIX.1-2008 vereist conformiteit met de historische praktijk, en dat dergelijke lussen dat ook zijn
onderbreekbaar.

Tekstinvoerkaarten hadden dezelfde problemen met het uitbreiden van de lhs voor de ex kaart! en uit kaart brengen!
commando, net als de ex afkorten en onverkort opdrachten. Zie de RATIONALE voor de ex
afkorten commando. POSIX.1-2008 vereist een soortgelijke wijziging van een historische praktijk
voor de kaart en kaart ongedaan maken opdrachten, zoals beschreven voor de afkorten en onverkort commando's.

Historisch kaarts die subsets waren van andere kaarts gedroegen zich anders, afhankelijk van de
volgorde waarin ze zijn gedefinieerd. Bijvoorbeeld:

:kaart! ab kort
:kaart! abc lang

zou de karakters altijd vertalen "ab" naar "kort", ongeacht hoe snel de
tekens "abc" waren binnengekomen. Als de invoervolgorde is omgekeerd:

:kaart! abc lang
:kaart! ab kort

de karakters "ab" zou ervoor zorgen dat de editor pauzeert, wachtend op voltooiing 'C'
karakter, en de karakters worden mogelijk nooit in kaart gebracht "kort". Voor consistentie en
Door de eenvoud van specificatie vereist POSIX.1-2008 dat überhaupt de kortste overeenkomst wordt gebruikt
tijden.

De tijd die de redacteur besteedt aan het wachten tot de personages het lhs is
niet gespecificeerd omdat de timingmogelijkheden van systemen vaak onnauwkeurig en variabel zijn, en
het kan afhankelijk zijn van andere factoren, zoals de snelheid van de verbinding. De tijd zou moeten zijn
lang genoeg voor de gebruiker om de reeks te kunnen voltooien, maar niet lang genoeg voor de
gebruiker moet wachten. Enkele implementaties van vi hebben een toegevoegd sleuteltijd optie, welke
staat gebruikers toe het aantal 0,1 seconden in te stellen dat de editor wacht op voltooiing
karakters. Omdat toegewezen terminalfuncties en cursortoetsen vaak beginnen met een
teken, en is de sleuteluitgang vi tekstinvoermodus, kaarts beginnend met
karakters zijn over het algemeen vrijgesteld van deze time-outperiode, of er is op zijn minst een time-out opgetreden
anders.

Markeer
Historisch gezien konden gebruikers de 'vorige context'-markeringen expliciet instellen. In
daarnaast, de ex commando's '' en '` en vi commando's '', ``, `' en '` allemaal verwezen
hetzelfde merk. Bovendien werden de vorige contextmarkeringen niet ingesteld als de opdracht met
waaraan de adresinstelling van het merk was gekoppeld, is mislukt. POSIX.1‐2008 vereist
overeenstemming met de historische praktijk. Historisch gezien, als gemarkeerde lijnen werden verwijderd, werd de markering
werd ook verwijderd, maar zou opnieuw verschijnen als de wijziging ongedaan werd gemaakt. POSIX.1-2008 vereist
overeenstemming met de historische praktijk.

De beschrijving van de speciale gebeurtenissen die de ` en ' markeringen komen overeen met historisch
oefening. Historisch gezien bijvoorbeeld het bevel /a/,/b/ heb de niet ingesteld ` en ' merken, maar
het bevel /a/,/b/verwijderen deed.

Volgende
Historisch gezien: elke ex commando kan worden ingevoerd als een +commando argument tegen de volgende commando,
ook al zijn sommige (bijvoorbeeld invoegen en toevoegen) stonden erom bekend dat ze het historische verwarren
implementaties. POSIX.1-2008 vereist dat elk commando is toegestaan ​​en dat het zich gedraagt ​​als
gespecificeerd. De volgende commando kan meer dan één bestand accepteren, dus gebruik zoals:

volgende 'ls [abc] `

is geldig; het hoeft niet geldig te zijn voor de Bewerk or dit artikel lezen commando's, bijvoorbeeld omdat ze
verwacht slechts één bestandsnaam.

Historisch gezien is de volgende opdracht gedroeg zich anders dan de : terugspoelen commando daarin
negeerde de force-vlag als de automatisch schrijven vlag werd gezet. Voor consistentie doet POSIX.1-2008 dat wel
dit gedrag niet toestaan.

Historisch gezien is de volgende commando positioneerde de cursor alsof het bestand nooit was bewerkt
vroeger, hoe dan ook. POSIX.1-2008 staat dit gedrag niet toe, vanwege consistentie met de
Bewerk opdracht.

Implementaties die een tegenhanger willen bieden aan de volgende commando dat het
vorige bestand heeft de opdracht gebruikt vorig], die nee kost filet argument. POSIX.1-2008
vereist dit commando niet.

Openen
Historisch gezien is de open opdracht zou mislukken als de open bewerkingsoptie is niet ingesteld.
POSIX.1-2008 vermeldt niet de open edit-optie en vereist dit gedrag niet.
Sommige historische implementaties staan ​​het betreden van de open modus vanuit de open of visuele modus niet toe.
pas vanaf ex modus. Omwille van de consistentie staat POSIX.1-2008 dit gedrag niet toe.

Historisch gezien kon het openen van de open modus vanaf de opdrachtregel (dat wil zeggen: vi +openen) resulteerde in
afwijkend gedrag; bijvoorbeeld de ex file en reeks commando's, en de vi commando
‐G werkte niet. Omwille van de consistentie staat POSIX.1-2008 dit gedrag niet toe.

Historisch gezien is de open alleen commando toegestaan '/' tekens die bij de zoekopdracht moeten worden gebruikt
patroon scheidingsteken. Voor consistentie vereist POSIX.1-2008 dat de zoekscheidingstekens worden gebruikt
Door de s, globaal en v commando's worden ook geaccepteerd.

Behouden
De behouden De opdracht zorgt er historisch gezien niet voor dat het bestand als ongewijzigd wordt beschouwd
de doeleinden van toekomstige opdrachten die de editor mogelijk verlaten. POSIX.1-2008 vereist
overeenstemming met de historische praktijk.

Historische documentatie vermeldde dat er tijdens het behouden geen e-mail naar de gebruiker werd verzonden
uitgevoerd; Historische implementaties stuurden in dit geval echter wel e-mail. POSIX.1-2008
vereist overeenstemming met de historische implementaties.

Print
Het schrijven van NUL door de print commando is niet gespecificeerd als een speciaal geval omdat de
standaardontwikkelaars wilden dit niet vereisen ex om NUL-tekens te ondersteunen. Historisch gezien
tekens werden weergegeven met behulp van de ARPA-standaardtoewijzingen, die als volgt zijn:

1. Afdrukbare karakters worden met rust gelaten.

2. Controletekens kleiner dan \177 worden weergegeven als '^' gevolgd door het karakter
gecompenseerd van de '@' teken in de ASCII-kaart; \007 wordt bijvoorbeeld weergegeven als
'^ G'.

3. \177 wordt weergegeven als '^' gevolgd door '?'.

De weergave van karakters waarvan de achtste bit was ingesteld, was minder standaard. Bestaand
implementaties gebruiken hex (0x00), octaal (\000) en een meta-bitweergave. (Het laatste
weergegeven bytes waarvan de achtste bit was ingesteld als de twee tekens "M-" gevolgd door de
zeven-bits weergave zoals hierboven beschreven.) Dit laatste heeft waarschijnlijk de beste aanspraak
historische praktijk omdat het werd gebruikt voor de v optie van 4 BSD en 4 BSD-afgeleid
versies van de hoe nutsvoorziening sinds 1980.

POSIX.1‐2008 vereist geen specifiek weergaveformaat.

Expliciete afhankelijkheid van de ASCII-tekenset is waar mogelijk vermeden, vandaar de
gebruik van de zinsnede een ``implementatiegedefinieerde reeks van meerdere tekens'' voor de weergave
van niet-afdrukbare karakters in plaats van het historische gebruik van bijvoorbeeld "^ ik"
voor het . Implementaties worden aangemoedigd om te voldoen aan de historische praktijk in de
het ontbreken van een sterke reden om van mening te verschillen.

Historisch gezien allemaal ex opdrachten die met de letter beginnen 'P' kon worden ingevoerd met behulp van
versies met hoofdletters van de opdrachten; Bijvoorbeeld, Afdrukken], Beschermen] en Neerzetten] allemaal
geldige opdrachtnamen. POSIX.1-2008 staat deze historische praktijk toe, maar vereist deze niet
omdat hoofdlettervormen van de commando's door sommige implementaties voor andere doeleinden worden gebruikt.

Zetten
historisch gezien, een ex zetten commando, uitgevoerd vanuit de open of visuele modus, was hetzelfde als het
open of visuele modus P opdracht, als de buffer een naam kreeg en in de tekenmodus werd geknipt, en
hetzelfde als de p opdracht als de buffer een naam heeft gekregen en in lijnmodus is geknipt. Als de naamloze
buffer was de bron van de tekst, de hele regel waaruit de tekst was gehaald
doorgaans zetten, en de buffer werd behandeld alsof hij zich in de lijnmodus bevond, maar het was mogelijk om deze te verkrijgen
uiterst abnormaal gedrag. Daarnaast wordt gebruik gemaakt van de Q opdracht om naar over te schakelen ex modus, en
doe dan een zetten resulteerde vaak ook in fouten, zoals het toevoegen van tekst
niet gerelateerd aan de (veronderstelde) inhoud van de buffer. Voor consistentie en eenvoud van
Volgens de specificatie staat POSIX.1-2008 dit gedrag niet toe. Alle ex zetten commando's zijn
vereist om in lijnmodus te werken, en de inhoud van de buffers wordt niet gewijzigd
de modus van de editor wijzigen.

Lees
historisch gezien, een ex dit artikel lezen commando uitgevoerd vanuit open of visuele modus, uitgevoerd in een lege
bestand, liet een lege regel achter als de eerste regel van het bestand. Voor consistentie en eenvoud van
specificatie, POSIX.1-2008 staat dit gedrag niet toe. Historisch gezien is een dit artikel lezen geopend
of visuele modus van een programma liet de cursor op de laatste ingelezen regel staan, niet op de eerste. Voor
consistentie, POSIX.1-2008 staat dit gedrag niet toe.

Historische implementaties van ex konden niet ongedaan maken dit artikel lezen opdrachten die lezen uit de
uitvoer van een programma. Omwille van de consistentie staat POSIX.1-2008 dit gedrag niet toe.

Historisch gezien is de ex en vi bericht na een succesvolle dit artikel lezen or schrijven opdracht opgegeven
``tekens'', niet ``bytes''. POSIX.1‐2008 vereist dat het aantal bytes gelijk is
weergegeven, niet het aantal tekens, omdat dit in multi-byte moeilijk kan zijn
implementaties om het aantal gelezen tekens te bepalen. Implementaties worden aangemoedigd
om het bericht dat aan de gebruiker wordt weergegeven te verduidelijken.

Historisch gezien waren leesbewerkingen niet toegestaan ​​voor andere bestanden dan het normale type, behalve FIFO
bestanden konden worden gelezen (waarschijnlijk alleen omdat ze niet bestonden toen ex en vi waren
oorspronkelijk geschreven). Omdat het historische ex geëvalueerd lezen! en dit artikel lezen ! gelijkwaardig,
er kan geen optionele manier zijn om het lezen te forceren. POSIX.1‐2008 staat dit toe, maar doet dat niet
dit gedrag vereisen.

Herstellen
Bij sommige historische implementaties van de editor konden gebruikers de bewerkingsbuffer herstellen
inhoud van een eerdere bewerkingssessie en sluit vervolgens af zonder deze inhoud op te slaan (of
ze expliciet weggooien). De bedoeling van POSIX.1-2008 om te vereisen dat de bewerkingsbuffer
worden behandeld als reeds gewijzigd, om deze gebruikersfout te voorkomen.

Rewind
Historische implementaties ondersteunden de terugspoelen opdracht toen de gebruiker het
eerste bestand in de lijst; dat wil zeggen, het bestand dat de terugspoelen commando zou bewerken. POSIX.1-2008
vereist aanpassing aan de historische praktijk.

Plaatsvervanger
Historisch ex geaccepteerd en r optie voor de s commando. Het effect van de r optie was om
gebruik de laatste reguliere expressie die in een opdracht is gebruikt als patroon, hetzelfde als de ~
opdracht. De r optie is niet vereist door POSIX.1-2008. Historisch gezien is de c en g opties
waren geschakeld; bijvoorbeeld de opdracht :s/abc/def/ was hetzelfde als s/abc/def/ccccgggg.
Omwille van de eenvoud van de specificatie staat POSIX.1-2008 dit gedrag niet toe.

Het tilde-commando wordt vaak gebruikt om de laatste zoekopdracht RE te vervangen. Bijvoorbeeld in de
volgorde:

s/rood/blauw/
/groen
~

de ~ commando is gelijk aan:

s/groen/blauw/

Historisch ex accepteerde alle volgende vormen:

s/abc/def/
s/abc/def
s/abc/
s/abc

POSIX.1‐2008 vereist conformiteit met deze historische praktijk.

De s opdracht gaat ervan uit dat de '^' teken neemt slechts één kolom in beslag in de
weergave. Veel van de ex en vi specificatie veronderstelt dat de slechts a in beslag neemt
enkele kolom in het display. Er zijn geen tekensets bekend waarvoor dit niet het geval is
waar.

Historisch gezien was de uiteindelijke kolompositie voor de vervangende commando's gebaseerd op de vorige
kolombewegingen; een zoekopdracht naar een patroon gevolgd door een vervanging zou de kolom verlaten
positie ongewijzigd, terwijl een 0-commando gevolgd door een vervanging de kolom zou veranderen
positie naar de eerste niet-. Voor consistentie en eenvoud van specificatie,
POSIX.1‐2008 vereist dat de uiteindelijke kolompositie altijd op de eerste wordt ingesteld
niet-.

Zet de
Historische implementaties gaven alle opties opnieuw weer voor elk voorkomen van de allen
trefwoord. POSIX.1‐2008 staat dit gedrag toe, maar vereist dit niet.

Tag
Er worden geen eisen gesteld aan waar ex en vi zoekt naar het bestand waarnaar door de tag wordt verwezen
binnenkomst. De historische praktijk is geweest om te zoeken naar het pad dat in de wereld wordt gevonden labels bestand, gebaseerd op
de huidige map. Een nuttige uitbreiding die in sommige implementaties wordt aangetroffen, is gebaseerd op uiterlijk
ook in de map met het tagsbestand waarin het item stond. Er is geen vereiste
gemaakt over welke referentie voor de tag in het tagsbestand wordt gebruikt. Dit is opzettelijk, nl
om extensies toe te staan, zoals meerdere vermeldingen in een tagsbestand voor een tag.

Omdat gebruikers vaak veel verschillende tagsbestanden opgeven, waarvan sommige niet relevant hoeven te zijn
of op een bepaald moment bestaat, vereist POSIX.1-2008 dat foutmeldingen over het probleem worden weergegeven
tags-bestanden worden alleen weergegeven als de gevraagde tag niet wordt gevonden, en dan slechts één keer
iedere keer dat de label bewerkingsoptie is gewijzigd.

De vereiste dat de huidige bewerkingsbuffer ongewijzigd moet zijn, is alleen nodig als het bestand
aangegeven door de tag-invoer is niet hetzelfde als het huidige bestand (zoals gedefinieerd door het huidige
padnaam). Historisch gezien werd het bestand opnieuw geladen als de bestandsnaam ook was gewijzigd
alsof de bestandsnaam anders was dan de huidige padnaam. Voor consistentie en eenvoud
Volgens de specificatie staat POSIX.1-2008 dit gedrag niet toe en vereist dat de naam
de enige factor in de beslissing.

Historisch vi alleen gezocht naar tags in het huidige bestand vanaf de huidige cursor tot de
einde van het bestand, en daarom, als de wrapscan optie was niet ingesteld, tags kwamen eerder voor
de huidige cursor is niet gevonden. POSIX.1-2008 beschouwt dit als een bug, en implementaties
zijn hoe dan ook verplicht om naar het eerste exemplaar in het bestand te zoeken.

ongedaan maken
De ongedaan maken beschrijving gebruikt bewust het woord ``gewijzigd''. De ongedaan maken commando is niet
bedoeld om opdrachten ongedaan te maken die de inhoud van de bewerkingsbuffer vervangen, zoals Bewerk,
volgende, labelof herstellen.

Cursorpositionering na de ongedaan maken Het bevel was historisch gezien inconsistent vi, soms
probeert de oorspronkelijke cursorpositie te herstellen (globaal, ongedaan maken en v commando's), en
soms, in de aanwezigheid van kaarten, plaatst u de cursor op de laatste toegevoegde of gewijzigde regel
in plaats van de eerste. POSIX.1-2008 vereist vereenvoudigd gedrag voor consistentie en
eenvoud van specificatie.

Versie
De versie commando kan niet precies worden gespecificeerd, omdat er geen algemeen aanvaarde opdracht bestaat
definitie van wat de versie-informatie moet bevatten. Implementaties worden aangemoedigd
om iets redelijk intelligents te doen.

Schrijven
Historisch gezien is de ex en vi bericht na een succesvolle dit artikel lezen or schrijven opdracht opgegeven
``tekens'', niet ``bytes''. POSIX.1‐2008 vereist dat het aantal bytes gelijk is
weergegeven, niet het aantal tekens, omdat dit in multi-byte moeilijk kan zijn
implementaties om het aantal geschreven tekens te bepalen. Implementaties zijn
aangemoedigd om het aan de gebruiker getoonde bericht te verduidelijken.

Implementatiegedefinieerde tests zijn toegestaan, zodat implementaties aanvullend kunnen zijn
cheques; bijvoorbeeld voor vergrendelingen of wijzigingstijden van bestanden.

Historisch gezien veroorzaakte een poging om iets toe te voegen aan een niet-bestaand bestand een fout. Het is achtergelaten
niet gespecificeerd in POSIX.1-2008 om implementaties toe te staan ​​om de schrijven slagen, dus dat
de toegevoegde semantiek is vergelijkbaar met die van de historische csh.

Historisch vi toegestaan ​​dat lege bewerkingsbuffers worden geschreven. Echter, sinds de weg vi kreeg
rond het omgaan met ``lege'' bestanden was om altijd een regel in de bewerkingsbuffer te hebben, nee
wat er ook gebeurde, het schreef ze als bestanden van een enkele, lege regel. POSIX.1‐2008 staat dit niet toe
dit gedrag.

Historisch ex standaarduitvoer en standaardfout hersteld naar hun waarden vanaf wanneer ex
werd aangeroepen voordat er naar programma's werd geschreven. Dit zou de terminal kunnen verstoren
configuratie en kan voor sommige terminals een veiligheidsprobleem zijn. POSIX.1-2008 niet
staat dit toe, waarbij vereist wordt dat de programma-uitvoer wordt vastgelegd en weergegeven alsof het door de ex
print opdracht.

Adjust venster
Historisch gezien werd het aantal regels ingesteld op de waarde van de rol optie als het type
teken was einde-bestand. Deze functie was bij de meeste historische implementaties lang verbroken
geleden echter en is nergens gedocumenteerd. Om deze reden is POSIX.1-2008 resoluut
stil.

Historisch gezien is de z commando was -gevoelig en z + en z - verschillende dingen gedaan
neem contact z+ en z− omdat het type niet van een vlag te onderscheiden was. (De commando's z .
en z = waren historisch ongeldig.) POSIX.1-2008 vereist conformiteit met deze historische waarde
praktijk.

Historisch gezien is de z commando was verder -gevoelig omdat de tellen kan niet zijn
-gescheiden; bijvoorbeeld de commando's z= 5 en z− 5 waren eveneens ongeldig. Omdat de
tellen is niet dubbelzinnig met betrekking tot het typeteken of de vlaggen, dit is niet het geval
toegestaan ​​door POSIX.1-2008.

Ontsnappen
Historisch ex filteropdrachten lezen alleen de standaarduitvoer van de opdrachten, latend
standaardfout verschijnt zoals gewoonlijk op de terminal. De vi hulpprogramma, lees echter beide
standaarduitvoer en standaardfout. POSIX.1-2008 vereist het laatste gedrag voor beide ex
en vi, voor consistentie.

Shift Links en Shift Rechts
Historisch gezien was het mogelijk om shift-tekens toe te voegen om het effect van de
commando; Bijvoorbeeld, << uitgestorven (of >>> ingesprongen) de lijnen 3 inspringingsniveaus
in plaats van de standaard 1. POSIX.1‐2008 vereist conformiteit met de historische praktijk.

-D
Historisch gezien wiste het ‐D commando de prompt, waardoor de gebruiker een
ononderbroken presentatie van regels uit de bewerkingsbuffer. Dit is niet vereist door POSIX.1-2008;
implementaties worden aangemoedigd om dit indien mogelijk te bieden. Historisch gezien was de ‐D
commando nam, en negeerde vervolgens, a tellen. POSIX.1‐2008 staat dit gedrag niet toe.

Schrijven Lijn Telefoon Nummer
Historisch gezien is de ex = commando, wanneer uitgevoerd in ex modus in een lege bewerkingsbuffer, gerapporteerd
0, en vanuit open of visuele modus, gerapporteerd 1. Voor consistentie en eenvoud van
specificatie, POSIX.1-2008 staat dit gedrag niet toe.

Uitvoeren
Historisch ex heeft de opname van tekstinvoeropdrachten niet correct afgehandeld (dat wil zeggen:
toevoegen, invoegen en verandering) in uitgevoerde buffers. POSIX.1‐2008 staat dit niet toe
uitsluiting vanwege consistentie.

Historisch gezien veranderde de logische inhoud van de buffer die werd uitgevoerd niet als de
buffer zelf werd gewijzigd door de uitgevoerde opdrachten; dat wil zeggen, bufferuitvoering deed dat
ondersteunt geen zelfmodificerende code. POSIX.1‐2008 vereist conformiteit met de historische praktijk.

Historisch gezien is de @ commando duurde een reeks regels, en de @ buffer werd eenmaal per uitgevoerd
regel, met de huidige regel ('') ingesteld op elke opgegeven regel. POSIX.1‐2008 vereist
overeenstemming met de historische praktijk.

Sommige historische implementaties merkten niet of er fouten optraden tijdens de uitvoering van de buffer.
Dit, in combinatie met de mogelijkheid om een ​​reeks lijnen voor de ex @ commando, maakt het
triviaal om ze te laten vallen kern. POSIX.1-2008 vereist dat implementaties stoppen
bufferuitvoering als er een fout optreedt, als de opgegeven regel niet bestaat, of als de
inhoud van de bewerkingsbuffer zelf wordt vervangen (de buffer voert bijvoorbeeld de ex
:bewerking opdracht).

Normaal Uitdrukkingen in ex
Historische praktijk is dat de karakters in het vervangende deel van de leest voorkomen s commando-
dat wil zeggen, die overeenkomen met het invoeren van a '~' in de reguliere expressie – waren niet verder
uitgebreid door de reguliere expressie-engine. Dus als de karakters de string bevatten
"A.," ze zouden overeenkomen 'A' gevolgd door "." en niet 'A' gevolgd door een willekeurig karakter.
POSIX.1-2008 vereist overeenstemming met de historische praktijk.

Edit Opties in ex
De volgende paragrafen beschrijven het historische gedrag van enkele bewerkingsopties die dat wel waren
om welke reden dan ook niet opgenomen in POSIX.1‐2008. Implementaties zijn sterk
aangemoedigd om deze namen alleen te gebruiken als de hier beschreven functionaliteit volledig wordt ondersteund.

uitgebreid De uitgebreid bewerkingsoptie is gebruikt in sommige implementaties van vi om
uitgebreide reguliere expressies in plaats van standaard reguliere expressies Deze optie
werd weggelaten uit POSIX.1‐2008 omdat het geen wijdverbreide historische praktijk is.

flash De flash De bewerkingsoptie zorgde er historisch gezien voor dat het scherm flitste in plaats van piepte
op fout. Deze optie is weggelaten uit POSIX.1-2008 omdat deze niet voorkomt in
enkele historische implementaties.

harde tabbladen De harde tabbladen de bewerkingsoptie definieerde historisch gezien het aantal kolommen ertussen
Instellingen op het tabblad Hardware. Deze optie is weggelaten uit POSIX.1‐2008 omdat dit wel het geval was
aangenomen dat het niet langer algemeen bruikbaar is.

modelijn De modelijn (soms genoemd modelijnen) bewerkingsoptie historisch veroorzaakt ex or
vi om de vijf eerste en laatste regels van het bestand te lezen voor editoropdrachten. Dit
optie is een beveiligingsprobleem en leveranciers worden sterk aangeraden deze te verwijderen
van historische implementaties.

open De open bewerkingsoptie stond historisch gezien de ex open en visuele commando's.
Deze bewerkingsoptie is weggelaten omdat deze opdrachten vereist zijn door
POSIX.1-2008.

te optimaliseren De te optimaliseren bewerkingsoptie versnelde de tekstdoorvoer historisch door de
terminal om geen automatische -tekens uit te voeren bij het afdrukken van meer
dan één logische uitvoerregel. Deze optie is weggelaten uit POSIX.1-2008
omdat het bedoeld was voor terminals zonder adresseerbare cursors, die dat wel zijn
zelden of nooit nog gebruikt.

heerser De heerser bewerkingsoptie is gebruikt in sommige implementaties van vi om een
huidige rij-/kolomliniaal voor de gebruiker. Deze optie is weggelaten uit POSIX.1-2008
omdat het geen wijdverbreide historische praktijk is.

bron De bron bewerkingsoptie historisch veroorzaakt ex or vi naar de bron van opstartbestanden
die eigendom waren van andere gebruikers dan de gebruiker die de editor uitvoert. Deze optie is
een beveiligingsprobleem, en leveranciers worden sterk aangemoedigd dit uit hun software te verwijderen
implementaties.

time-out De time-out De bewerkingsoptie schakelde historisch gezien de (nu standaard) functie van alleen in
een korte periode wachten voordat sleutels worden geretourneerd die deel kunnen uitmaken van een macro.
Deze functie is weggelaten uit POSIX.1-2008 omdat het gedrag ervan nu standaard is,
het is niet algemeen bruikbaar en werd zelden gedocumenteerd.

breedsprakig De breedsprakig bewerkingsoptie is gebruikt in sommige implementaties van vi veroorzaken vi
om foutmeldingen uit te voeren voor veelvoorkomende fouten; bijvoorbeeld als u probeert de
cursor voorbij het begin of einde van de regel in plaats van alleen de melding te waarschuwen
scherm. (Het historische vi waarschuwde alleen de terminal en presenteerde geen bericht
voor zulke fouten. De historische editoroptie kortom heeft niet geselecteerd wanneer
presenteert foutmeldingen, het maakte min of meer alleen bestaande foutmeldingen
uitgebreid.) Deze optie is weggelaten uit POSIX.1-2008 omdat deze niet wijdverspreid is
historische praktijk; implementeerders worden echter aangemoedigd om het te gebruiken als ze dat willen
om foutmeldingen te bieden voor naïeve gebruikers.

wikkelen De wikkelen bewerkingsoptie is gebruikt in sommige implementaties van vi specificeren
een automatische marge gemeten vanaf de linkermarge in plaats van vanaf de rechterkant
marge. Dit is handig als er meerdere schermformaten worden gebruikt om een ​​bestand te bewerken
enkel bestand. Deze optie is weggelaten uit POSIX.1‐2008 omdat dit niet het geval is
wijdverbreide historische praktijk; implementeerders worden echter aangemoedigd om het te gebruiken
als ze deze functionaliteit toevoegen.

automatisch inspringen, ai
Historisch gezien is het commando 0a heeft geen enkele automatische indentatie uitgevoerd, ongeacht de huidige
inspringing van regel 1. POSIX.1-2008 vereist dat elke inspringing in regel 1
gebruikt.

automatisch afdrukken, ap
Historisch gezien is de automatisch afdrukken bewerkingsoptie was niet volledig consistent of uitsluitend gebaseerd op
wijzigingen in de bewerkingsbuffer. Uitzonderingen waren de dit artikel lezen commando (bij het lezen van a
bestand, maar niet van een filter), de toevoegen, verandering, invoegen, globaal en v commando's, allemaal
die er niet door werden getroffen automatisch afdrukkenEn label commando, dat werd beïnvloed door
automatisch afdrukken. POSIX.1‐2008 vereist conformiteit met de historische praktijk.

Historisch gezien is de automatisch afdrukken optie wordt alleen toegepast op de laatste van meerdere ingevoerde opdrachten
gebruik van scheidingstekens; Bijvoorbeeld, verwijderen werd beïnvloed door automatisch afdrukken,
maar verwijder|versie was dat niet. POSIX.1-2008 vereist conformiteit met het historische
praktijk.

automatisch schrijven, aw
toevoegen van de '!' karakter voor de ex volgende opdracht om te voorkomen dat er automatisch wordt geschreven
werd niet ondersteund in historische implementaties. POSIX.1‐2008 vereist dat het gedrag
overeenkomen met de ander ex commando's voor consistentie.

negeer zaak, ic
Historische implementaties van hoofdletterongevoelige matching (de negeer zaak bewerkingsoptie) lead
tot contra-intuïtieve situaties waarin hoofdletters werden gebruikt in bereikuitdrukkingen.
Historisch gezien was het proces als volgt:

1. Neem een ​​regel tekst uit de bewerkingsbuffer.

2. Converteer hoofdletters naar kleine letters in de tekstregel.

3. Converteer hoofdletters naar kleine letters in reguliere expressies, behalve in tekenklassen
specificaties.

4. Vergelijk reguliere expressies met tekst.

Dit zou betekenen dat met negeer zaak in feite is de tekst:

De hoe zat on de Voedsel

zou worden geëvenaard door

/^de/

maar niet door:

/^[A−Z]hij/

Voor consistentie met andere opdrachten die reguliere expressies implementeren, doet POSIX.1-2008 dat wel
dit gedrag niet toestaan.

paragrafen, voor
De ISO POSIX-2:1993-standaard vormde de standaard paragrafen en secties bewerk opties
implementatiegedefinieerd, met het argument dat ze historisch georiënteerd waren op het UNIX-systeem troff
tekstformatter, en een ``draagbare gebruiker'' zou de {, }, [[, ]], ( en ) commando's in
open of visuele modus en laat de cursor op onverwachte plaatsen stoppen. POSIX.1‐2008 specificeert
hun waarden in de POSIX-landinstelling vanwege de ongebruikelijke groepering (ze werken alleen als ze gegroepeerd zijn).
in twee tekens tegelijk) betekent dat ze niet voor algemene doeleinden kunnen worden gebruikt
beweging, hoe dan ook.

alleen lezen
Implementaties worden aangemoedigd om de gebruiker hierover de best mogelijke informatie te verstrekken
de alleen-lezen-status van het bestand, met de uitzondering dat ze geen rekening mogen houden met de
huidige speciale privileges van het proces. Dit biedt gebruikers een vangnet omdat
ze moeten het overschrijven van alleen-lezen bestanden forceren, zelfs als ze met extra bestanden worden uitgevoerd
privileges.

De alleen lezen De specificatie van de bewerkingsopties komt grotendeels overeen met de historische praktijk. De enige
Het verschil is dat historische implementaties niet merkten dat de gebruiker de
alleen lezen bewerkingsoptie in gevallen waarin het bestand om een ​​of andere reden al als alleen-lezen was gemarkeerd,
en zou daarom de alleen lezen optie bewerken de volgende keer dat de inhoud van
de bewerkingsbuffer is vervangen. Dit gedrag is niet toegestaan ​​door POSIX.1‐2008.

verslag
De vereiste dat regels die naar een buffer worden gekopieerd anders reageren dan verwijderde regels is
historische praktijk. Als bijvoorbeeld de verslag bewerkingsoptie is ingesteld op 3, waardoor 3 regels worden verwijderd
zorgt ervoor dat er een rapport wordt geschreven, maar er moeten 4 regels worden gekopieerd voordat een rapport wordt geschreven.

De eis dat de ex globaal, v, open, ongedaan maken en visuele commando's presenteren rapporten
gebaseerd op het totale aantal regels dat is toegevoegd of verwijderd tijdens de uitvoering van de opdracht, en dat
opdrachten uitgevoerd door de globaal en v commando's die geen rapporten bevatten, zijn historisch
oefening. POSIX.1‐2008 breidt de historische praktijk uit door te eisen dat bufferuitvoering plaatsvindt
op dezelfde manier behandeld. De redenen hiervoor zijn tweeledig. Historisch gezien is alleen het rapport van de
de laatste opdracht die vanuit de buffer werd uitgevoerd, zou door de gebruiker worden gezien, zoals bij elk nieuw rapport
overschrijf de laatste. Bovendien geloofden de standaardontwikkelaars dat bufferuitvoering
had meer gemeen met globaal en v commando's dan bij andere ex commando's, en
moeten zich op dezelfde manier gedragen, voor consistentie en eenvoud van specificatie.

laat overeenkomst zien, sm
De tijdsduur die de cursor besteedt aan het overeenkomende teken is niet gespecificeerd omdat de
timingmogelijkheden van systemen zijn vaak onnauwkeurig en variabel. De tijd zou lang moeten zijn
genoeg voor de gebruiker om het op te merken, maar niet lang genoeg om de gebruiker geïrriteerd te laten raken. Sommige
implementaties van vi hebben een toegevoegd wedstrijdtijd optie waarmee gebruikers het nummer kunnen instellen
Met intervallen van 0,1 seconde pauzeert de cursor op het overeenkomende teken.

showmodus
De showmodus optie is gebruikt in sommige historische implementaties van ex en vi naar
geef de huidige bewerkingsmodus weer in de open of visuele modus. De bewerkingsmodi hebben
omvatte over het algemeen ``command'' en ``invoer'', en soms ook andere modi zoals
``vervangen'' en ``veranderen''. De tekenreeks werd meestal weergegeven op de onderste regel van het
scherm in de uiterste rechterhoek. Bovendien een voorafgaande '*' karakter vaak genoemd
of de inhoud van de bewerkingsbuffer is gewijzigd. Dit laatste display heeft
maakte soms deel uit van de showmodus optie, en soms gebaseerd op een andere optie. Dit
optie was niet beschikbaar in de 4 BSD historische implementatie van vi, maar werd gezien als
over het algemeen nuttig, vooral voor beginnende gebruikers, en vereist door POSIX.1-2008.

De smd steno voor de showmodus optie was niet in alle historische tijden aanwezig
implementaties van de editor. POSIX.1-2008 vereist dit vanwege de consistentie.

Niet alle historische implementaties van de editor vertoonden een modusreeks voor de opdrachtmodus.
onderscheid maken tussen de opdrachtmodus en de tekstinvoermodus door de afwezigheid van een modusstring.
POSIX.1‐2008 staat dit gedrag toe vanwege consistentie met de historische praktijk, maar
implementaties worden aangemoedigd om een ​​weergavereeks voor beide modi te bieden.

langzaam openen
Historisch gezien is de langzaam openen optie werd automatisch ingesteld als de baudsnelheid van de terminal lager was
dan 1200 baud, of als de baudsnelheid 1200 baud was en de terugtrekken optie is niet ingesteld. De
langzaam openen optie had twee gevolgen. Ten eerste, wanneer u tekens in het midden van een regel invoegt,
tekens na de cursor worden niet vooruit geschoven, maar lijken te worden overschreven.
Ten tweede: bij het maken van een nieuwe regel tekst zouden de regels na de huidige regel dat niet zijn
naar beneden gescrolld, maar het lijkt erop dat het overschreven is. In beide gevallen wordt de tekstinvoermodus beëindigd
zou ervoor zorgen dat het scherm wordt vernieuwd zodat het overeenkomt met de werkelijke inhoud van de bewerkingsbuffer.
Ten slotte zorgden terminals die voldoende intelligent waren ervoor dat de editor de
langzaam openen keuze. POSIX.1-2008 staat het meeste historische gedrag toe en breidt het historische gedrag uit
praktijk nodig hebben langzaam openen gedrag als de bewerkingsoptie door de gebruiker is ingesteld.

labels
Het standaardpad voor tagsbestanden wordt niet gespecificeerd omdat implementaties mogelijk hun eigen pad hebben
labels implementaties die niet overeenkomen met de historische. De standaard labels
optiewaarde moet waarschijnlijk op zijn minst het bestand bevatten ./labels.

termijn
Historische implementaties van ex en vi negeerde wijzigingen in de termijn bewerkingsoptie na de
initiële terminalinformatie is geladen. Dit is toegestaan ​​door POSIX.1‐2008; Echter,
implementaties worden aangemoedigd om de gebruiker in staat te stellen zijn terminaltype op elk gewenst moment te wijzigen
tijd.

kortom
Historisch gezien is de kortom de bewerkingsoptie leverde optioneel een kortere, minder beschrijvende fout op
bericht, voor sommige foutmeldingen. Dit is toegestaan, maar niet vereist, door POSIX.1-2008.
Historisch gezien zijn de meest voorkomende fouten in de visuele modus (bijvoorbeeld het verplaatsen van de cursor voorbij
het einde van een regel) leverde geen foutmelding op, maar waarschuwde eenvoudigweg de terminal.
Implementaties die berichten voor beginnende gebruikers willen aanbieden, worden dringend verzocht dit te doen op basis van
de Bewerk optie breedsprakig, en niet kortom.

venster
In historische implementaties is de standaardwaarde voor de venster bewerkingsoptie was gebaseerd op de
baudrate als volgt:

1. Als de baudrate minder dan 1200 was, wordt de Bewerk optie w300 stel de vensterwaarde in; voor
bijvoorbeeld de regel:

reeks w300=12

zou de vensteroptie op 12 zetten als de baudrate minder dan 1200 was.

2. Als de baudrate gelijk was aan 1200, wordt de Bewerk optie w1200 stel de vensterwaarde in.

3. Als de baudrate groter was dan 1200, wordt de Bewerk optie w9600 stel de vensterwaarde in.

De w300, w1200 en w9600 opties verschijnen niet in POSIX.1-2008 vanwege hun
afhankelijkheid van specifieke baudsnelheden.

In historische implementaties was de grootte van het venster dat door verschillende opdrachten werd weergegeven
gerelateerd aan, maar niet noodzakelijkerwijs hetzelfde als, de venster optie bewerken. De maat bijvoorbeeld
van het raam werd ingesteld door de ex commando visuele 10, maar het veranderde de waarde van de niet
venster optie bewerken. Het wijzigen van de waarde van de venster edit-optie heeft de
aantal lijnen dat werd weergegeven toen het scherm opnieuw werd geverfd. POSIX.1-2008 niet
dit gedrag toestaan ​​in het belang van consistentie en eenvoud van specificatie, en
vereist dat alle opdrachten die het aantal weergegeven regels wijzigen, dit doen
het instellen van de waarde van de venster optie bewerken.

wikkelmarge, wm
Historisch gezien is de wikkelmarge optie had geen invloed op kaarten waarbij tekens werden ingevoegd die dat ook hadden
geassocieerd tellenS; Bijvoorbeeld :kaart K 5aABC DEF. Helaas worden er veel gebruikt
kaarten die afhankelijk zijn van dit gedrag. Voor consistentie en eenvoud van specificatie,
POSIX.1-2008 staat dit gedrag niet toe.

Historisch wikkelmarge werd berekend met behulp van de kolomweergavebreedte van alle tekens
op het scherm. Een implementatie met behulp van bijvoorbeeld "^ ik" om -tekens weer te geven
wanneer de lijst bewerkingsoptie is ingesteld, waar '^' en 'IK' elk besloeg een enkele kolom op de
scherm, zou de berekenen wikkelmarge gebaseerd op een waarde van 2 voor elke . De aantal
De bewerkingsoptie veranderde op vergelijkbare wijze ook de effectieve lengte van de lijn. POSIX.1-2008
vereist aanpassing aan de historische praktijk.

Eerdere versies van deze standaard stonden implementaties toe met andere bytes dan acht
bits, maar dit is in deze versie aangepast.

TOEKOMST ROUTEBESCHRIJVING


Geen.

Gebruik exposix online met behulp van onworks.net-services


Gratis servers en werkstations

Windows- en Linux-apps downloaden

  • 1
    Phaser
    Phaser
    Phaser is een snelle, gratis en leuke open
    source HTML5-gameframework dat biedt
    WebGL- en Canvas-weergave overdwars
    desktop- en mobiele webbrowsers. Spellen
    kan samen zijn...
    Phaser downloaden
  • 2
    VASSAL-motor
    VASSAL-motor
    VASSAL is een game-engine om te creëren
    elektronische versies van traditioneel bord
    en kaartspellen. Het biedt ondersteuning voor
    weergave en interactie van speelstukken,
    en...
    VASSAL-engine downloaden
  • 3
    OpenPDF - Vork van iText
    OpenPDF - Vork van iText
    OpenPDF is een Java-bibliotheek voor het maken van
    en het bewerken van PDF-bestanden met een LGPL en
    MPL open source-licentie. OpenPDF is de
    LGPL/MPL open source opvolger van iText,
    een...
    Download OpenPDF - Vork van iText
  • 4
    SAGA GIS
    SAGA GIS
    SAGA - Systeem voor geautomatiseerd
    Geowetenschappelijke analyses - is een geografische
    Informatie Systeem (GIS) software met
    enorme mogelijkheden voor geodata
    verwerking en analyse...
    SAGA GIS downloaden
  • 5
    Toolbox voor Java/JTOpen
    Toolbox voor Java/JTOpen
    De IBM Toolbox voor Java / JTOpen is een
    bibliotheek van Java-klassen die de
    client/server- en internetprogrammering
    modellen naar een systeem met OS/400,
    i5/OS, o...
    Toolbox voor Java/JTOpen downloaden
  • 6
    D3.js
    D3.js
    D3.js (of D3 voor gegevensgestuurde documenten)
    is een JavaScript-bibliotheek waarmee u
    om dynamische, interactieve gegevens te produceren
    visualisaties in webbrowsers. Met D3
    u...
    D3.js downloaden
  • Meer "

Linux-commando's

  • 1
    abidiff
    abidiff
    abidiff - vergelijk ABI's van ELF-bestanden
    abidiff vergelijkt de Application Binary
    Interfaces (ABI) van twee gedeelde bibliotheken
    in ELF-formaat. Het straalt een betekenis uit
    verslag...
    Voer abidiff uit
  • 2
    blijf
    blijf
    abidw - serialiseer de ABI van een ELF
    bestand abidw leest een gedeelde bibliotheek in ELF
    formaat en verzendt een XML-representatie
    van zijn ABI naar standaarduitvoer. De
    uitgestoten ...
    Voer abidw uit
  • 3
    copac2xml
    copac2xml
    bibutils - conversie van bibliografie
    nutsvoorzieningen ...
    Voer copac2xml uit
  • 4
    Copt
    Copt
    copt - kijkgaatje-optimizer SYSNOPIS:
    copt-bestand.. BESCHRIJVING: copt is een
    kijkgaatje-optimizer voor algemeen gebruik. Het
    leest code van zijn standaardinvoer en
    schrijft een...
    Kopt uitvoeren
  • 5
    collect_stx_titles
    collect_stx_titles
    collect_stx_titles - titel verzamelen
    verklaringen van Stx-documenten ...
    Voer collect_stx_titles uit
  • 6
    gatling-bank
    gatling-bank
    bank - http-benchmark ...
    Run gatling-bank
  • Meer "

Ad