EnglischFranzösischSpanisch

Ad


OnWorks-Favicon

expox - Online in der Cloud

Führen Sie Exposix im kostenlosen OnWorks-Hosting-Provider über Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator aus

Dies ist die Befehlsdarstellung, die im kostenlosen OnWorks-Hosting-Provider mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


ex — Texteditor

ZUSAMMENFASSUNG


ex [−rR] [−s|−v] [-c Befehl] [−t Tagstring] [-w Größe] [Datei...]

BESCHREIBUNG


Das ex Utility ist ein zeilenorientierter Texteditor. Es gibt zwei andere Modi des Editors—
offen und visuell – in dem eine bildschirmorientierte Bearbeitung möglich ist. Das ist mehr beschrieben
ganz von der ex XNUMXh geöffnet und visuell Befehle und in vi.

Ist ein Operand '-', die Ergebnisse sind nicht spezifiziert.

In diesem Abschnitt wird der Begriff verwendet bearbeiten puffern um den aktuellen Arbeitstext zu beschreiben. Keine spezifische
Die Umsetzung wird durch diesen Begriff impliziert. Alle Bearbeitungsänderungen werden an der Bearbeitung vorgenommen
Puffer, und keine Änderungen daran wirken sich auf eine Datei aus, bis ein Editorbefehl die
Datei.

Bestimmte Terminals verfügen nicht über alle erforderlichen Fähigkeiten, um das vollständige ex
Definition, wie die Vollbild-Bearbeitungsbefehle (visuell Modus or XNUMXh geöffnet Modus). Wann
Diese Befehle können auf solchen Terminals nicht unterstützt werden, diese Bedingung darf kein
Fehlermeldung wie ``kein Editorbefehl'' oder einen Syntaxfehler melden. Die
Die Implementierung kann entweder die Befehle akzeptieren und Ergebnisse auf dem Bildschirm erzeugen, die
das Ergebnis eines erfolglosen Versuchs, die Anforderungen dieses Volumens von
POSIX.1‐2008 oder einen Fehler melden, der den terminalbezogenen Mangel beschreibt.

OPTIONAL


Das ex Dienstprogramm muss dem Band der Basisdefinitionen von POSIX.1‐2008 entsprechen, Abschnitt 12.2,
Dienstprogramm Syntax Richtlinien, mit Ausnahme der nicht näher bezeichneten Verwendung von '-', Und das '+' könnte sein
als Optionstrennzeichen anerkannt sowie '-'.

Folgende Optionen sollen unterstützt werden:

-c Befehl
Geben Sie einen Anfangsbefehl an, der im ersten Editierpuffer ausgeführt werden soll, der geladen wird von
eine vorhandene Datei (siehe Abschnitt ERWEITERTE BESCHREIBUNG). Implementierungen können
mehr als einen unterstützen -c Möglichkeit. In solchen Implementierungen ist die angegebene
Befehle werden in der in der Befehlszeile angegebenen Reihenfolge ausgeführt.

−r Stellen Sie die benannten Dateien wieder her (siehe Abschnitt ERWEITERTE BESCHREIBUNG). Erholung
Informationen zu einer Datei sollen bei einem Editor- oder Systemabsturz gespeichert werden (für
wenn der Editor durch ein Signal beendet wird, das der Editor abfangen kann),
oder nach der Verwendung von an ex bewahren Befehl.

A Absturz in diesem Zusammenhang ist ein unerwarteter Ausfall des Systems oder Dienstprogramms, das
erfordert einen Neustart des ausgefallenen Systems oder Dienstprogramms. Ein Systemabsturz impliziert, dass
Alle Dienstprogramme, die zu diesem Zeitpunkt ausgeführt werden, stürzen ebenfalls ab. Bei einem Editor oder System
Absturz, die Anzahl der Änderungen am Bearbeitungspuffer (seit dem letzten bewahren
Befehl), der wiederhergestellt wird, ist nicht angegeben.

Wenn nein Datei Operanden sind gegeben und die −t Option ist nicht angegeben, alle anderen
Optionen, die BEENDEN variabel und beliebig .exrc Dateien werden ignoriert; eine Liste von
alle wiederherstellbaren Dateien, die dem aufrufenden Benutzer zur Verfügung stehen, müssen geschrieben werden, und die
Der Editor wird normalerweise ohne weitere Maßnahmen beendet.

-R Sept schreibgeschützt Bearbeiten-Option.

−s Danach ex für Batch-Verwendung, indem Sie die folgenden Aktionen ausführen:

* Unterdrücken von Eingabeaufforderungen und informativen (aber nicht diagnostischen) Meldungen.

* Ignoriere den Wert von TERM und jeden Standard-Terminaltyp der Implementierung und
annehmen, dass das Terminal ein Typ ist, der nicht in der Lage ist, offene oder visuelle Modi zu unterstützen;
finden Sie in der visuell Befehl und die Beschreibung von vi.

* Unterdrücken Sie die Verwendung von BEENDEN Umgebungsvariable und das Lesen von any
.exrc Datei; siehe Abschnitt ERWEITERTE BESCHREIBUNG.

* Automatisches Einrücken unterdrücken und den Wert von ignorieren automatischer Einzug Bearbeiten-Option.

−t Tagstring
Bearbeiten Sie die Datei mit dem angegebenen Tagstring; sehen Tags. Die Tags-Funktion
vertreten durch −t Tagstring und dem Etikett Befehl ist optional. Es soll sein
auf jedem System bereitgestellt, das auch eine konforme Implementierung von Tags;
andernfalls die Verwendung von −t führt zu undefinierten Ergebnissen. Auf jedem System muss es sein
ein Fehler bei der Angabe von mehr als einem einzelnen −t .

−v Beginnen Sie im visuellen Modus (siehe vi).

-w Größe Stellen Sie den Wert von ein Fenster Editor-Option zu Größe.

OPERANDEN


Der folgende Operand soll unterstützt werden:

Datei Ein Pfadname einer zu bearbeitenden Datei.

STDIN


Die Standardeingabe besteht aus einer Reihe von Befehlen und Eingabetexten, wie in der
Abschnitt ERWEITERTE BESCHREIBUNG. Die Implementierung kann jede Zeile der Standardeingabe auf beschränken
eine Länge von {LINE_MAX}.

Handelt es sich bei der Standardeingabe nicht um ein Endgerät, ist dies so, als ob die −s Option war gewesen
spezifiziert.

Wenn ein Lesen von der Standardeingabe einen Fehler zurückgibt oder der Editor ein Ende der
Dateibedingung aus der Standardeingabe, entspricht einem SIGHUP asynchron
Ereignis.

SPEISUNG DATEIEN


Eingabedateien sind Textdateien oder Dateien, die bis auf ein unvollständiges Textdateien wären
letzte Zeile, die nicht länger als {LINE_MAX}−1 Byte ist und keine NUL enthält
Zeichen. Standardmäßig wird jede unvollständige letzte Zeile so behandelt, als hätte sie ein abschließendes
. Die Bearbeitung anderer Dateiformen kann optional erlaubt werden durch ex
Implementierungen.

Das .exrc Dateien und Quelldateien sind Textdateien bestehend aus ex Befehle; sieh das
Abschnitt ERWEITERTE BESCHREIBUNG.

Standardmäßig liest der Editor Zeilen aus den zu bearbeitenden Dateien ohne zu interpretieren
jede dieser Zeilen als eine beliebige Form von Editorbefehlen.

VARIABLEN


Die folgenden Umgebungsvariablen sollen die Ausführung von ex:

COLUMNS Überschreiben Sie die vom System ausgewählte horizontale Bildschirmgröße. Siehe die Basisdefinitionen
Band von POSIX.1‐2008, Kapitel 8, Arbeitsumfeld Variablen für gültige Werte und
Ergebnisse, wenn es nicht gesetzt oder null ist.

BEENDEN Bestimmen Sie eine Liste von ex Befehle, die beim Start des Editors ausgeführt werden. Siehe die
Abschnitt ERWEITERTE BESCHREIBUNG für weitere Einzelheiten zur Initialisierungsphase.

HOME Bestimmen Sie einen Pfadnamen eines Verzeichnisses, das nach einem Editor-Start durchsucht werden soll.
up-Datei namens .exrc; siehe Abschnitt ERWEITERTE BESCHREIBUNG.

SPRACHE Geben Sie einen Standardwert für die Internationalisierungsvariablen an, die nicht festgelegt sind oder
Null. (Siehe den Band Basisdefinitionen von POSIX.1‐2008, Abschnitt 8.2,
Internationalisierung Variablen für den Vorrang der Internationalisierung
Variablen, die verwendet werden, um die Werte von Gebietsschemakategorien zu bestimmen.)

LC_ALL Wenn auf einen nicht leeren Zeichenfolgenwert gesetzt, überschreiben Sie die Werte aller anderen
Internationalisierungsvariablen.

LC_COLLATE
Bestimmen Sie das Gebietsschema für das Verhalten von Bereichen, Äquivalenzklassen und Multi-
Elemente zum Sortieren von Zeichen in regulären Ausdrücken.

LC_CTYPE Bestimmen Sie das Gebietsschema für die Interpretation von Sequenzen von Bytes von Textdaten
als Zeichen (z. B. Einzelbyte- im Gegensatz zu Mehrbyte-Zeichen in
Argumente und Eingabedateien), das Verhalten von Zeichenklassen innerhalb regulärer
Ausdrücke, die Einteilung von Zeichen in Groß- oder Kleinbuchstaben,
die Groß-/Kleinschreibung von Buchstaben und die Erkennung von Wortgrenzen.

LC_MESSAGES
Bestimmen Sie das Gebietsschema, das verwendet werden soll, um das Format und den Inhalt von . zu beeinflussen
Diagnosemeldungen in Standardfehler geschrieben.

LINES Überschreiben Sie die vom System ausgewählte vertikale Bildschirmgröße, die als Anzahl der Zeilen verwendet wird
in einem Bildschirm voll und die vertikale Bildschirmgröße im visuellen Modus. Siehe die Basis
Definitionen Band von POSIX.1‐2008, Kapitel 8, Arbeitsumfeld Variablen für gültig
Werte und Ergebnisse, wenn es nicht festgelegt oder null ist.

NLSPATH Bestimmen Sie den Speicherort von Nachrichtenkatalogen für die Verarbeitung von LC_MESSAGES.

PATH Bestimmen Sie den Suchpfad für den Shell-Befehl, der in der ex Herausgeber
Befehle !, Schale, lesen und schreiben, und der Befehl für den offenen und den visuellen Modus !; sehen
die Beschreibung der Befehlssuche und -ausführung in Abschnitt 2.9.1.1, Befehl
Suche und ausführung.

SHELL Bestimmen Sie den bevorzugten Befehlszeileninterpreter für die Verwendung als Standardwert von
Schale Bearbeiten-Option.

TERM Bestimmen Sie den Namen des Terminaltyps. Wenn diese Variable nicht gesetzt oder null ist, wird an
nicht spezifizierter Standard-Terminaltyp verwendet werden.

ASYNCHRON Events


Der folgende Begriff wird in diesem und den folgenden Abschnitten verwendet, um Befehl und
asynchrone Ereignisaktionen:

abschließen schreiben
Ein vollständiger Schreibvorgang ist ein Schreiben des gesamten Inhalts des Editierpuffers in eine Datei
eines anderen Typs als ein Endgerät, oder das Speichern des Editierpuffers verursachte
durch den Benutzer, der die ex bewahren Befehl. Den Inhalt des Edits schreiben
Puffer in eine temporäre Datei, die beim Beenden des Editors entfernt wird, nicht
als vollständiger Schreibvorgang angesehen werden.

Beim Empfang von Signalen sind folgende Maßnahmen zu ergreifen:

SIGINT Wenn der Standardeingang kein Endgerät ist, ex soll die Datei nicht schreiben oder
Rückkehr zum Befehls- oder Texteingabemodus und wird mit einem Ausgang ungleich Null beendet
Status.

Andernfalls, wenn Sie einen Befehl für den offenen oder visuellen Texteingabemodus ausführen, ex in Empfang
von SIGINT verhält sich identisch mit dem Erhalt der Charakter.

Andernfalls:

1. Bei Ausführung eines ex Befehl Texteingabemodus, alle Eingabezeilen, die
vollständig eingegeben werden in den Bearbeitungspuffer aufgelöst, und alle teilweise
eingegebene Zeile wird verworfen.

2. Wenn ein aktuell ausgeführter Befehl vorliegt, wird dieser abgebrochen und eine Meldung
angezeigt. Sofern nicht anders von den ex or vi Befehlsbeschreibungen,
Es ist nicht angegeben, ob durch den ausführenden Befehl geänderte Zeilen angezeigt werden
geändert, oder wie sie waren, bevor sie durch den ausführenden Befehl geändert wurden, in
der Puffer.

Wenn der aktuell ausgeführte Befehl ein Bewegungsbefehl war, ist sein zugehöriger
Befehl verworfen werden.

3. Im offenen oder visuellen Befehlsmodus muss das Terminal alarmiert werden.

4. Der Editor kehrt dann in den Befehlsmodus zurück.

SIGCONT Der Bildschirm soll im offenen oder visuellen Modus aktualisiert werden.

SIGHUP Wenn der Editierpuffer seit dem letzten vollständigen Schreiben geändert wurde, ex wird
Versuchen Sie, den Bearbeitungspuffer zu speichern, damit er später mit dem . wiederhergestellt werden kann −r
Option oder die ex erholen Befehl. Der Editor darf die Datei nicht schreiben oder zurückgeben
in den Befehls- oder Texteingabemodus und endet mit einem Ausgangsstatus ungleich Null.

SIGTERM Siehe SIGHUP.

Die Aktion für alle anderen Signale ist nicht spezifiziert.

STDOUT


Die Standardausgabe darf nur zum Schreiben von Aufforderungen an den Benutzer, zu Informationszwecken verwendet werden
Nachrichten und zum Schreiben von Zeilen aus der Datei.

STDERR


Der Standardfehler darf nur für Diagnosemeldungen verwendet werden.

AUSGABE DATEIEN


Die Ausgabe von ex sollen Textdateien sein.

VERLÄNGERT BESCHREIBUNG


Nur der ex Modus des Editors wird in diesem Abschnitt beschrieben. Sehen vi für zusätzliche Bearbeitung
Fähigkeiten verfügbar in ex.

Wenn ein Fehler auftritt, ex soll eine Nachricht schreiben. Wenn das Terminal einen Standout-Modus unterstützt
(wie inverses Video) soll die Nachricht im Standout-Modus geschrieben werden. Wenn das Terminal
unterstützt keinen herausragenden Modus und die Bearbeitungsoption Fehlerglocken gesetzt ist, eine Warnaktion
soll der Fehlermeldung vorangestellt werden.

Standardmäßig ex soll im Kommandomodus starten, was durch a . angezeigt wird : prompt; sehen
Eingabeaufforderung Befehl. Der Texteingabemodus kann durch die . aufgerufen werden anhängen, einfügen, oder Übernehmen
Befehle; es kann durch Eingabe von a . beendet (und wieder in den Befehlsmodus gewechselt) werden ('.') allein
am Anfang einer Zeile.

Initialisierung in ex und vi
Die folgenden Symbole werden in diesem und den folgenden Abschnitten verwendet, um Orte im
Puffer bearbeiten:

wechseln und Strom Pfadnamen
Zwei Pfadnamen, benannt Strom und wechseln, werden von der Redaktion gepflegt. Irgendein ex
Befehle, die Dateinamen als Argumente annehmen, müssen sie wie folgt setzen:

1. Wenn a Datei Argument ist angegeben für die ex bearbeiten, ex, oder erholen Befehle, oder wenn
an ex Etikett Befehl ersetzt den Inhalt des Bearbeitungspuffers.

A. Wenn der Befehl den Inhalt des Editierpuffers ersetzt, wird der aktuelle
Pfadname soll auf den . gesetzt werden Datei -Argument oder die vom Tag angegebene Datei,
und der alternative Pfadname soll auf den vorherigen Wert des aktuellen gesetzt werden
Pfadname.

B. Andernfalls wird der alternative Pfadname auf den . gesetzt Datei Argument.

2. Wenn a Datei Argument ist angegeben für die ex weiter Befehl:

A. Wenn der Befehl den Inhalt des Editierpuffers ersetzt, wird der aktuelle
Pfadname soll auf den ersten gesetzt werden Datei Argument und der alternative Pfadname
soll auf den vorherigen Wert des aktuellen Pfadnamens gesetzt werden.

3. Wenn a Datei Argument ist angegeben für die ex Datei Befehl, der aktuelle Pfadname
soll auf die eingestellt werden Datei Argument, und der alternative Pfadname soll auf gesetzt werden
der vorherige Wert des aktuellen Pfadnamens.

4. Wenn a Datei Argument ist angegeben für die ex lesen und schreiben Befehle (das heißt, wenn
eine Datei lesen oder schreiben, und nicht in das Programm, das von der Schale bearbeiten
Option) oder a Datei Argument ist angegeben für die ex Schlag Befehl:

A. Wenn der aktuelle Pfadname keinen Wert hat, soll der aktuelle Pfadname auf gesetzt werden
Datei Argument.

B. Andernfalls wird der alternative Pfadname auf den . gesetzt Datei Argument.

Wenn der alternative Pfadname auf den vorherigen Wert des aktuellen Pfadnamens gesetzt ist, wenn
der aktuelle Pfadname keinen vorherigen Wert hatte, dann muss der alternative Pfadname . haben
dadurch kein Wert.

Strom Linie
Die Zeile des Bearbeitungspuffers, auf die der Cursor verweist. Jede Befehlsbeschreibung
gibt die aktuelle Zeile nach Ausführung des Befehls an, da die Strom Linie
Wert. Wenn der Editierpuffer keine Zeilen enthält, soll die aktuelle Zeile Null sein; sehen
Adressierung in ex.

Strom Überblick
Die aktuelle Spalte der Anzeigezeile, die vom Cursor belegt wird. (Die Spalten sind
nummeriert beginnend bei 1.) Jede Befehlsbeschreibung gibt die aktuelle Spalte an
nachdem der Befehl ausgeführt wurde, da die Strom Überblick Wert. Diese Spalte ist ein
ideal Spalte, die während der Lebensdauer des Editors gespeichert wird. Die eigentliche Anzeige
Zeilenspalte, auf der der Cursor steht, kann sich von der aktuellen Spalte unterscheiden;
siehe die Diskussion zur Cursorpositionierung in Befehl Beschreibungen in vi.

kompensieren zu nicht-
Eine Beschreibung für einen aktuellen Spaltenwert, was bedeutet, dass die aktuelle Spalte
auf die letzte Anzeigezeilenspalte setzen, auf der ein Teil der ersten angezeigt wird
nicht- der Linie. Wenn die Zeile keine Nicht- nicht- Zeichen,
die aktuelle Spalte soll auf die letzte Anzeigezeilenspalte gesetzt werden, auf der
einen beliebigen Teil der letzten nicht angezeigten Zeichen in der Zeile. Wenn die Linie ist
leer, die aktuelle Spalte soll auf Spaltenposition 1 gesetzt werden.

Die Länge der Zeilen im Editierpuffer kann auf {LINE_MAX} Bytes begrenzt sein. Im offenen und
Im visuellen Modus kann die Länge der Zeilen im Bearbeitungspuffer auf die Anzahl von
Zeichen, die in die Anzeige passen. Wenn einer der Grenzwerte während der Bearbeitung überschritten wird, wird ein
Fehlermeldung geschrieben werden. Wenn einer der Grenzwerte durch eine aus einer Datei eingelesene Zeile überschritten wird,
eine Fehlermeldung wird geschrieben und die Editiersitzung kann beendet werden.

Wenn der Editor aus einem anderen Grund als einem Benutzerbefehl nicht mehr läuft und die Bearbeitung
Puffer seit dem letzten vollständigen Schreibvorgang geändert wurde, entspricht dies einem SIGHUP
asynchrones Ereignis. Wenn das System abstürzt, ist es gleichbedeutend mit einem asynchronen SIGHUP
Ereignis.

Während der Initialisierung (bevor die erste Datei in den Editierpuffer kopiert wird oder ein Benutzer
Befehle vom Terminal verarbeitet werden) soll folgendes passieren:

1. Wenn die Umgebungsvariable BEENDEN gesetzt ist, führt der Editor die ex Befehle
in dieser Variablen enthalten.

2. Wenn die BEENDEN Variable ist nicht gesetzt und alle folgenden Aussagen sind wahr:

ein. Das HOME Umgebungsvariable ist nicht null und nicht leer.

B. Die Datei .exrc in dem Verzeichnis, auf das die HOME Umgebungsvariable:

ich. Existiert

ii. Besitzt dieselbe Benutzer-ID wie die echte Benutzer-ID des Prozesses oder der
Prozess hat entsprechende Privilegien

iii. Ist von niemand anderem als dem Eigentümer beschreibbar

der Herausgeber führt die ex Befehle, die in dieser Datei enthalten sind.

3. Nur wenn alle der folgenden Bedingungen zutreffen:

A. Das aktuelle Verzeichnis wird nicht von der HOME variable Umgebung

B. Ein Befehl im BEENDEN Umgebungsvariable oder ein Befehl im .exrc Datei in das
Verzeichnis, auf das verwiesen wird HOME Umgebungsvariable legt die Editor-Option fest
Auszug.

c. Die .exrc Datei im aktuellen Verzeichnis:

ich. Existiert

ii. Besitzt dieselbe Benutzer-ID wie die tatsächliche Benutzer-ID des Prozesses oder eine von
eine Reihe von implementierungsdefinierten Benutzer-IDs

iii. Ist von niemand anderem als dem Eigentümer beschreibbar

der Herausgeber wird versuchen, die ex Befehle, die in dieser Datei enthalten sind.

Zeilen in allen .exrc Dateien mit Leerzeilen werden ignoriert. Wenn überhaupt .exrc Datei existiert,
aber aus Eigentums- oder Berechtigungsgründen nicht gelesen wird, handelt es sich um einen Fehler.

Nach dem BEENDEN variabel und beliebig .exrc Dateien verarbeitet werden, die erste Datei, die durch . angegeben wird
der Benutzer wird wie folgt bearbeitet:

1. Wenn der Benutzer die −t Option ist die Wirkung so, als ob die ex Etikett Befehl war
mit dem angegebenen Argument eingegeben, mit der Ausnahme, dass wenn die Tag-Verarbeitung dies tut
nicht zu einer zu bearbeitenden Datei führt, ist der Effekt wie in Schritt 3 unten beschrieben.

2. Andernfalls, wenn der Benutzer eine Befehlszeile angegeben hat Datei Argumente, die Wirkung soll sein
als ob die ex bearbeiten Befehl wurde mit dem ersten dieser Argumente als sein . eingegeben Datei
Argument.

3. Andernfalls ist die Wirkung so, als ob die ex bearbeiten Befehl wurde mit a . eingegeben
nicht vorhandener Dateiname als sein Datei Streit. Es ist nicht spezifiziert, ob diese Aktion
setzt den aktuellen Pfadnamen. In einer Implementierung, bei der diese Aktion nicht die
aktueller Pfadname, jeder Editorbefehl, der den aktuellen Pfadnamen verwendet, schlägt fehl, bis ein
Editor-Befehl setzt den aktuellen Pfadnamen.

Besitzt das −r Option angegeben wurde, das erste Mal eine Datei in der anfänglichen Argumentliste oder a
Datei angegeben von der −t Option wird bearbeitet, wenn zuvor Wiederherstellungsinformationen eingegeben wurden
darüber gespeichert werden, werden diese Informationen wiederhergestellt und der Redakteur muss sich so verhalten, als ob die
Der Inhalt des Editierpuffers wurde bereits geändert. Wenn es mehrere Instanzen von gibt
die wiederherzustellende Datei, die zuletzt gespeicherte Datei soll wiederhergestellt werden und ein
Informationsmeldung, dass es frühere Versionen der Datei gibt, die wiederhergestellt werden können
geschrieben werden soll. Wenn keine Wiederherstellungsinformationen zu einer Datei verfügbar sind, wird ein Informations
Nachricht zu diesem Zweck geschrieben werden, und die Bearbeitung wird wie gewohnt fortgesetzt.

Besitzt das -c Option angegeben wurde, das erste Mal eine Datei, die bereits existiert (einschließlich a
Datei, die möglicherweise nicht existiert, für die jedoch Wiederherstellungsinformationen verfügbar sind, wenn die −r
Option angegeben) ersetzt oder initialisiert den Inhalt des Editierpuffers, den aktuellen
Zeile soll auf die letzte Zeile des Editierpuffers gesetzt werden, die aktuelle Spalte soll auf . gesetzt werden
nicht- , und der ex Befehle, die mit angegeben werden -c Option ausgeführt werden. In diesem
Fall soll die aktuelle Zeile und aktuelle Spalte nicht wie für den Befehl beschrieben gesetzt werden
verbunden mit dem Ersetzen oder Initialisieren des Inhalts des Editierpuffers. Wie auch immer, wenn
−t Option oder a Etikett Befehl ist mit dieser Aktion verbunden, der -c Optionsbefehle
ausgeführt werden und dann die Bewegung zum Tag ausgeführt werden.

Die aktuelle Argumentliste soll zunächst auf die vom Benutzer angegebenen Dateinamen gesetzt werden
die Befehlszeile. Wenn vom Benutzer keine Dateinamen angegeben werden, wird die aktuelle Argumentliste
soll leer sein. Wenn die −t Option angegeben wurde, ist nicht angegeben, ob ein Dateiname
die aus der Tag-Verarbeitung resultieren, werden der aktuellen Argumentliste vorangestellt. Im Falle
wobei der Dateiname als Präfix zur aktuellen Argumentliste hinzugefügt wird, das aktuelle Argument
Listenreferenz soll auf diesen Dateinamen gesetzt werden. Falls der Dateiname nicht hinzugefügt wird
als Präfix zur aktuellen Argumentliste soll die aktuelle Argumentlistenreferenz
logisch vor dem ersten der in der Befehlszeile angegebenen Dateinamen stehen (für
Beispiel, eine nachfolgende ex weiter Der Befehl bearbeitet den ersten Dateinamen des Befehls
Leitung). Wenn die −t Option nicht angegeben wurde, lautet die aktuelle Argumentlistenreferenz auf
der erste der Dateinamen in der Befehlszeile.

Adressierung in ex
Adressierung in ex bezieht sich auf die aktuelle Zeile und die aktuelle Spalte; die Adresse einer Zeile
ist ihre 1-basierte Zeilennummer, die Adresse einer Spalte ist ihre 1-basierte Zählung aus dem
Anfang der Zeile. Im Allgemeinen ist die aktuelle Zeile die letzte Zeile, die von einem Befehl betroffen ist.
Die aktuelle Zeilennummer ist die Adresse der aktuellen Zeile. In jeder Befehlsbeschreibung,
die Wirkung des Befehls auf die aktuelle Zeilennummer und die aktuelle Spalte wird beschrieben.

Adressen sind wie folgt aufgebaut:

1. Der Charakter '.' (Punkt) bezieht sich auf die aktuelle Zeile.

2. Der Charakter '$' soll die letzte Zeile des Editierpuffers adressieren.

3. Die positive Dezimalzahl n soll die ansprechen nZeile des Editierpuffers.

4. Die Adresse "'x" bezieht sich auf die mit dem Zeichennamenszeichen markierte Zeile 'x', Die
soll ein Kleinbuchstabe aus dem portablen Zeichensatz sein, das Backquote-Zeichen,
oder das einfache Anführungszeichen. Es ist ein Fehler, wenn die markierte Zeile nicht
aktuell im Editierpuffer vorhanden oder die Marke wurde nicht gesetzt. Linien können markiert werden
an. Nach der Installation können Sie HEIC-Dateien mit der ex Kennzeichen or k Befehle oder die vi m Befehl.

5. Ein von eingeschlossener regulärer Ausdruck Zeichen ('/') soll die erste Zeile adressieren
gefunden durch Vorwärtssuche ab der Zeile, die der aktuellen Zeile bis zum Ende von . folgt
den Editierpuffer und stoppen an der ersten Zeile, für die die Zeile ohne die
beendend entspricht dem regulären Ausdruck. Wie angegeben in Lang Ausdrücke
in ex, eine Adresse, die aus einem regulären Null-Ausdruck besteht, der durch begrenzt wird
Zeichen ("//") soll die nächste Zeile adressieren, für die die Zeile ohne die
beendend stimmt mit dem letzten gefundenen regulären Ausdruck überein. Zusätzlich,
der Zweite kann am Ende einer Befehlszeile weggelassen werden. Wenn die Wrapscan bearbeiten
Option gesetzt ist, soll die Suche zum Anfang des Editierpuffers umlaufen und
bis einschließlich der aktuellen Zeile fortfahren, so dass der gesamte Editierpuffer
gesucht. Innerhalb des regulären Ausdrucks ist die Sequenz "\/" soll ein wörtliches darstellen
anstelle des Trennzeichens für reguläre Ausdrücke.

6. Ein in eingeschlossener regulärer Ausdruck Zeichen ('?') richtet sich an die
erste gefundene Zeile durch Rückwärtssuche ab der Zeile vor der aktuellen Zeile
zum Anfang des Editierpuffers und stoppt bei der ersten Zeile, für die die
Linie ohne die abschließende entspricht dem regulären Ausdruck. Eine Adresse
bestehend aus einem regulären Null-Ausdruck, begrenzt durch Zeichen ("??")
soll die vorherige Linie adressieren, für die die Linie ohne die abschließende
stimmt mit dem letzten gefundenen regulären Ausdruck überein. Außerdem ist die zweite
mark> kann am Ende einer Kommandozeile weggelassen werden. Wenn die Wrapscan Bearbeitungsoption ist gesetzt,
die Suche soll vom Anfang des Editierpuffers bis zum Ende des
Puffer bearbeiten und bis einschließlich der aktuellen Zeile fortfahren, damit die gesamte Bearbeitung
Puffer wird durchsucht. Innerhalb des regulären Ausdrucks ist die Sequenz "\?" soll a . darstellen
wörtlich anstelle des RE-Trennzeichens.

7. A ('+') oder ein Minuszeichen ('-') gefolgt von einer Dezimalzahl soll adressieren
die aktuelle Zeile plus oder minus der Zahl. EIN '+' or '-' nicht gefolgt von einer Dezimalstelle
Nummer soll die aktuelle Zeile ansprechen plus oder minus 1.

Auf Adressen können optional null oder mehr Adress-Offsets folgen -getrennt.
Adress-Offsets sind wie folgt aufgebaut:

1. Die '+' or '-' unmittelbar gefolgt von einer Dezimalzahl addiert (subtrahiert) die
angegebene Anzahl von Zeilen zu (von) der Adresse. EIN '+' or '-' nicht gefolgt von a
Dezimalzahl addiert (subtrahiert) 1 zu (von) der Adresse.

2. Die Adresse wird durch eine Dezimalzahl um die angegebene Zeilenzahl ergänzt.

Es darf kein Fehler sein, wenn ein Zwischenadressenwert kleiner als null oder größer ist
als die letzte Zeile im Editierpuffer. Es soll ein Fehler sein, wenn der endgültige Adresswert zu
kleiner als Null oder größer als die letzte Zeile im Editierpuffer sein.

Befehle nehmen null, eine oder zwei Adressen an; siehe die Beschreibungen von 1adr und 2adr in
Befehl Beschreibungen in ex. Wenn mehr als die erforderliche Anzahl von Adressen bereitgestellt werden an
ein Befehl, der null Adressen erfordert, ist ein Fehler. Andernfalls, wenn mehr als die
einem Befehl die erforderliche Anzahl von Adressen zur Verfügung gestellt werden, die zuerst angegebenen Adressen
werden ausgewertet und dann verworfen, bis die maximale Anzahl gültiger Adressen übrig bleibt.

Adressen sind durch a . voneinander zu trennen (',') oder ein (';').
Wenn vor oder nach a . keine Adresse angegeben ist oder Trennzeichen, es soll sein
als ob die Adresse der aktuellen Zeile vor oder nach dem Trennzeichen angegeben wäre. In dem
Fall von a Trennzeichen, die aktuelle Zeile ('.') soll auf den ersten gesetzt werden
Adresse und erst dann wird die nächste Adresse berechnet. Diese Funktion kann verwendet werden, um
bestimmen Sie die Startlinie für Vorwärts- und Rückwärtssuchen (siehe Regeln 5. und 6.).

EIN ('%') ist gleichbedeutend mit der Eingabe der beiden Adressen "1,$".

Jede Abgrenzung Zeichen zwischen Adressen, Adresstrennzeichen oder Adresse
Offsets werden verworfen.

Befehl Line Parsing in ex
Das folgende Symbol wird in diesem und den folgenden Abschnitten verwendet, um das Parsing-Verhalten zu beschreiben:

Flucht Wenn ein Zeichen als `` . bezeichnet wird -escaped'' oder `` ‐V-
Escaped'' bedeutet, dass das Zeichen eine besondere Bedeutung erlangt oder verloren hat
dadurch, dass jeweils a . vorangestellt ist oder ‐V
Charakter. Sofern nicht anders angegeben, wird das Escape-Zeichen verworfen
zu diesem Zeitpunkt und werden zu keinem Zweck weiter berücksichtigt.

Die Befehlszeilenanalyse soll in den folgenden Schritten durchgeführt werden. Für jeden Schritt, Zeichen
bereits ausgewertete werden ignoriert; das heißt, der Ausdruck ``führendes Zeichen'' bezieht sich auf
das nächste noch nicht ausgewertete Zeichen.

1. Führend Zeichen werden übersprungen.

2. Führend Zeichen werden übersprungen.

3. Wenn das führende Zeichen ein doppeltes Anführungszeichen ist, die Zeichen bis und
einschließlich der nächsten nicht- -entkam verworfen werden, und alle
nachfolgende Zeichen werden als separater Befehl geparst.

4. Führende Zeichen, die als Adressen interpretiert werden können, werden ausgewertet; sehen
Adressierung in ex.

5. Führend Zeichen werden übersprungen.

6. Wenn das nächste Zeichen a . ist Charakter oder a :

A. Wenn das nächste Zeichen a . ist :

ich. Wenn ex im offenen oder visuellen Modus ist, wird die aktuelle Zeile auf die letzte gesetzt
Adresse angegeben, falls vorhanden.

ii. Andernfalls, wenn der letzte Befehl durch a . beendet wurde Charakter,
es werden keine Maßnahmen ergriffen; zum Beispiel der Befehl "|| " wird
Führen Sie zwei implizierte Befehle aus, nicht drei.

iii. Andernfalls Schritt 6.b. gilt.

B. Andernfalls ist der implizierte Befehl der drucken Befehl. Das Letzte #, p und l
Flags, die für alle angegeben sind ex Befehl soll in Erinnerung bleiben und dafür gelten
implizierten Befehl. Ausführung der ex Anzahl, drucken, oder Liste Befehl soll die
erinnerte sich an Flaggen an #, nichts, und l, bzw. plus alle anderen Flags
für diese Ausführung der Anzahl, drucken, oder Liste Befehl.

If ex führt derzeit kein a . durch globale or v Befehl und keine Adresse oder Zählung
angegeben ist, wird die aktuelle Zeile um 1 erhöht, bevor der Befehl
hingerichtet. Wenn das Inkrementieren der aktuellen Zeile zu einer Adresse nach dem führen würde
letzte Zeile im Editierpuffer, der Befehl soll fehlschlagen und das Inkrementieren nicht
passieren.

C. Die oder Zeichen werden verworfen und alle nachfolgenden
Zeichen werden als separater Befehl geparst.

7. Der Befehlsname muss aus dem nächsten Zeichen bestehen (wenn das Zeichen nicht
alphabetisch) oder das nächste Zeichen und alle nachfolgenden alphabetischen Zeichen (wenn die
Zeichen ist alphabetisch), mit folgenden Ausnahmen:

A. Befehle, die aus einem beliebigen Präfix der Zeichen im Befehlsnamen bestehen löschen,
unmittelbar gefolgt von einem der Zeichen 'l', 'P', '+', '-', oder '#' sind
interpretiert als löschen Befehl, gefolgt von a , gefolgt von den Zeichen
die nicht Teil des Präfixes des waren löschen Befehl. Die maximale Anzahl von
Zeichen müssen mit dem Befehlsnamen übereinstimmen löschen; beispielsweise, "del" wird
nicht behandelt werden als "de" gefolgt von der Flagge l.

B. Befehle, die aus dem Zeichen bestehen 'k', gefolgt von einem Zeichen, das sein kann
als Name einer Marke verwendet wird, entspricht dem Markenbefehl gefolgt von a
, gefolgt von dem Zeichen, das dem folgte 'k'.

C. Befehle, die aus dem Zeichen bestehen 's', gefolgt von Zeichen, die sein könnten
als gültige Optionen für die interpretiert s Befehl, entspricht dem s
Befehl, ohne Muster oder Ersatzwerte, gefolgt von a ,
gefolgt von den Zeichen nach dem 's'.

8. Der Befehlsname wird mit den möglichen Befehlsnamen abgeglichen und ein Befehl
Name, der ein Präfix enthält, das den vom Benutzer angegebenen Zeichen entspricht, ist der
ausgeführten Befehl. Bei Befehlen, bei denen die vom Benutzer angegebenen Zeichen
mehrdeutig sein könnte, muss der ausgeführte Befehl wie folgt lauten:

"
aanhängen ││nweiter ││tt
cÜbernehmen ││pdrucken ││urückgängig machen
chÜbernehmen ││prdrucken ││unrückgängig machen
ebearbeiten ││rlesen ││vv
mschlauer bewegen ││relesen ││wschreiben
maKennzeichen ││ss ││ │ │
"
Implementierungserweiterungen mit Namen, die ähnliche Mehrdeutigkeiten verursachen, werden nicht überprüft
für eine Übereinstimmung, bis alle möglichen Übereinstimmungen für die von POSIX.1‐2008 spezifizierten Befehle
überprüft worden.

9. Wenn der Befehl a . ist ! Befehl, oder wenn der Befehl a . ist lesen Befehl gefolgt von Null
oder mehr Charaktere und a !, oder wenn der Befehl a . ist schreiben Befehl gefolgt von
ein oder mehr Charaktere und a !, der Rest des Befehls umfasst alle
Zeichen bis zu einem Nicht- -entkam . Die muss
verworfen und alle nachfolgenden Zeichen werden separat geparst ex Befehl.

10. Andernfalls, wenn der Befehl an . ist bearbeiten, ex, oder weiter Befehl oder a visuell Befehl während
im offenen oder visuellen Modus wird der nächste Teil des Befehls wie folgt geparst:

A. Irgendein '!' Zeichen, die dem Befehl unmittelbar folgen, werden übersprungen und sind Teil
des Befehls.

B. Alle führenden Zeichen werden übersprungen und sind Teil des Befehls.

C. Wenn das nächste Zeichen a . ist '+', Zeichen bis zum ersten Nicht- -entkam
oder nicht- -entkam wird übersprungen und ist Teil der
Befehl.

D. Der Rest des Befehls wird durch die in Absatz . angegebenen Schritte bestimmt
12

11. Andernfalls, wenn der Befehl a . ist globale , XNUMXh geöffnet, s, oder v Befehl, der nächste Teil des
Befehl wird wie folgt geparst:

A. Alle führenden Zeichen werden übersprungen und sind Teil des Befehls.

B. Wenn das nächste Zeichen kein alphanumerisches, doppeltes Anführungszeichen ist, ,
, oder Charakter:

ich. Das nächste Zeichen soll als Befehlsbegrenzer verwendet werden.

ii. Wenn der Befehl a . ist globale , XNUMXh geöffnet, oder v Befehl, Zeichen bis zum ersten
nicht- -entkam , oder erste nicht- -escaped Trennzeichen
Zeichen, werden übersprungen und sind Teil des Befehls.

iii. Wenn der Befehl an ist s Befehl, Zeichen bis zum ersten
nicht- -entkam , oder zweite nicht- -entkam
Trennzeichen, werden übersprungen und sind Teil des Befehls.

C. Wenn der Befehl a . ist globale or v Befehl, Zeichen bis zum ersten
nicht- -entkam werden übersprungen und sind Teil des Befehls.

D. Andernfalls wird der Rest des Befehls durch die in angegebenen Schritte bestimmt
Absatz 12.

12. Ansonsten:

A. Wenn der Befehl a . war Karte, Karte aufheben, abkürzen, oder ungekürzt Befehl, Zeichen
bis zum ersten nicht- ‐V-escaped , , oder Doppel-
Anführungszeichen sollen übersprungen werden und Teil des Befehls sein.

B. Andernfalls werden Zeichen bis zum ersten Nicht- -entkam ,
, oder doppelte Anführungszeichen werden übersprungen und sind Teil des
Befehl.

C. Wenn der Befehl ein war anhängen, Übernehmen , oder einfügen Befehl, und der Schritt 12.b. beendet
an einer Zeichen, alle nachfolgenden Zeichen, bis zum nächsten
nicht- -entkam soll als Eingabetext für den Befehl verwendet werden.

D. Wenn der Befehl mit einem doppelten Anführungszeichen beendet wurde, werden alle nachfolgenden Zeichen,
bis zum nächsten nicht -entkam , verworfen werden.

e. Die Beendigung oder Charakter wird verworfen und alle
nachfolgende Zeichen werden als separates geparst ex Befehl.

Befehlsargumente müssen wie in der Synopsis und Beschreibung jedes einzelnen beschrieben geparst werden
Krankengymnastik ex Befehl. Dieses Parsen soll nicht sein -sensibel, außer der !
Argument, das dem Befehlsnamen folgen muss, ohne einzugreifen Charaktere und
wo es sonst mehrdeutig wäre. Zum Beispiel, zählen und Flagge Argumente müssen nicht sein
-getrennt weil "d22p" ist nicht zweideutig, aber Datei Argumente an die ex weiter
Befehl muss durch eins oder mehrere getrennt werden Zeichen. Irgendein im Kommando
Argumente für die abkürzen, ungekürzt, Karte und Karte aufheben Befehle können sein ‐V-
entkommen, in welchem ​​Fall die darf nicht als Argumenttrennzeichen verwendet werden. Irgendein
im Befehlsargument für jeden anderen Befehl kann sein -entkommen, in welchem ​​Fall
das darf nicht als Argumenttrennzeichen verwendet werden.

Innerhalb von Befehlsargumenten für die abkürzen, ungekürzt, Karte und Karte aufheben Befehle, irgendwelche
Charakter kann sein -V-entkommen. Alle diese Escape-Zeichen werden behandelt
wörtlich und hat keine besondere Bedeutung. Innerhalb von Befehlsargumenten für alle anderen ex
Befehle, die keine regulären Ausdrücke oder Ersatzzeichenfolgen sind, jedes Zeichen, das
ansonsten eine besondere bedeutung haben kann -entkam. Escape-Zeichen sind
wörtlich behandelt, ohne besondere Bedeutung als Shell-Erweiterungszeichen oder '!', '%' und
'#' Erweiterungscharaktere. Sehen Lang Ausdrücke in ex und Ersatz Streicher in ex für
Beschreibungen von Befehlsargumenten, die reguläre Ausdrücke oder Ersetzungszeichenfolgen sind.

Nicht- -entkam '%' Zeichen, die in erscheinen Datei Argumente für jeden ex Befehl soll
durch den aktuellen Pfadnamen ersetzt werden; nicht entkommen '#' Zeichen werden ersetzt durch die
alternativer Pfadname. Es ist ein Fehler, wenn '%' or '#' Zeichen erscheinen ohne Escapezeichen in an
-Argument und die entsprechenden Werte werden nicht festgelegt.

Nicht- -entkam '!' Zeichen in den Argumenten entweder zu den ex ! Befehl oder
der offene und visuelle Modus ! Befehl, oder in den Argumenten zum ex lesen Befehl, wo die
erste nicht- nach dem Befehlsname ist a '!' Zeichen, oder in den Argumenten zum
ex schreiben Befehl wobei dem Befehlsnamen ein oder mehrere folgen Charaktere und
die erste nicht- nach dem Befehlsname ist a '!' Zeichen, wird ersetzt durch
die Argumente zum letzten dieser drei Befehle, wie sie doch ohne Escape-Zeichen erschienen
'%', '#' und '!' Zeichen wurden ersetzt. Es ist ein Fehler, wenn '!' Zeichen
erscheinen in einem dieser Befehle ohne Escapezeichen und es gab keine vorherige Ausführung eines dieser Befehle
dieser Befehle.

Wenn ein Fehler beim Parsen oder Ausführen eines ex Befehl:

* Eine diesbezügliche Informationsnachricht muss verfasst werden. Ausführung der ex Befehl
soll anhalten, und der Cursor (z. B. die aktuelle Zeile und Spalte) soll nicht stehen
weiter modifiziert.

* Wenn die ex Befehl resultiert aus einer Kartenerweiterung, alle Charaktere von dieser Karte
Ausdehnung verworfen werden, sofern nicht anders von den Karte Befehl.

* Andernfalls, wenn die ex Befehl resultiert aus der Verarbeitung von an BEENDEN Umwelt
variabel, a .exrc Datei A :Quelle Befehl, a -c Option, oder a +Befehl angegeben zu an
ex bearbeiten, ex, weiter, oder visuell Befehl, keine weiteren Befehle aus der Quelle des
Befehle ausgeführt werden.

* Andernfalls, wenn die ex Befehl resultiert aus der Ausführung eines Puffers oder a globale or v
Befehl, keine weiteren Befehle durch die Ausführung des Puffers oder der globale or v
Befehl ausgeführt werden soll.

* Andernfalls, wenn die ex Befehl wurde nicht durch a terminated beendet , alle Zeichen bis
und einschließlich der nächsten nicht- -entkam werden verworfen.

zufuhr Bearbeitung in ex
Das folgende Symbol wird in diesem und den folgenden Abschnitten verwendet, um den Befehl anzugeben
Aktionen:

Wort In der POSIX-Sprachumgebung besteht ein Wort aus einer maximalen Folge von Buchstaben, Ziffern,
und Unterstriche, die an beiden Enden durch andere Zeichen als Buchstaben begrenzt sind,
Ziffern oder Unterstriche oder am Anfang oder Ende einer Zeile oder des Bearbeitungspuffers.

Beim Akzeptieren von Eingabezeichen vom Benutzer, in beiden ex Befehlsmodus oder ex Texteingabe
Modus ex soll die Eingabeverarbeitung im kanonischen Modus aktivieren, wie in den Systemschnittstellen definiert
Band von POSIX.1‐2008.

Wenn in ex Texteingabemodus:

1. Wenn die Anzahl Bearbeitungsoption ist gesetzt, ex fordert zur Eingabe mit der Zeilennummer auf, die
der Zeile zugewiesen würde, wenn sie eingegeben wird, im Format, das für die ex
Anzahl Befehl.

2. Wenn die automatischer Einzug Bearbeitungsoption ist gesetzt, ex soll zur Eingabe auffordern mit automatischer Einzug
Charaktere, wie von den . beschrieben automatischer Einzug Bearbeiten-Option. automatischer Einzug Zeichen sollen
Folgen Sie der Zeilennummer, falls vorhanden.

Wenn in ex Befehlsmodus:

1. Wenn die Eingabeaufforderung Edit-Option gesetzt ist, soll zur Eingabe aufgefordert werden, ein einzelnes zu verwenden ':'
Charakter; andernfalls erfolgt keine Aufforderung.

Die Eingabezeichen in den folgenden Abschnitten haben folgende Auswirkungen auf die
Eingabezeile.

Scrollen
Zusammenfassung:
eof

Siehe die Beschreibung der stty eof Zeichen stty.

Wenn in ex Befehlsmodus:

Besitzt das eof Zeichen ist das erste Zeichen, das in die Zeile eingegeben wird, die Zeile soll . sein
ausgewertet, als ob es zwei Zeichen enthält: a ‐D und a .

Ansonsten der eof Zeichen soll keine besondere Bedeutung haben.

Wenn in ex Texteingabemodus:

Folgt der Cursor einem automatischer Einzug Charakter, der automatischer Einzug Zeichen in der
Zeile soll so geändert werden, dass ein Teil des nächsten Texteingabezeichens
wird in der ersten Spalte in der Zeile nach der vorherigen angezeigt Schaltbreite Bearbeitungsoption
Spaltenbegrenzung, und der Benutzer soll erneut zur Eingabe für dieselbe Zeile aufgefordert werden.

Andernfalls, wenn der Cursor a . folgt '0', die folgt ein automatischer Einzug Charakter und
'0' war das vorherige Texteingabezeichen, das '0' und all automatischer Einzug
Zeichen in der Zeile werden verworfen und der Benutzer wird erneut aufgefordert,
Eingabe für dieselbe Zeile.

Andernfalls, wenn der Cursor a . folgt '^', die folgt ein automatischer Einzug Charakter und
'^' war das vorherige Texteingabezeichen, das '^' und all automatischer Einzug
Zeichen in der Zeile werden verworfen und der Benutzer wird erneut aufgefordert,
Eingabe für dieselbe Zeile. zusätzlich automatischer Einzug Pegel für die nächste Eingabezeile
soll aus derselben Zeile abgeleitet werden, aus der die automatischer Einzug Pegel für den Strom
Eingabezeile abgeleitet wurde.

Ansonsten, wenn es keine gibt automatischer Einzug oder Texteingabezeichen in der Zeile, die eof
Charakter verworfen werden.

Ansonsten der eof Zeichen soll keine besondere Bedeutung haben.


Zusammenfassung:

-J

Wenn in ex Befehlsmodus:

Veranlassen Sie, dass die Befehlszeile geparst wird; ‐J soll dem . zugeordnet werden
für diesen Zweck.

Wenn in ex Texteingabemodus:

Beendet die aktuelle Zeile. Wenn keine anderen Zeichen als vorhanden sind automatischer Einzug
Zeichen in der Zeile werden alle Zeichen in der Zeile verworfen.

Aufforderung zur Texteingabe in einer neuen Zeile nach der aktuellen Zeile. Wenn die automatischer Einzug bearbeiten
Option gesetzt ist, eine entsprechende Anzahl von automatischer Einzug Zeichen werden als a . hinzugefügt
Präfix der Zeile wie beschrieben durch die ex automatischer Einzug Bearbeiten-Option.


Zusammenfassung:


Erlaube die Eingabe eines nachfolgenden oder ‐J als wörtliches Zeichen, entfernen
jede besondere Bedeutung, die es für den Editor während des Texteingabemodus haben kann. Die
Zeichen soll beibehalten und ausgewertet werden, wenn die Befehlszeile geparst wird, oder beibehalten und
eingeschlossen, wenn der Eingabetext Teil des Bearbeitungspuffers wird.

‐V
Zusammenfassung:
-V

Erlaube die Eingabe jedes nachfolgenden Zeichens als wörtliches Zeichen und entferne alle Sonderzeichen
Dies bedeutet, dass es möglicherweise während des Texteingabemodus an den Editor gesendet werden muss. Die ‐V-Zeichen
verworfen werden, bevor die Befehlszeile geparst wird oder der Eingabetext Teil des
Puffer bearbeiten.

Wenn die ``literal next''-Funktionalität vom zugrunde liegenden System ausgeführt wird, ist dies
Implementierungsdefiniert, ob ein anderes Zeichen als -V führt diese Funktion aus.

‐W
Zusammenfassung:
-W

Entsorgen Sie die ‐W und das Wort davor in der Eingabezeile, einschließlich beliebiger
Zeichen nach dem Wort und vor dem -W. Wenn das ``Wort
Die Löschfunktion wird vom zugrunde liegenden System ausgeführt, sie ist implementierungsdefiniert
ob ein anderer Charakter als -W führt diese Funktion aus.

Befehl Beschreibungen in ex
Die folgenden Symbole werden in diesem Abschnitt verwendet, um Befehlsmodifikatoren darzustellen. Einige
diese Modifikatoren können weggelassen werden, in diesem Fall werden die angegebenen Standardwerte verwendet.

1adr Eine einzeilige Adresse, die in einem der in beschriebenen Formulare angegeben wird Adressierung in ex;
der Standardwert ist die aktuelle Zeile ('.'), Falls nicht anders angegeben.

Wenn die Zeilenadresse null ist, handelt es sich um einen Fehler, sofern nicht anders angegeben in
die folgenden Befehlsbeschreibungen.

Wenn der Editierpuffer leer ist und die Adresse mit einem anderen Befehl angegeben wird
als =, anhängen, einfügen, XNUMXh geöffnet, setzen, lesen, oder visuell, oder die Adresse ist nicht null,
es soll ein Fehler sein.

2adr Zwei Adressen, die einen inklusiven Zeilenbereich angeben. Wenn keine Adressen vorhanden sind
angegeben, die Vorgabe für 2adr soll nur die aktuelle Zeile sein (".,."), wenn nicht
anders in den folgenden Befehlsbeschreibungen angegeben. Wenn eine Adresse ist
spezifizierten, 2adr darf nur diese Zeile angeben, sofern in den
folgenden Befehlsbeschreibungen.

Es soll ein Fehler sein, wenn die erste Adresse größer als die zweite Adresse ist.

Wenn der Editierpuffer leer ist und die beiden Adressen mit einem Befehl angegeben werden
anders als die !, schreiben, wq, oder Schlag Befehle, oder eine der beiden Adressen ist nicht Null, es
soll ein Fehler sein.

zählen Eine positive Dezimalzahl. Wenn zählen angegeben ist, ist es gleichbedeutend mit
Angabe einer zusätzlichen Adresse zum Befehl, sofern nicht anders angegeben durch
die folgenden Befehlsbeschreibungen. Die zusätzliche Adresse muss gleich der
letzte für den Befehl angegebene Adresse (entweder explizit oder standardmäßig) plus
zählen−1.

Wenn dies zu einer Adresse führen würde, die größer ist als die letzte Zeile der Bearbeitung
Puffer, wird er so korrigiert, dass er der letzten Zeile des Editierpuffers entspricht.

Fahnen Einer oder mehrere der Charaktere '+', '-', '#', 'P', oder 'l' (Ell). Die Flagge
Charaktere können sein -getrennt und in beliebiger Reihenfolge oder Kombination. Die
Zeichen '#', 'P' und 'l' soll dazu führen, dass Zeilen im Format geschrieben werden
angegeben durch die drucken Befehl mit dem angegebenen Fahnen.

Die zu schreibenden Zeilen lauten wie folgt:

1. Alle Zeilen des Editierpuffers, die während der Ausführung des ex &, ~, Liste,
Anzahl, XNUMXh geöffnet, drucken, s, visuell und z Befehle müssen wie angegeben geschrieben werden
by Fahnen.

2. Nach Abschluss eines ex Befehl mit einem Flag als Argument, der
aktuelle Zeile soll wie durch . angegeben geschrieben werden Fahnen, es sei denn, die aktuelle Zeile
war die letzte Zeile, die von dem Befehl geschrieben wurde.

Die Charaktere '+' und '-' bewirken den Wert der aktuellen Zeile nach dem
Ausführung der ex Befehl um die Offset-Adresse anzupassen, wie in beschrieben
Adressierung in ex. Diese Anpassung soll erfolgen, bevor die aktuelle Zeile
geschrieben wie in 2. oben beschrieben.

Die Vorgabe für Fahnen soll keiner sein.

puffern Einer von mehreren benannten Bereichen zum Halten von Text. Die genannten Puffer sind angegeben
durch die alphanumerischen Zeichen des POSIX-Gebietsschemas. Es soll auch einen geben
``unbenannter'' Puffer. Wenn kein Puffer für Editorbefehle angegeben ist, die a . verwenden
Puffer wird der unbenannte Puffer verwendet. Befehle, die Text in Puffern speichern
speichert den Text so, wie er vor dem Wirksamwerden des Befehls war, und speichert
Text, der früher in der Datei vorkommt, bevor Text, der später in der Datei vorkommt,
unabhängig davon, wie der Textbereich angegeben wurde. Befehle, die Text speichern in
Puffer speichern den Text im unbenannten Puffer sowie alle angegebenen
Puffer.

In ex Befehle werden Puffernamen als Name selbst angegeben. Im offenen oder
Befehle im visuellen Modus dem Namen wird ein doppeltes Anführungszeichen ('"') Zeichen.

Wenn der angegebene Puffername ein Großbuchstabe ist und der Pufferinhalt
geändert werden sollen, wird der Puffer angehängt und nicht
überschrieben. Wenn der Puffer nicht geändert wird, Angabe des Puffernamens in
Klein- und Großbuchstaben sollen identische Ergebnisse haben.

Es muss auch Puffer geben, die mit den Nummern 1 bis 9 benannt sind. In offenen und visuellen
Modus, wenn ein Textbereich, der Zeichen aus mehr als einer einzigen Zeile enthält,
von der geändert werden vi c or d Befehle, der Bewegungscharakter, der mit verbunden ist
c or d Befehle gibt an, dass der Puffertext im Zeilenmodus sein soll, oder die
Befehle %, `, /, ?, (, ), N, n, {, oder } werden verwendet, um einen Textbereich für . zu definieren
c or d Befehlen soll der Inhalt der Puffer 1 bis 8 in die
Puffer, der mit dem nächsthöheren numerisch größeren Wert benannt ist, der Inhalt von Puffer 9
werden verworfen und der Textbereich wird in Puffer 1 kopiert
soll zusätzlich zum Kopieren des Textes in einen benutzerdefinierten Puffer oder unbenannt sein
Puffer oder beides. Numerische Puffer können als Quellpuffer für open . angegeben werden
und visuelle Modusbefehle; jedoch einen numerischen Puffer als schreiben angeben
Ziel eines Befehls im offenen oder visuellen Modus muss nicht spezifizierte Ergebnisse haben.

Der Text jedes Puffers muss die Eigenschaft haben, dass er entweder in einer Zeile steht oder
Charaktermodus. Das Anhängen von Text an einen nicht leeren Puffer muss den Modus entsprechend einstellen
das Merkmal des angehängten Textes. Das Anhängen von Text an einen Puffer soll
verursachen, dass mindestens eine zusätzliche Zeile im Puffer erstellt wird. Alle Texte
in Puffern gespeichert von ex Befehle müssen im Zeilenmodus sein. Die ex Befehle, die
Puffer als Textquelle verwenden Legen Sie individuell fest, wie Puffer verschiedener
Modi behandelt werden. Jeder Befehl im offenen oder visuellen Modus, der Puffer für alle verwendet
Zweck spezifiziert individuell den Modus des im Puffer gespeicherten Textes und
wie Puffer unterschiedlicher Modi gehandhabt werden.

Datei Befehlstext, der verwendet wird, um einen Pfadnamen abzuleiten. Der Standardwert ist der aktuelle
Pfadname, wie zuvor definiert, in diesem Fall, wenn noch kein aktueller Pfadname vorhanden ist
festgestellt wurde, handelt es sich um einen Fehler, es sei denn, dies ist ausdrücklich in der
die folgenden einzelnen Befehlsbeschreibungen. Wenn der Befehlstext irgendwelche enthält
der Charaktere '~', '{', '[', '*', '?', '$', '"', Backquote, einfaches Anführungszeichen,
und , es soll dem Prozess der ``Schalenexpansion'' unterzogen werden,
wie unten beschrieben; wenn sich mehr als ein einzelner Pfadname ergibt und der Befehl
erwartet nur eins, soll es ein Fehler sein.

Der Prozess der Shell-Erweiterungen im Editor soll wie folgt erfolgen. Die ex
Dienstprogramm soll zwei Argumente an das Programm übergeben, das von der Shell-Edit-Option benannt wird;
die erste soll sein -c, und die zweite soll die Zeichenfolge sein "Echo" und der Befehl
Text als einzelnes Argument. Die Standardausgabe und der Standardfehler davon
Befehl soll den Befehlstext ersetzen.

! Ein Zeichen, das an den Befehlsnamen angehängt werden kann, um seine Funktionsweise zu ändern, wie
ausführlich in den einzelnen Befehlsbeschreibungen. Mit Ausnahme der ex
lesen, schreiben und ! Befehle, die '!' Charakter soll nur als Modifikator wirken, wenn
es gibt keine Zeichen zwischen ihm und dem Befehlsnamen.

erinnerte sich search Richtung
Das vi Befehle N und n Beginnen Sie mit der Suche in Vorwärts- oder Rückwärtsrichtung in
der Editierpuffer basiert auf einer gemerkten Suchrichtung, die anfangs
unset, und wird gesetzt von der ex globale , v, s und Etikett Befehle und die vi / und ?
Befehle.

Abkürzen
Zusammenfassung:
ab[abkürzen][lhs rhs]

If lhs und rhs nicht angegeben sind, schreiben Sie die aktuelle Abkürzungsliste und tun Sie nichts
more.

Implementierungen können den in akzeptierten Zeichensatz einschränken lhs or rhs, außer das
druckbare Zeichen und Zeichen dürfen nicht eingeschränkt werden. Zusätzlich
Beschränkungen sind umsetzungsdefiniert.

Sowohl lhs und rhs, jedes Zeichen kann mit a . maskiert werden ‐V, in welchem ​​Fall die
Zeichen dürfen nicht zur Abgrenzung verwendet werden lhs für rhs, und die Flucht -V soll sein
verworfen.

Im offenen und visuellen Texteingabemodus, wenn ein Nicht-Wort oder Zeichen, das nicht mit Escapezeichen versehen ist
durch eine ‐V-Zeichen wird nach einem Wortzeichen eingegeben, es ist zu prüfen auf a
Satz von übereinstimmenden Zeichen lhs, in der Texteingabe, die während dieses Befehls eingegeben wird. Wenn es ist
gefunden, ist die Wirkung so, als ob rhs wurde eingetragen statt lhs.

Der zu prüfende Zeichensatz ist wie folgt definiert:

1. Wenn keine Zeichen vor dem Wort und dem Nicht-Wort eingefügt wurden oder Zeichen
der die Prüfung ausgelöst hat, besteht der Zeichensatz aus dem Wort Zeichen.

2. Wenn das Zeichen vor dem Wort und Nicht-Wort eingefügt wird oder Charaktere, die
die Prüfung ausgelöst wurde, ist ein Wortzeichen, der Zeichensatz besteht aus den
Zeichen, die unmittelbar vor den auslösenden Zeichen eingefügt werden, die Wort sind
Zeichen plus das auslösende Wortzeichen.

3. Wenn das Zeichen vor dem Wort und Nicht-Wort eingefügt wird oder Charaktere, die
Ausgelöst die Prüfung ist kein Wortzeichen, der Zeichensatz soll bestehen aus
die Zeichen, die vor den auslösenden Zeichen eingefügt wurden, die keines davon sind
Zeichen noch Wortzeichen, plus das auslösende Wortzeichen.

Es ist nicht spezifiziert, ob die lhs Argument eingegeben für die ex abkürzen und ungekürzt
Befehle werden auf diese Weise ersetzt. Unabhängig davon, ob der Austausch erfolgt oder nicht,
die Wirkung des Befehls ist so, als ob die Ersetzung nicht erfolgt wäre.

Strom Linie: Unverändert.

Strom Überblick: Unverändert.

Anhängen
Zusammenfassung:
[1adr] a[anhängen][!]

Enter ex Texteingabemodus; der Eingabetext soll nach der angegebenen Zeile stehen. Wenn Linie
Null angegeben ist, soll der Text am Anfang des Editierpuffers platziert werden.

Dieser Befehl wird beeinflusst durch die Anzahl und automatischer Einzug Bearbeitungsoptionen; nach dem
Befehlsname mit '!' wird dazu führen, dass automatischer Einzug Optionseinstellung bearbeiten, für die umgeschaltet werden soll
nur die Dauer dieses Befehls.

Strom Linie: Auf die letzte Eingabezeile setzen; wenn keine Zeilen eingegeben wurden, auf den angegebenen setzen
Zeile, oder in die erste Zeile des Editierpuffers, wenn eine Nullzeile angegeben wurde, oder Null, wenn
der Editierpuffer ist leer.

Strom Überblick: Auf Nicht- .

Argumente
Zusammenfassung:
äh[gs]

Schreiben Sie die aktuelle Argumentliste mit dem aktuellen Argumentlisteneintrag, falls vorhanden, zwischen '['
und ']' Zeichen.

Strom Linie: Unverändert.

Strom Überblick: Unverändert.

Change
Zusammenfassung:
[2adr] c[Hängen][!][zählen]

Enter ex Texteingabemodus; der Eingabetext soll die angegebenen Zeilen ersetzen. Das angegebene
Zeilen sollen in den unbenannten Puffer kopiert werden, der zu einem Zeilenmoduspuffer wird.

Dieser Befehl wird beeinflusst durch die Anzahl und automatischer Einzug Bearbeitungsoptionen; nach dem
Befehlsname mit '!' wird dazu führen, dass automatischer Einzug Optionseinstellung bearbeiten, für die umgeschaltet werden soll
nur die Dauer dieses Befehls.

Strom Linie: Auf die letzte Eingabezeile setzen; wenn keine Zeilen eingegeben wurden, auf die Zeile davor setzen
die erste Adresse, oder in die erste Zeile des Editierpuffers, wenn keine Zeilen davor stehen
die erste Adresse, oder auf Null, wenn der Editierpuffer leer ist.

Strom Überblick: Auf Nicht- .

Change Verzeichnis
Zusammenfassung:
chd[ir][!][Verzeichnis]
cd[!][Verzeichnis]

Ändern Sie das aktuelle Arbeitsverzeichnis in Verzeichnis.

Wenn nein Verzeichnis Argument angegeben ist, und die HOME Umgebungsvariable auf einen Nicht-
null und nicht leerer Wert, Verzeichnis wird standardmäßig der Wert verwendet, der in der HOME
Umgebungsvariable. Wenn die HOME Umgebungsvariable ist leer oder undefiniert, die
Standardwert von Verzeichnis ist implementierungsspezifisch.

Wenn nein '!' wird an den Befehlsnamen angehängt und der Editierpuffer wurde seitdem geändert
der letzte vollständige Schreibvorgang und der aktuelle Pfadname beginnt nicht mit a '/', Es soll sein
ein Fehler.

Strom Linie: Unverändert.

Strom Überblick: Unverändert.

Kopieren
Zusammenfassung:
[2adr] co[py] 1adr [Fahnen]
[2adr] t 1adr [Fahnen]

Kopieren Sie die angegebenen Zeilen nach der angegebenen Zielzeile; Zeile null gibt an, dass
die Zeilen sollen am Anfang des Editierpuffers stehen.

Strom Linie: Auf die letzte kopierte Zeile setzen.

Strom Überblick: Auf Nicht- .

Löschen
Zusammenfassung:
[2adr] d[löschen][puffern][zählen][Fahnen]

Löschen Sie die angegebenen Zeilen in einen Puffer (standardmäßig den unbenannten Puffer), der
zu einem Zeilenmoduspuffer werden.

Flags können unmittelbar auf den Befehlsnamen folgen; sehen Befehl Line Parsing in ex.

Strom Linie: Auf die Zeile setzen, die den gelöschten Zeilen folgt, oder auf die letzte Zeile in der Bearbeitung
Puffer, wenn diese Zeile das Ende des Bearbeitungspuffers überschritten hat, oder auf Null, wenn der Bearbeitungspuffer ist
leer.

Strom Überblick: Auf Nicht- .

Bearbeiten
Zusammenfassung:
e[dies][!][+Befehl][Datei]
ex[!][+Befehl][Datei]

Wenn nein '!' wird an den Befehlsnamen angehängt und der Editierpuffer wurde seitdem geändert
der letzte vollständige Schreibvorgang ist ein Fehler.

If Datei angegeben ist, ersetzen Sie den aktuellen Inhalt des Editierpuffers durch den aktuellen
Inhalt von Datei, und setzen Sie den aktuellen Pfadnamen auf Datei. Wenn Datei nicht angegeben, ersetzen
den aktuellen Inhalt des Editierpuffers mit dem aktuellen Inhalt der Datei mit dem Namen
aktueller Pfadname. Wenn aus irgendeinem Grund nicht auf den aktuellen Inhalt der Datei zugegriffen werden kann,
der Editierpuffer soll leer sein.

Das +Befehl Option soll sein -getrennt; Zeichen innerhalb der +Befehl kann
entkommen, indem man ihnen ein a . voranstellt Charakter. Die +Befehl sind
interpretiert als ein ex Befehl unmittelbar nachdem der Inhalt des Editierpuffers gelöscht wurde
ersetzt und die aktuelle Zeile und Spalte wurden eingestellt.

Wenn der Bearbeitungspuffer leer ist:

Strom Linie: Auf 0 setzen.

Strom Überblick: Auf 1 setzen.

Andernfalls, wenn ausgeführt, während in ex Befehlsmodus oder wenn die +Befehl Argument ist angegeben:

Strom Linie: Auf die letzte Zeile des Bearbeitungspuffers setzen.

Strom Überblick: Auf Nicht- .

Ansonsten wenn Datei wird weggelassen oder ergibt den aktuellen Pfadnamen:

Strom Linie: Auf die erste Zeile des Bearbeitungspuffers setzen.

Strom Überblick: Auf Nicht- .

Ansonsten wenn Datei ist die gleiche wie die zuletzt bearbeitete Datei, die Zeile und Spalte sollen gesetzt werden
wie folgt; Wenn die Datei zuvor bearbeitet wurde, können Zeile und Spalte wie folgt eingestellt werden:

Strom Linie: Auf den letzten Wert setzen, der bei der letzten Bearbeitung dieser Datei gespeichert wurde. Ist dieser Wert
keine gültige Zeile im neuen Editierpuffer, auf die erste Zeile des Editierpuffers setzen.

Strom Überblick: Wenn die aktuelle Zeile auf den letzten Wert gesetzt wurde, der bei der letzten Datei gespeichert war
bearbeitet, auf den letzten Wert gesetzt, der bei der letzten Bearbeitung der Datei gespeichert wurde. Andernfalls, oder wenn die
letzter Wert ist keine gültige Spalte im neuen Bearbeitungspuffer, auf Nicht- .

Andernfalls:

Strom Linie: Auf die erste Zeile des Bearbeitungspuffers setzen.

Strom Überblick: Auf Nicht- .

Reichen Sie das
Zusammenfassung:
f[s][Datei]

Sollten Sie jetzt aufgefordert werden, ein Datei Argument angegeben ist, wird der alternative Pfadname auf den aktuellen gesetzt
Pfadname, und der aktuelle Pfadname soll auf gesetzt werden Datei.

Schreiben Sie eine Informationsnachricht. Wenn die Datei einen aktuellen Pfadnamen hat, soll dieser eingeschlossen werden
in dieser Nachricht; andernfalls soll die Nachricht anzeigen, dass kein aktueller Pfadname vorhanden ist.
Enthält der Editierpuffer Zeilen, werden die aktuelle Zeilennummer und die Zeilenanzahl im
Bearbeitungspuffer soll in diese Nachricht eingefügt werden; andernfalls muss die Nachricht angeben, dass
der Editierpuffer ist leer. Wenn der Bearbeitungspuffer seit dem letzten Abschluss geändert wurde
schreiben, diese Tatsache soll in diese Nachricht aufgenommen werden. Wenn die schreibgeschützt Bearbeitungsoption ist gesetzt,
diese Tatsache soll in diese Nachricht aufgenommen werden. Die Nachricht kann andere nicht näher bezeichnete enthalten
Informationen.

Strom Linie: Unverändert.

Strom Überblick: Unverändert.

Global
Zusammenfassung:
[2adr] g[lobal] /Anleitungen/ [Befehle]
[2adr] v /Anleitungen/ [Befehle]

Das optionale '!' Zeichen nach dem globale Befehl muss der gleiche sein wie die Ausführung des v
Befehl.

If Anleitungen ist leer (zum Beispiel "//") oder nicht angegeben, der letzte verwendete reguläre Ausdruck
im Editor-Befehl soll als verwendet werden Anleitungendem „Vermischten Geschmack“. Seine Anleitungen kann abgegrenzt werden durch
Zeichen (in der Synopsis gezeigt) sowie alle nicht-alphanumerischen oder nicht-
außer , , , oder doppelte Anführungszeichen.

Wenn keine Zeilen angegeben werden, beziehen sich die Zeilen standardmäßig auf die gesamte Datei.

Das globale und v Befehle sind logisch Operationen mit zwei Durchläufen. Markieren Sie zuerst die Zeilen innerhalb
die angegebenen Zeilen, für die die Zeile ohne Abschluss Streichhölzer
(globale ) oder stimmt nicht überein (v or weltweit!) das angegebene Muster. Zweitens, führen Sie die ex
Befehle gegeben von Befehle, mit der aktuellen Zeile ('.') auf jede markierte Zeile setzen. Wenn ein
während dieses Vorgangs ein Fehler auftritt oder der Inhalt des Editierpuffers ersetzt wird (für
zum Beispiel durch die ex :bearbeiten Befehl) soll eine Fehlermeldung geschrieben werden und keine Befehle mehr
die sich aus der Ausführung dieses Befehls ergeben, werden verarbeitet.

Mehrere ex Befehle können durch Eingabe mehrerer Befehle in einer einzigen Zeile mit . angegeben werden
ein um sie zu begrenzen, oder eine pro Zeile, indem Sie sie jeweils mit Escapezeichen versehen mit einem
.

Wenn keine Befehle angegeben sind:

1. Wenn in ex Befehlsmodus, es soll so sein, als ob die drucken Befehl angegeben wurden.

2. Andernfalls wird kein Befehl ausgeführt.

NB: anhängen, Übernehmen und einfügen Befehle, der Eingabetext soll als Teil von
der Befehl und das Beenden kann weggelassen werden, wenn der Befehl die Liste der beendet
Befehle. Das XNUMXh geöffnet und visuell Befehle können als einer der Befehle angegeben werden, in denen
In diesem Fall soll jede markierte Zeile den Editor veranlassen, in den offenen oder visuellen Modus zu wechseln. Wenn geöffnet oder
Der visuelle Modus wird mit der Taste verlassen vi Q Befehl, die aktuelle Zeile soll auf die nächste gesetzt werden
markierte Linie und erneuter Eintritt in den offenen oder visuellen Modus, bis die Liste der markierten Linien
erschöpft.

Das globale , v und rückgängig machen Befehle können nicht verwendet werden in Befehle. Markierte Zeilen können gelöscht werden
durch Befehle, die für Zeilen ausgeführt werden, die früher in der Datei als die markierten Zeilen vorkommen. In
In diesem Fall sollen keine Befehle für die gelöschten Zeilen ausgeführt werden.

Wenn die gespeicherte Suchrichtung nicht eingestellt ist, wird die globale und v Befehle sollen es setzen auf
nach vorne.

Das autoprint und automatischer Einzug Bearbeitungsoptionen sind für die Dauer des g or
v Befehl.

Strom Linie: Wenn keine Befehle ausgeführt werden, auf die letzte markierte Zeile setzen. Ansonsten wie
angegeben für die ausgeführten ex Befehle.

Strom Überblick: Wenn keine Befehle ausgeführt werden, auf Nicht- ; ansonsten wie angegeben
für den Einzelnen ex Befehle.

Insert
Zusammenfassung:
[1adr] i[nsert][!]

Enter ex Texteingabemodus; der Eingabetext soll vor der angegebenen Zeile stehen. Wenn die
line null oder 1 ist, soll der Text am Anfang des Editierpuffers platziert werden.

Dieser Befehl wird beeinflusst durch die Anzahl und automatischer Einzug Bearbeitungsoptionen; nach dem
Befehlsname mit '!' wird dazu führen, dass automatischer Einzug Optionseinstellung bearbeiten, für die umgeschaltet werden soll
nur die Dauer dieses Befehls.

Strom Linie: Auf die letzte Eingabezeile setzen; wenn keine Zeilen eingegeben wurden, auf die Zeile davor setzen
die angegebene Zeile, oder in die erste Zeile des Editierpuffers, wenn keine Zeilen vorhanden sind
vor der angegebenen Zeile oder Null, wenn der Bearbeitungspuffer leer ist.

Strom Überblick: Auf Nicht- .

Registrieren
Zusammenfassung:
[2adr] j[oin][!][zählen][Fahnen]

If zählen angegeben:

Wenn keine Adresse angegeben wurde, wird die join Befehl soll sich so verhalten, als ob 2adr waren die
aktuelle Zeile und aktuelle Zeile plus zählen (.,. + zählen).

Wenn eine Adresse angegeben wurde, wird die join Befehl soll sich so verhalten, als ob 2adr waren die
angegebene Adresse und die angegebene Adresse plus zählen (Adr,Adr + zählen).

Wenn zwei Adressen angegeben wurden, wird die join Befehl soll sich verhalten, als ob ein zusätzlicher
Adresse, gleich der letzten Adresse plus zählen -1 (Adresse1,Adresse2,Adresse2 + zählen −1),
angegeben wurde.

Wenn dies zu einer zweiten Adresse führen würde, die größer ist als die letzte Zeile der Bearbeitung
Puffer, so wird er gleich der letzten Zeile des Editierpuffers korrigiert.

Wenn nein zählen angegeben:

Wenn keine Adresse angegeben wurde, wird die join Befehl soll sich so verhalten, als ob 2adr waren die
aktuelle Zeile und die nächste Zeile (.,. +1).

Wenn eine Adresse angegeben wurde, wird die join Befehl soll sich so verhalten, als ob 2adr waren die
angegebene Adresse und die nächste Zeile (Adr,Adr + 1).

Füge den Text aus den angegebenen Zeilen zu einer einzigen Zeile zusammen, die ersetzt werden soll
die angegebenen Zeilen.

Sollten Sie jetzt aufgefordert werden, ein '!' Zeichen wird an den Befehlsnamen angehängt, das join soll ohne sein
Änderung einer beliebigen Zeile, unabhängig vom aktuellen Gebietsschema.

Andernfalls setzen Sie im POSIX-Gebietsschema die aktuelle Zeile auf die erste der angegebenen Zeilen.
und gehen Sie dann für jede weitere Zeile wie folgt vor:

1. Führende verwerfen Zeichen aus der zu verbindenden Zeile.

2. Wenn die zu verbindende Zeile jetzt leer ist, löschen Sie sie und überspringen Sie die Schritte 3 bis 5.

3. Wenn die aktuelle Zeile mit a . endet , oder das erste Zeichen der zu verbindenden Zeile
ist eine ')' Zeichen, verbinden Sie die Zeilen ohne weitere Änderungen.

4. Wenn das letzte Zeichen der aktuellen Zeile ein a . ist '.', verbinde die Zeilen mit zwei
Zeichen dazwischen.

5. Andernfalls verbinden Sie die Zeilen mit einer einzigen zwischen ihnen.

Strom Linie: Auf die erste angegebene Zeile setzen.

Strom Überblick: Auf Nicht- .

Liste
Zusammenfassung:
[2adr] l[IST][zählen][Fahnen]

Dieser Befehl muss äquivalent zu dem ex Befehl:

[2adr] p[rint][zählen] l[Fahnen]

See Print.

Karte
Zusammenfassung:
Karte[!][lhs rhs]

If lhs und rhs sind nicht angegeben:

1. Wenn '!' angegeben ist, schreiben Sie die aktuelle Liste der Texteingabemodus-Maps.

2. Andernfalls schreiben Sie die aktuelle Liste der Befehlsmoduszuordnungen.

3. Nichts mehr tun.

Implementierungen können den in akzeptierten Zeichensatz einschränken lhs or rhs, außer das
druckbare Zeichen und Zeichen dürfen nicht eingeschränkt werden. Zusätzlich
Beschränkungen sind umsetzungsdefiniert. Sowohl lhs und rhs, jedes Zeichen kann sein
entkam mit a ‐V, in diesem Fall darf das Zeichen nicht zum Trennen verwendet werden lhs
für rhs, und die Flucht -V wird verworfen.

Wenn der Charakter '!' wird angehängt Karte Befehlsname, die Zuordnung soll wirksam sein
im offenen oder visuellen Texteingabemodus statt XNUMXh geöffnet or visuell Befehlsmodus. Dies erlaubt
lhs zwei verschiedene haben Karte Definitionen gleichzeitig: eine für den Befehlsmodus und eine
für Texteingabemodus.

Für Befehlsmodus-Zuordnungen:

Wenn das lhs wird als beliebiger Teil von a . eingegeben vi Befehl im offenen oder visuellen Modus (aber nicht
als Teil der Argumente für den Befehl) ist die Aktion so, als ob die
entsprechenden rhs eingegeben worden war.

Wenn ein beliebiges Zeichen im Befehl außer dem ersten mit a . maskiert wird
-V-Zeichen, dieses Zeichen darf nicht Teil einer Übereinstimmung mit einem . sein lhs.

Es ist nicht spezifiziert, ob Implementierungen unterstützen sollen Karte Befehle, bei denen die lhs
mehr als ein einzelnes Zeichen lang ist, wobei das erste Zeichen des lhs is
druckbar.

If lhs enthält mehr als ein Zeichen und das erste Zeichen ist '#', Gefolgt von
eine Ziffernfolge, die einer nummerierten Funktionstaste entspricht, dann, wenn dies
Funktionstaste eingegeben wird, soll sie zugeordnet werden rhs. Andere Zeichen als Ziffern
folgenden a '#' Zeichen stellen auch die durch die Zeichen benannte Funktionstaste dar
der lhs nach dem '#' und kann zugeordnet werden auf rhs. Es ist nicht spezifiziert, wie
Funktionstasten benannt sind oder welche Funktionstasten unterstützt werden.

Für Texteingabemodus-Zuordnungen:

Wenn das lhs wird als ein beliebiger Textteil eingegeben, der in die offene oder visuelle Texteingabe eingegeben wird
Modi, die Aktion soll so sein, als ob die entsprechenden rhs eingegeben worden war.

Wenn ein Zeichen im Eingabetext mit a . maskiert wird ‐V-Zeichen, das
Charakter darf nicht Teil einer Übereinstimmung mit einem sein lhs.

Es ist nicht spezifiziert, ob die lhs Text für nachfolgendes eingegeben Karte or Karte aufheben Befehle
wird ersetzt durch die rhs Text zum Zwecke der Bildschirmdarstellung; Egal ob
ob die Anzeige so erscheint, als ob die entsprechende rhs Text wurde eingegeben,
die Wirkung des Befehls soll so sein, als ob die lhs Text wurde eingegeben.

Wenn nur ein Teil der lhs eingegeben wird, ist nicht festgelegt, wie lange der Editor warten wird
zusätzliche, möglicherweise übereinstimmende Zeichen, bevor die bereits eingegebenen Zeichen als . behandelt werden
passt nicht zu den lhs.

Das rhs Zeichen unterliegen selbst einer Neuzuordnung, sofern nicht anders angegeben durch
remap Bearbeitungsoption, außer wenn die Zeichen in lhs treten als Präfixzeichen in auf
rhs, werden diese Zeichen nicht neu zugeordnet.

Bei Blockmodus-Terminals muss die Zuordnung nicht sofort erfolgen (z. B. kann es vorkommen
nachdem das Terminal eine Zeichengruppe an das System übermittelt hat), aber es soll erreichen
die gleichen Ergebnisse, als ob es sofort aufgetreten wäre.

Strom Linie: Unverändert.

Strom Überblick: Unverändert.

Tobias
Zusammenfassung:
[1adr] ma[rk] Charakter
[1adr] k Charakter

Implementierungen sollen unterstützen Charakter Werte eines einzelnen Kleinbuchstabens des POSIX
Gebietsschema und die Anführungszeichen und einfache Anführungszeichen; Unterstützung anderer Charaktere ist
Implementierung definiert.

Bei Ausführung der vi m Befehl, setzen Sie die angegebene Marke auf die aktuelle Zeile und 1-basiert
nummeriertes Zeichen, auf das die aktuelle Spalte verweist, falls vorhanden; ansonsten Spaltenposition 1.

Setzen Sie andernfalls die angegebene Marke auf die angegebene Zeile und die 1-basierte Nummerierung zuerst
nicht- nicht- in der Zeile, falls vorhanden; andernfalls die letzten nicht- in dem
Linie, falls vorhanden; ansonsten Spaltenposition 1.

Die Markierung bleibt mit der Linie verbunden, bis die Markierung zurückgesetzt wird oder die Linie
gelöscht. Wenn eine gelöschte Zeile durch eine nachfolgende wiederhergestellt wird rückgängig machen Befehl, alle Markierungen zuvor
der Linie zugeordnete, die nicht zurückgesetzt wurden, werden ebenfalls wiederhergestellt. Jegliche Verwendung von
eine Markierung, die keiner aktuellen Zeile im Editierpuffer zugeordnet ist, ist ein Fehler.

Die Marken ` und ' wird wie zuvor beschrieben gesetzt, unmittelbar vor den folgenden
Ereignisse treten im Editor auf:

1. Die Verwendung von '$' als ex Adresse

2. Die Verwendung einer positiven Dezimalzahl als ein ex Adresse

3. Die Verwendung eines Suchbefehls als ex Adresse

4. Die Verwendung einer Markenreferenz als ex Adresse

5. Die Verwendung der folgenden Befehle im offenen und visuellen Modus: ‐], %, (, ), [, ], {,
}

6. Die Verwendung der folgenden Befehle im offenen und visuellen Modus: ', G, H, L, M, z wenn die
aktuelle Zeile ändert sich als Ergebnis des Befehls

7. Die Verwendung der Befehle des offenen und visuellen Modus: /, ?, N, `, n wenn die aktuelle Zeile oder
Spalte ändert sich als Ergebnis des Befehls

8. Die Verwendung der ex Modusbefehle: z, rückgängig machen, globale , v

Für die Regeln 1., 2., 3. und 4. gilt die ` und ' Noten dürfen nicht gesetzt werden, wenn die ex Befehl ist
geparst, wie in Regel 6.a angegeben. in Befehl Line Parsing in ex.

Für die Regeln 5., 6. und 7. gilt die ` und ' Markierungen dürfen nicht gesetzt werden, wenn die Befehle verwendet werden als
Bewegungsbefehle im offenen und visuellen Modus.

Für die Regeln 1., 2., 3., 4., 5., 6., 7. und 8. gilt die ` und ' Noten dürfen nicht gesetzt werden, wenn die
Befehl schlägt fehl.

Das ` und ' Markierungen werden wie zuvor beschrieben gesetzt, jedes Mal, wenn der Inhalt der Bearbeitung
Puffer werden ersetzt (einschließlich der Bearbeitung des anfänglichen Puffers), wenn offen oder visuell
Modus, oder wenn in ex Modus und der Bearbeitungspuffer ist nicht leer, bevor Befehle oder Bewegungen ausgeführt werden
(einschließlich Befehle oder Bewegungen, die von der -c or −t Optionen oder die +Befehl
Argument) werden im Editierpuffer ausgeführt. Im offenen oder visuellen Modus müssen die Markierungen
so einstellen, als ob die ausgeführt würde vi m Befehl; andernfalls, als ob die Ausführung der ex Kennzeichen Befehl.

Beim Wechsel von ex Modus zum Öffnen oder visuellen Modus, wenn die ` und ' marken sind noch nicht
setzen, die ` und ' Die Markierungen werden wie zuvor beschrieben gesetzt.

Strom Linie: Unverändert.

Strom Überblick: Unverändert.

Bewegung
Zusammenfassung:
[2adr] m[ove] 1adr [Fahnen]

Verschieben Sie die angegebenen Zeilen hinter die angegebene Zielzeile. Ein Ziel der Linie Null
gibt an, dass die Zeilen am Anfang des Editierpuffers platziert werden sollen. Es soll sein
ein Fehler, wenn die Ziellinie innerhalb des Bereichs der zu verschiebenden Linien liegt.

Strom Linie: Auf die letzte der verschobenen Zeilen setzen.

Strom Überblick: Auf Nicht- .

Weiter
Zusammenfassung:
n[ext][!][+Befehl][Datei ...]

Wenn nein '!' wird an den Befehlsnamen angehängt und der Editierpuffer wurde seitdem geändert
der letzte vollständige Schreibvorgang ist ein Fehler, es sei denn, die Datei wurde erfolgreich geschrieben als
angegeben durch die automatisch schreiben .

Wenn eine oder mehrere Dateien angegeben sind:

1. Setzen Sie die Argumentliste auf die angegebenen Dateinamen.

2. Legen Sie die aktuelle Argumentlistenreferenz als ersten Eintrag in der Argumentliste fest.

3. Setzen Sie den aktuellen Pfadnamen auf den ersten angegebenen Dateinamen.

Andernfalls:

1. Es soll ein Fehler sein, wenn in der Argumentliste nach dem keine Dateinamen mehr vorhanden sind
aktuell referenzierter Dateiname.

2. Setzen Sie den aktuellen Pfadnamen und die aktuelle Argumentlistenreferenz auf den Dateinamen nach
der Dateiname, auf den derzeit in der Argumentliste verwiesen wird.

Ersetzen Sie den Inhalt des Editierpuffers durch den Inhalt der Datei mit dem Namen current
Pfadname. Wenn aus irgendeinem Grund nicht auf den Inhalt der Datei zugegriffen werden kann, wird der Bearbeitungspuffer
soll leer sein.

Dieser Befehl wird beeinflusst durch die automatisch schreiben und schreiben Optionen bearbeiten.

Das +Befehl Option soll sein -getrennt; Zeichen können maskiert werden durch
vor ihnen mit a Charakter. Die +Befehl ist zu interpretieren als ein ex
Befehl unmittelbar nachdem der Inhalt des Editierpuffers ersetzt wurde und die
aktuelle Zeile und Spalte wurden eingestellt.

Strom Linie: Einstellen wie für die beschrieben bearbeiten Befehl.

Strom Überblick: Einstellen wie für die beschrieben bearbeiten Befehl.

Nummer
Zusammenfassung:
[2adr] nu[mber][zählen][Fahnen]
[2adr] #[zählen][Fahnen]

Diese Befehle müssen äquivalent zu den ex Befehl:

[2adr] p[rint][zählen] #[Fahnen]

See Print.

Offen
Zusammenfassung:
[1adr] o[Stift] /Anleitungen/ [Fahnen]

Dieser Befehl muss auf Blockmodus-Terminals oder Terminals mit unzureichendem . nicht unterstützt werden
Fähigkeiten. Wenn Standardeingabe, Standardausgabe oder Standardfehler nicht Terminal sind
Geräten, die Ergebnisse sind nicht spezifiziert.

Wechseln Sie in den offenen Modus.

Das abschließende Trennzeichen kann weggelassen werden Anleitungen am Ende der Kommandozeile. Wenn
Anleitungen ist leer (zum Beispiel "//") oder nicht angegeben, der letzte in verwendete reguläre Ausdruck
der Editor soll als Muster verwendet werden. Das Muster kann abgegrenzt werden durch
Zeichen (in der Synopsis gezeigt) sowie alle alphanumerischen oder nicht- außer
, , , oder doppelte Anführungszeichen.

Strom Linie: Auf die angegebene Zeile setzen.

Strom Überblick: Auf Nicht- .

Bewahren
Zusammenfassung:
Vor[brauchen]

Speichern Sie den Bearbeitungspuffer in einem Formular, das später wiederhergestellt werden kann, indem Sie das −r Option oder nach
Verwendung der ex erholen Befehl. Nachdem die Datei aufbewahrt wurde, wird eine E-Mail-Nachricht
an den Benutzer gesendet. Diese Nachricht muss durch Aufrufen der mailx Nützlichkeit. Das
Die Nachricht muss den Namen der Datei, den Zeitpunkt der Aufbewahrung und eine ex Befehl
das könnte verwendet werden, um die Datei wiederherzustellen. Zusätzliche Informationen können in der Mail enthalten sein
Nachricht.

Strom Linie: Unverändert.

Strom Überblick: Unverändert.

Print
Zusammenfassung:
[2adr] p[rint][zählen][Fahnen]

Schreiben Sie die adressierten Zeilen. Das Verhalten ist nicht spezifiziert, wenn die Anzahl der Spalten auf dem
Anzeige ist weniger als die Anzahl der Spalten, die erforderlich ist, um ein einzelnes Zeichen in das zu schreiben
Zeilen geschrieben werden.

Nicht druckbare Zeichen, außer den , soll als implementierungsdefiniert geschrieben werden
Mehrzeichenfolgen.

Besitzt das # Flag angegeben ist oder die Anzahl Bearbeitungsoption gesetzt ist, soll jeder Zeile vorangestellt werden
durch seine Zeilennummer im folgenden Format:

"%6d ", <Linie Anzahl>

Besitzt das l Flag angegeben ist oder die Liste Bearbeitungsoption ist gesetzt:

1. Die im Band Base Definitions von POSIX.1‐2008 aufgeführten Zeichen, Tisch 5-1,
Flucht Sequenzen und Damit verbundenen Aktionen soll als entsprechendes Escape geschrieben werden
Sequenz.

2. Nicht druckbare Zeichen, die nicht im Band Basisdefinitionen von POSIX.1‐2008 enthalten sind, Tisch
5-1, Flucht Sequenzen und Damit verbundenen Aktionen soll als ein dreistelliges Oktal geschrieben werden
Zahl (mit einem vorangestellten ) für jedes Byte im Zeichen (höchstwertige
Byte zuerst).

3. Das Ende jeder Zeile ist mit a . zu markieren '$', und wörtlich '$' Zeichen innerhalb der
Zeile wird mit einem vorangestellten geschrieben .

Lange Leinen müssen gefaltet werden; die Länge, bei der die Faltung auftritt, ist nicht angegeben, sollte aber
für das Ausgabeterminal geeignet sein, unter Berücksichtigung der Anzahl der Spalten des Terminals.

Wenn eine Linie gefaltet ist und die l Flag ist nicht angegeben und die Liste Bearbeitungsoption ist nicht gesetzt,
es ist nicht angegeben, ob ein mehrspaltiges Zeichen an der Faltposition getrennt wird;
es darf nicht verworfen werden.

Strom Linie: Auf die letzte geschriebene Zeile setzen.

Strom Überblick: Unverändert, wenn die aktuelle Zeile unverändert ist; andernfalls auf Nicht- .

setzen
Zusammenfassung:
[1adr] pu[t][puffern]

Text aus dem angegebenen Puffer (standardmäßig der unbenannte Puffer) an den angegebenen . anhängen
Leitung; Zeile null gibt an, dass der Text am Anfang der Bearbeitung platziert werden soll
Puffer. Jeder Abschnitt einer Zeile im Puffer wird zu einer neuen Zeile im Bearbeitungspuffer,
unabhängig vom Modus des Puffers.

Strom Linie: Auf die letzte Zeile setzen, die in den Bearbeitungspuffer eingegeben wurde.

Strom Überblick: Auf Nicht- .

Verlassen
Zusammenfassung:
q[uit][!]

Wenn nein '!' wird an den Befehlsnamen angehängt:

1. Wenn der Editierpuffer seit dem letzten vollständigen Schreiben geändert wurde, ist er ein
Fehler.

2. Wenn sich in der Argumentliste nach dem aktuell referenzierten Dateinamen Dateinamen befinden,
und der letzte Befehl war nicht a verlassen, wq, Schlag, oder ZZ (sehen Beenden) Befehl, es soll ein . sein
Fehler.

Beenden Sie andernfalls die Bearbeitungssitzung.

Lesen Sie mehr
Zusammenfassung:
[1adr] r[ead][!][Datei]

If '!' ist nicht der erste Nicht- um dem Befehlsnamen zu folgen, eine Kopie des angegebenen
Datei soll in den Editierpuffer nach der angegebenen Zeile angehängt werden; Zeile null spezifiziert
dass die Kopie am Anfang des Editierpuffers platziert werden soll. Die Anzahl der Zeilen und
gelesene Bytes sollen geschrieben werden. Wenn nein Datei benannt ist, ist der aktuelle Pfadname der
Ursprünglich. Wenn kein aktueller Pfadname vorhanden ist, dann Datei wird der aktuelle Pfadname. Wenn
es gibt keinen aktuellen Pfadnamen oder Datei Operanden, es soll ein Fehler sein. Angabe von a Datei zur Verbesserung der Gesundheitsgerechtigkeit
nicht vom Typ Regular ist, hat nicht näher spezifizierte Ergebnisse.

Ansonsten wenn Datei wird von vorangestellt '!', der Rest der Zeile nach dem '!' soll haben '%',
'#' und '!' Zeichen erweitert wie in . beschrieben Befehl Line Parsing in ex.

Das ex Das Dienstprogramm übergibt dann zwei Argumente an das von der Shell-Bearbeitung benannte Programm
Möglichkeit; die erste soll sein -c und die zweite sind die erweiterten Argumente zu den lesen
Befehl als einzelnes Argument. Die Standardeingabe des Programms ist auf die
Standardeingabe der ex Programm, wenn es aufgerufen wurde. Der Standardfehler und Standard
Ausgabe des Programms soll nach der angegebenen Zeile in den Editierpuffer angehängt werden.

Jede Zeile in der kopierten Datei- oder Programmausgabe (getrennt durch Zeichen oder
das Ende der Datei oder Ausgabe, wenn nicht unmittelbar ein a . vorangestellt ist ), muss
eine separate Zeile im Editierpuffer. Alle Vorkommnisse von und
Paare in der Ausgabe werden als einzelne behandelt Zeichen.

Die besondere Bedeutung des '!' nach dem lesen Befehl kann durch Escape überschrieben werden
es mit a Charakter.

Strom Linie: Wenn keine Zeilen zum Bearbeitungspuffer hinzugefügt werden, unverändert. Ansonsten, wenn geöffnet
oder visuellen Modus, auf die erste Zeile setzen, die in den Bearbeitungspuffer eingegeben wird. Stellen Sie andernfalls auf die
letzte Zeile in den Editierpuffer eingetragen.

Strom Überblick: Auf Nicht- .

Entspannung
Zusammenfassung:
rec[übrig][!] Datei

Wenn nein '!' wird an den Befehlsnamen angehängt und der Editierpuffer wurde seitdem geändert
der letzte vollständige Schreibvorgang ist ein Fehler.

Wenn nein Datei Operand angegeben, dann soll der aktuelle Pfadname verwendet werden. Wenn es keine gibt
aktueller Pfadname oder Datei Operanden, es soll ein Fehler sein.

Wenn zuvor keine Wiederherstellungsinformationen gespeichert wurden über Datei, der erholen Befehl soll
verhalten sich genauso wie die bearbeiten Befehl, und eine diesbezügliche Informationsnachricht soll
geschrieben sein.

Setzen Sie andernfalls den aktuellen Pfadnamen auf Datei, und ersetzen Sie den aktuellen Inhalt der Bearbeitung
Puffer mit dem wiederhergestellten Inhalt von Datei. Wenn es mehrere Instanzen der Datei gibt
wiederhergestellt werden soll, wird das zuletzt gespeicherte wiederhergestellt, und ein Informations-
Die Meldung, dass es frühere Versionen der Datei gibt, die wiederhergestellt werden können, lautet:
geschrieben. Der Editor soll sich so verhalten, als wäre der Inhalt des Editierpuffers bereits
geändert.

Strom Datei: Einstellen wie für die beschrieben bearbeiten Befehl.

Strom Überblick: Einstellen wie für die beschrieben bearbeiten Befehl.

Rewind
Zusammenfassung:
neuind][!]

Wenn nein '!' wird an den Befehlsnamen angehängt und der Editierpuffer wurde seitdem geändert
der letzte vollständige Schreibvorgang ist ein Fehler, es sei denn, die Datei wurde erfolgreich geschrieben als
angegeben durch die automatisch schreiben .

Wenn die Argumentliste leer ist, ist dies ein Fehler.

Die aktuelle Argumentlistenreferenz und der aktuelle Pfadname sollen auf den ersten gesetzt werden
Dateiname in der Argumentliste.

Ersetzen Sie den Inhalt des Editierpuffers durch den Inhalt der Datei mit dem Namen current
Pfadname. Wenn aus irgendeinem Grund nicht auf den Inhalt der Datei zugegriffen werden kann, wird der Bearbeitungspuffer
soll leer sein.

Dieser Befehl wird beeinflusst durch die automatisch schreiben und schreiben Optionen bearbeiten.

Strom Linie: Einstellen wie für die beschrieben bearbeiten Befehl.

Strom Überblick: Einstellen wie für die beschrieben bearbeiten Befehl.

Sept
Zusammenfassung:
se[t][zu erhalten[=[Wert]] ...][nichtzu erhalten ...][zu erhalten? ...][alle]

Wenn keine Argumente angegeben sind, schreiben Sie den Wert von Begriff Bearbeitungsoption und diese Optionen
deren Werte gegenüber den Standardeinstellungen geändert wurden; wenn der Streit alle is
angegeben, schreiben Sie alle Optionswerte.

Geben Sie einen Optionsnamen gefolgt von dem Zeichen '?' wird den aktuellen Wert davon verursachen
Möglichkeit geschrieben zu werden. Die '?' kann durch null oder mehr vom Optionsnamen getrennt werden
Zeichen. Die '?' ist nur für boolesche Optionen erforderlich. Boolesches
Optionen können Werte durch das Formular zugewiesen werden kompensieren zu erhalten um sie einzuschalten oder kompensieren nichtzu erhalten drehen
sie aus; String- und numerische Optionen können über das Formular zugewiesen werden kompensieren zu erhalten=Wert. Irgendein
Zeichen in Strings können unverändert eingefügt werden, indem sie jeweils vorangestellt werden mit einem
entkommen . Mehr als eine Option kann mit einem einzigen Set-Befehl eingestellt oder aufgelistet werden
durch Angabe mehrerer Argumente, die jeweils durch eines oder mehrere voneinander getrennt sind
Zeichen.

See Bearbeiten Optionen in ex für Details zu bestimmten Optionen.

Strom Linie: Unverändert.

Strom Überblick: Unverändert.

Schale
Zusammenfassung:
NS[ell]

Rufen Sie das im genannte Programm auf Schale Bearbeitungsoption mit dem einzelnen Argument - ich (interaktiv
Modus). Die Bearbeitung wird nach Beendigung des Programms wieder aufgenommen.

Strom Linie: Unverändert.

Strom Überblick: Unverändert.

Quelle
Zusammenfassung:
Also[Urcan zu] Datei

Lesen und ausführen ex Befehle von Datei. Zeilen in der Datei, die leere Zeilen sind, müssen
ignoriert.

Strom Linie: Wie für die Person angegeben ex Befehle.

Strom Überblick: Wie für die Person angegeben ex Befehle.

Ersatz
Zusammenfassung:
[2adr] s[ersetzen][/Anleitungen/erwidern/[Optionen][zählen][Fahnen]]
[2adr] &[Optionen][zählen][Fahnen]]
[2adr] ~[Optionen][zählen][Fahnen]]

Ersetzen Sie die erste Instanz des Musters Anleitungen an der Schnur erwidern auf jedem angegeben
Leitung. (Sehen Lang Ausdrücke in ex und Ersatz Streicher in ex.) Alle nicht-alphabetischen,
nicht- anderes Trennzeichen als , '|', , oder doppelte Anführungszeichen können verwendet werden
statt '/'. Zeichen können verwendet werden, um Trennzeichen zu maskieren,
Zeichen und andere Sonderzeichen.

Das abschließende Trennzeichen kann weggelassen werden Anleitungen oder erwidern am Ende des Befehls
Leitung. Wenn beides Anleitungen und erwidern nicht angegeben oder leer sind (z. B. "//"), Die
letzte s Befehl soll wiederholt werden. Wenn nur Anleitungen ist nicht angegeben oder leer, der letzte
Als Muster soll der im Editor verwendete reguläre Ausdruck verwendet werden. Wenn nur erwidern ist nicht
angegeben oder leer ist, wird das Muster durch nichts ersetzt. Wenn das gesamte
Ersatzmuster ist '%', das letzte Ersetzungsmuster zu an s Befehl verwendet werden.

Eingabe von a in erwidern (was eine Flucht erfordert in ex Modus
und eine Flucht ‐V im offenen oder vi Modus) soll die Linie an diesem Punkt teilen,
Erstellen einer neuen Zeile im Bearbeitungspuffer. Die werden verworfen.

If Optionen enthält den Brief 'g' (globale ), alle nicht überlappenden Instanzen des Musters
in der Zeile ersetzt werden.

If Optionen enthält den Brief 'C' (bestätigen), dann soll vor jeder Auswechslung die Zeile
geschrieben sein; die geschriebene Zeile muss alle vorherigen Ersetzungen widerspiegeln. Im Folgenden
Leitung, Zeichen werden unter die Zeichen aus der Zeile geschrieben, die
Vor dem Anleitungen ersetzt werden, und '^' Zeichen unter den Zeichen geschrieben
inbegriffen in Anleitungen ersetzt werden. Die ex Das Dienstprogramm wartet dann auf eine Antwort von
der Benutzer. Eine bejahende Antwort bewirkt, dass die Ersetzung durchgeführt wird, während jede andere
Eingaben führen nicht zur Ersetzung. Eine bejahende Antwort muss aus einer Zeile bestehen
mit der positiven Antwort (wie durch das aktuelle Gebietsschema definiert) zu Beginn des
Leitung. Diese Zeile wird auf die gleiche Weise bearbeitet wie die ex Befehlszeile.

Bei Unterbrechung (siehe Abschnitt ASYNCHRONE EREIGNISSE), alle Änderungen, die von der
Benutzer soll nach dem Interrupt im Editierpuffer aufbewahrt werden.

Wenn die gespeicherte Suchrichtung nicht eingestellt ist, wird die s Befehl soll es auf Vorwärts setzen.

In der zweiten Synopsis, die & Befehl wiederholt die vorherige Ersetzung, als ob der &
Befehl wurden ersetzt durch:

s/Anleitungen/erwidern/

woher Anleitungen und erwidern sind wie im vorherigen angegeben s, &, oder ~ Befehl.

In der dritten Synopsis, die ~ Befehl wiederholt die vorherige Ersetzung, als ob der '~'
wurden ersetzt durch:

s/Anleitungen/erwidern/

woher Anleitungen soll der letzte dem Editor angegebene reguläre Ausdruck sein, und erwidern wird
aus der vorherigen Auswechslung stammen (einschließlich & und ~) Befehl.

Diese Befehle werden beeinflusst durch die LC_MESSAGES variable Umgebung

Strom Linie: Auf die letzte Zeile setzen, in der eine Substitution aufgetreten ist, oder unverändert, wenn nein
Substitution stattfand.

Strom Überblick: Auf Nicht- .

Aussetzen
Zusammenfassung:
su[verbringen][!]
st[op][!]

Erlauben Sie der Kontrolle, zum aufrufenden Prozess zurückzukehren; ex wird sich selbst aussetzen, als ob es gewesen wäre
das SIGTSTP-Signal empfangen. Die Aussetzung erfolgt nur, wenn die Jobsteuerung aktiviert ist in
die aufrufende Shell (siehe die Beschreibung von kompensieren -m).

Diese Befehle werden beeinflusst durch die automatisch schreiben und schreiben Optionen bearbeiten.

Die aktuelle vermuten Charakter (siehe stty) ist gleichbedeutend mit dem aussetzen Befehl.

Etikett
Zusammenfassung:
ta[g][!] Tagstring

Die Ergebnisse sind nicht spezifiziert, wenn das Format einer Tag-Datei nicht dem von der Tags
Dienstprogramm (siehe Tags) Bezeichnung.

Das Etikett Befehl soll suchen nach Tagstring in den Tag-Dateien, auf die das Etikett bearbeiten
Option, in der angegebenen Reihenfolge, bis ein Verweis auf Tagstring gefunden. Dateien
von Anfang bis Ende durchsucht werden soll. Wenn keine Referenz gefunden wird, handelt es sich um einen Fehler
und es wird eine entsprechende Fehlermeldung geschrieben. Wenn die Referenz nicht gefunden wird oder wenn
ein Fehler tritt bei der Verarbeitung einer Datei auf, auf die in der Etikett Bearbeitungsoption, es soll ein . sein
Fehler, und beim ersten Auftreten eines solchen Fehlers wird eine Fehlermeldung geschrieben.

Andernfalls, wenn die Tag-Datei ein Muster enthält, wird das Muster als reguläres Muster behandelt
im Editor verwendeter Ausdruck; zum Beispiel für die Zwecke der s Befehl.

Besitzt das Tagstring sich in einer Datei mit einem anderen Namen als dem aktuellen Pfadnamen befindet, setzen Sie die
aktuellen Pfadnamen durch den Namen dieser Datei und ersetzen Sie den Inhalt des Editierpuffers
mit dem Inhalt dieser Datei. In diesem Fall, wenn nein '!' wird an den Befehlsnamen angehängt,
und der Editierpuffer wurde seit dem letzten vollständigen Schreiben geändert, es soll ein Fehler sein,
es sei denn, die Datei wurde erfolgreich geschrieben, wie durch die automatisch schreiben .

Dieser Befehl wird beeinflusst durch die automatisch schreiben, Etikett, Taglänge und schreiben bearbeiten
Optionen.

Strom Linie: Wenn die Tag-Datei eine Zeilennummer enthielt, stellen Sie diese Zeilennummer ein. Wenn die
Zeilennummer größer als die letzte Zeile im Editierpuffer ist, wird eine Fehlermeldung
geschrieben und die aktuelle Zeile soll wie für die bearbeiten Befehl.

Wenn die Tags-Datei ein Muster enthielt, setzen Sie es auf das erste Vorkommen des Musters im
Datei. Wird kein passendes Muster gefunden, wird eine Fehlermeldung geschrieben und der aktuelle
Linie wird wie für die bearbeiten Befehl.

Strom Überblick: Wenn die Tag-Datei eine Zeilennummer-Referenz und diese Zeilennummer enthält
war nicht größer als die letzte Zeile im Editierpuffer, oder wenn die Tags-Datei a
Muster und dieses Muster wurde gefunden, auf Nicht- . Andernfalls wie für angegeben einstellen
bearbeiten Befehl.

Ungekürzt
Zusammenfassung:
un[Abkürzung] lhs

If lhs ist kein Eintrag im aktuellen Abkürzungsverzeichnis (siehe Abkürzen), Es soll sein
ein Fehler. Andernfalls löschen lhs aus dem Abkürzungsverzeichnis.

Strom Linie: Unverändert.

Strom Überblick: Unverändert.

Rückgängig machen
Zusammenfassung:
u[ndo]

Machen Sie die Änderungen rückgängig, die mit dem letzten Befehl vorgenommen wurden, der den Inhalt der Bearbeitung geändert hat
Puffer, einschließlich rückgängig machen. Zu diesem Zweck wird die globale , v, XNUMXh geöffnet und visuell Befehle und
Befehle, die aus Pufferausführungen und zugeordneten Zeichenerweiterungen resultieren, werden berücksichtigt
einzelne Befehle.

Wenn keine rückgängig zu machende Aktion vor dem rückgängig machen Befehl, es soll ein Fehler sein.

Besitzt das rückgängig machen Befehl stellt markierte Zeilen wieder her, die Markierung soll auch wiederhergestellt werden
es sei denn, es wurde nach dem Löschen der Zeilen zurückgesetzt.

Strom Linie:

1. Wenn Zeilen in der Datei hinzugefügt oder geändert werden, auf die erste hinzugefügte oder geänderte Zeile setzen.

2. Setzen Sie auf die Zeile vor der ersten gelöschten Zeile, falls vorhanden.

3. Auf 1 setzen, wenn der Editierpuffer nicht leer ist.

4. Auf Null stellen.

Strom Überblick: Auf Nicht- .

Karte aufheben
Zusammenfassung:
unm[ap][!] lhs

If '!' wird an den Befehlsnamen angehängt, und wenn lhs ist kein Eintrag in der Textliste
Eingabemodus-Map-Definitionen, sollte ein Fehler vorliegen. Andernfalls löschen lhs aus der Liste von
Kartendefinitionen für den Texteingabemodus.

Wenn nein '!' wird an den Befehlsnamen angehängt, und wenn lhs ist kein Eintrag in der Liste von
Befehlsmodus-Map-Definitionen, es sollte ein Fehler sein. Andernfalls löschen lhs aus der Liste von
Befehlsmodus-Map-Definitionen.

Strom Linie: Unverändert.

Strom Überblick: Unverändert.

Version
Zusammenfassung:
ich[Version]

Schreiben Sie eine Nachricht mit Versionsinformationen für den Editor. Das Format der Nachricht
ist nicht angegeben.

Strom Linie: Unverändert.

Strom Überblick: Unverändert.

visuell
Zusammenfassung:
[1adr] vi[Süss][tippe][zählen][Fahnen]

If ex sich derzeit im offenen oder visuellen Modus befindet, die Zusammenfassung und das Verhalten des visuellen Befehls
soll das gleiche sein wie die bearbeiten Befehl, wie angegeben durch Bearbeiten.

Andernfalls muss dieser Befehl auf Blockmodus-Terminals oder Terminals mit . nicht unterstützt werden
unzureichende Fähigkeiten. Wenn Standardeingabe, Standardausgabe oder Standardfehler nicht sind
Endgeräte, die Ergebnisse sind nicht spezifiziert.

If zählen angegeben ist, wird der Wert des Fenster Bearbeitungsoption soll auf gesetzt werden zählen (Als
beschrieben in Fenster). Wenn die '^' Typzeichen wurde auch angegeben, das Fenster bearbeiten
Option muss gesetzt werden, bevor sie vom Typzeichen verwendet wird.

Wechseln Sie in den visuellen Modus. Wenn tippe nicht angegeben ist, ist es so, als ob a tippe of '+' wurde
spezifiziert. Die tippe hat folgende Auswirkungen:

+ Platzieren Sie den Anfang der angegebenen Zeile am oberen Rand des Displays.

- Platzieren Sie das Ende der angegebenen Zeile am unteren Rand des Displays.

. Platzieren Sie den Anfang der angegebenen Zeile in der Mitte des Displays.

^ Wenn die angegebene Zeile kleiner oder gleich dem Wert des Fenster Bearbeitungsoption,
setze die Zeile auf 1; andernfalls dekrementiere die Zeile um den Wert von Fenster bearbeiten
Option minus 1. Platzieren Sie den Anfang dieser Zeile so nah wie möglich am unteren Rand des
angezeigten Linien wie möglich, während immer noch der Wert der angezeigt wird Fenster bearbeiten
Option Zeilenanzahl.

Strom Linie: Auf die angegebene Zeile setzen.

Strom Überblick: Auf Nicht- .

Schreiben
Zusammenfassung:
[2adr] w[Ritus][!][>>][Datei]
[2adr] w[Ritus][!][Datei]
[2adr] wq[!][>>][Datei]

Wenn keine Zeilen angegeben werden, beziehen sich die Zeilen standardmäßig auf die gesamte Datei.

Der Befehl wq ist äquivalent zu a schreiben Befehl gefolgt von a verlassen Befehl; wq!
ist gleichbedeutend mit schreiben! gefolgt von verlassen. In beiden Fällen, wenn die schreiben Befehl
versagt der verlassen soll nicht versucht werden.

Wenn dem Befehlsnamen kein oder mehrere folgen Zeichen, oder Datei ist nicht
vor a '!' Charakter, der schreiben soll in eine Datei sein.

1. Wenn die >> Argument angegeben ist und die Datei bereits vorhanden ist, müssen die Zeilen sein
an die Datei angehängt, anstatt ihren Inhalt zu ersetzen. Wenn die >> Argument ist
angegeben, und die Datei existiert noch nicht, ist nicht angegeben, ob das Schreiben
wird so vorgehen, als ob die >> Argument nicht angegeben wurde oder der Schreibvorgang fehlschlagen soll.

2. Wenn die schreibgeschützt Bearbeitungsoption ist gesetzt (siehe schreibgeschützt), Die schreiben wird scheitern.

3. Wenn Datei angegeben ist und nicht der aktuelle Pfadname ist, und die Datei existiert, die schreiben
wird scheitern.

4. Wenn Datei nicht angegeben ist, soll der aktuelle Pfadname verwendet werden. Wenn kein Strom
Pfadname, der schreiben Befehl wird fehlschlagen.

5. Wenn der aktuelle Pfadname verwendet wird und der aktuelle Pfadname vom Datei
or lesen Befehle und die Datei existiert, die schreiben wird scheitern. Wenn die schreiben is
erfolgreich, anschließend schreibens darf aus diesem Grund nicht versagen (es sei denn, der Strom
Pfadname wird wieder geändert).

6. Wenn nicht der gesamte Editierpuffer geschrieben wird und die zu schreibende Datei existiert,
schreiben wird scheitern.

Für die Regeln 1., 2., 3. und 5. gilt die schreiben kann durch Anhängen des Zeichens erzwungen werden '!' zu
der Befehlsname.

Für die Regeln 2., 3. und 5. gilt die schreiben kann erzwungen werden, indem die schreiben Bearbeiten-Option.

Zusätzliche, implementierungsdefinierte Tests können dazu führen, dass schreiben Versagen.

Ist der Editierpuffer leer, soll eine Datei ohne Inhalt geschrieben werden.

Es soll eine Informationsnachricht geschrieben werden, die die Anzahl der geschriebenen Zeilen und Bytes notiert.

Andernfalls, wenn dem Befehl ein oder mehrere folgen Zeichen, und die Datei ist
vorangestellt von '!', der Rest der Zeile nach dem '!' soll haben '%', '#' und '!'
Zeichen erweitert wie in . beschrieben Befehl Line Parsing in ex.

Das ex Das Dienstprogramm übergibt dann zwei Argumente an das Programm mit dem Namen Schale bearbeiten
Möglichkeit; die erste soll sein -c und die zweite sind die erweiterten Argumente zu den schreiben
Befehl als einzelnes Argument. Die angegebenen Zeilen sollen in die Standardeingabe geschrieben werden
des Befehls. Der Standardfehler und die Standardausgabe des Programms, falls vorhanden, sind
geschrieben wie für die beschrieben drucken Befehl. Wenn das letzte Zeichen in dieser Ausgabe kein a . ist
, ein wird am Ende der Ausgabe geschrieben.

Die besondere Bedeutung des '!' nach dem schreiben Befehl kann durch Escape überschrieben werden
es mit a Charakter.

Strom Linie: Unverändert.

Strom Überblick: Unverändert.

Schreiben und Beenden
Zusammenfassung:
[2adr] x[it][!][Datei]

Wenn der Bearbeitungspuffer seit dem letzten Abschluss nicht geändert wurde schreiben, Schlag sind
äquivalent zu der verlassen Befehl, oder wenn a '!' wird an den Befehlsnamen angehängt, um Verlassen!.

Andernfalls Schlag ist gleichbedeutend mit dem wq Befehl, oder wenn a '!' wird angehängt
Befehlsname, zu wq!.

Strom Linie: Unverändert.

Strom Überblick: Unverändert.

Ruck
Zusammenfassung:
[2adr] ya[nk][puffern][zählen]

Kopieren Sie die angegebenen Zeilen in den angegebenen Puffer (standardmäßig den unbenannten Puffer), der
soll ein Zeilenmodus-Puffer werden.

Strom Linie: Unverändert.

Strom Überblick: Unverändert.

Prozesse Window
Zusammenfassung:
[1adr] z[!][tippe ...][zählen][Fahnen]

Wenn keine Zeile angegeben wird, ist die aktuelle Zeile der Standard; wenn tippe wird weggelassen als
Nun, der aktuelle Zeilenwert soll zuerst um 1 erhöht werden. Wenn der aktuelle
Zeile würde dazu führen, dass sie größer als die letzte Zeile im Editierpuffer ist, sollte sie ein . sein
Fehler.

Wenn es gibt Zeichen zwischen den tippe Argument und das Vorhergehende z Befehlsname
oder optional '!' Zeichen, es soll ein Fehler sein.

If zählen angegeben ist, wird der Wert des Fenster Bearbeitungsoption soll auf gesetzt werden zählen (Als
beschrieben in Fenster). Wenn zählen weggelassen wird, wird standardmäßig der 2-fache Wert des
blättern Bearbeitungsoption, oder wenn ! angegeben wurde, die Anzahl der Zeilen im Display minus 1.

If tippe entfällt, dann zählen Zeilen, die mit der angegebenen Zeile beginnen, werden geschrieben.
Andernfalls zählen Zeilen, die mit der Zeile beginnen, die durch die tippe Argument soll sein
geschrieben.

Das tippe Argument soll die zu schreibenden Zeilen ändern. Die möglichen Werte von tippe Bereiche
folgt:

− Die angegebene Zeile wird um folgenden Wert dekrementiert:

(((Nummer of ``−'' Figuren) x zählen) −1)

Wenn die Berechnung eine Zahl kleiner als 1 ergeben würde, ist dies ein Fehler. Schreiben
Zeilen aus dem Editierpuffer, beginnend mit dem neuen Wert von Zeile, bis zählen Linien oder
die letzte Zeile im Editierpuffer wurde geschrieben.

+ Die angegebene Zeile wird um folgenden Wert erhöht:

(((Nummer of ``+'' Figuren) −1) x zählen) +1

Wenn die Berechnung eine Zahl ergeben würde, die größer ist als die letzte Zeile in der Bearbeitung
Puffer, es soll ein Fehler sein. Schreiben Sie Zeilen aus dem Editierpuffer, beginnend mit dem neuen
Wert der Linie, bis zählen Zeilen oder die letzte Zeile im Editierpuffer wurde
geschrieben.

=,. Wenn mehr als ein einzelner '.' or '=' angegeben ist, handelt es sich um einen Fehler. Folgende
Schritte sind zu unternehmen:

1. Wenn zählen Null ist, darf nichts geschrieben werden.

2. Schreiben Sie so viele der N Zeilen vor der aktuellen Zeile im Editierpuffer als
existieren. Wenn zählen or '!' angegeben wurde, N muss:

(zählen −1) /2

Andernfalls N muss:

(zählen −3) /2

If N eine Zahl kleiner als 3 ist, dürfen keine Zeilen geschrieben werden.

3. Wenn '=' als Typzeichen angegeben wurde, schreiben Sie eine Zeile bestehend aus dem
kleiner der Anzahl der Spalten in der Anzeige geteilt durch zwei oder 40 '-'
Zeichen.

4. Schreiben Sie die aktuelle Zeile.

5. Wiederholen Sie Schritt 3.

6. Schreiben Sie so viele der N Zeilen nach der aktuellen Zeile im Editierpuffer vorhanden sind.
N wird wie in Schritt 2 definiert. Wenn N eine Zahl kleiner als 3 ist, dürfen keine Zeilen sein
geschrieben. Wenn zählen kleiner als 3 ist, dürfen keine Zeilen geschrieben werden.

^ Die angegebene Zeile wird um folgenden Wert dekrementiert:

(((Nummer of ``^'' Figuren) + 1) x zählen) -1

Wenn die Berechnung eine Zahl kleiner als 1 ergeben würde, ist dies ein Fehler. Schreiben
Zeilen aus dem Editierpuffer, beginnend mit dem neuen Wert von Zeile, bis zählen Linien oder
die letzte Zeile im Editierpuffer wurde geschrieben.

Strom Linie: Auf die letzte geschriebene Zeile setzen, es sei denn, der Typ ist =, in diesem Fall auf setzen
die angegebene Zeile.

Strom Überblick: Auf Nicht- .

Flucht
Zusammenfassung:
! Befehl
[Adr]! Befehl

Der Inhalt der Zeile nach dem '!' soll haben '%', '#' und '!' Zeichen erweitert
wie beschrieben in Befehl Line Parsing in ex. Wenn die Erweiterung den Text der Zeile verursacht
zu ändern, wird es erneut angezeigt, mit einem vorangestellten '!' Charakter.

Das ex Dienstprogramm soll das Programm ausführen, das von der Schale Bearbeiten-Option. Es soll zwei vergehen
Argumente zum Programm; die erste soll sein -c, und die zweite soll die erweiterte sein
Argumente an die ! Befehl als einzelnes Argument.

Wenn keine Zeilen angegeben sind, werden die Standardeingabe, die Standardausgabe und der Standardfehler der
Programm muss auf Standardeingabe, Standardausgabe und Standardfehler des ex
Programm, wenn es aufgerufen wurde. Außerdem muss eine Warnmeldung geschrieben werden, wenn die Bearbeitung
Puffer seit dem letzten vollständigen Schreiben geändert wurde, und die warnen Bearbeitungsoption ist gesetzt.

Wenn Zeilen angegeben sind, sollen diese als Standardeingabe an das Programm übergeben werden, und die
Standardausgabe und Standardfehler des Programms ersetzen diese Zeilen in der Bearbeitung
Puffer. Jede Zeile in der Programmausgabe (getrennt durch Zeichen oder das Ende
der Ausgabe, wenn ihr nicht unmittelbar ein a . vorangeht ), soll eine separate Zeile sein
im Editierpuffer. Alle Vorkommnisse von und Paare in der Ausgabe
wird als Single behandelt Zeichen. Die angegebenen Zeilen sollen kopiert werden in
den unbenannten Puffer, bevor sie ersetzt werden, und der unbenannte Puffer soll zu einer Zeile werden.
Modus Puffer.

Wenn in ex Modus, ein einzelner '!' Zeichen soll geschrieben werden, wenn das Programm beendet ist.

Dieser Befehl wird beeinflusst durch die Schale und warnen Optionen bearbeiten. Wenn keine Zeilen sind
angegeben, wird dieser Befehl von der automatisch schreiben und schreiben Optionen bearbeiten. Wenn
Zeilen angegeben sind, wird dieser Befehl von der autoprint Bearbeiten-Option.

Strom Linie:

1. Wenn keine Zeilen angegeben sind, unverändert.

2. Andernfalls auf die letzte eingelesene Zeile setzen, falls Zeilen eingelesen werden.

3. Andernfalls auf die Zeile vor der ersten der angegebenen Zeilen setzen, wenn diese Zeile
besteht.

4. Andernfalls auf die erste Zeile des Editierpuffers setzen, wenn der Editierpuffer nicht leer ist.

5. Andernfalls auf Null setzen.

Strom Überblick: Wenn keine Zeilen angegeben sind, unverändert. Andernfalls auf Nicht- .

Shift Links
Zusammenfassung:
[2adr] <[< ...][zählen][Fahnen]

Verschieben Sie die angegebenen Zeilen an den Zeilenanfang; die Anzahl der Spaltenpositionen zu sein
verschoben ist die Anzahl der Befehlszeichen mal dem Wert der Schaltbreite bearbeiten
Möglichkeit. Nur führend Zeichen werden gelöscht oder in andere geändert
Zeichen beim Verschieben; andere Zeichen bleiben davon unberührt.

Zu verschiebende Zeilen werden in den unbenannten Puffer kopiert, der zu einem Zeilen-
Modus Puffer.

Dieser Befehl wird beeinflusst durch die autoprint Bearbeiten-Option.

Strom Linie: Auf die letzte Zeile der angegebenen Zeilen setzen.

Strom Überblick: Auf Nicht- .

Shift Rechts
Zusammenfassung:
[2adr] >[> ...][zählen][Fahnen]

Verschieben Sie die angegebenen Zeilen vom Zeilenanfang weg; die Anzahl der Spaltenpositionen
zu verschieben ist die Anzahl der Befehlszeichen mal dem Wert der Schaltbreite
Bearbeiten-Option. Die Verschiebung erfolgt durch Hinzufügen Zeichen als Präfix zu
die Linie oder das Ändern des Führens Zeichen in andere Zeichen. Leere Zeilen
soll nicht geändert werden.

Zu verschiebende Zeilen werden in den unbenannten Puffer kopiert, der zu einem Zeilen-
Modus Puffer.

Dieser Befehl wird beeinflusst durch die autoprint Bearbeiten-Option.

Strom Linie: Auf die letzte Zeile der angegebenen Zeilen setzen.

Strom Überblick: Auf Nicht- .

-D
Zusammenfassung:
-D

Schreibe den nächsten n Zeilen, wo n ist das Minimum der Werte von blättern Bearbeitungsoption und
die Anzahl der Zeilen nach der aktuellen Zeile im Bearbeitungspuffer. Wenn die aktuelle Zeile die . ist
letzte Zeile des Editierpuffers soll es ein Fehler sein.

Strom Linie: Auf die letzte geschriebene Zeile setzen.

Strom Überblick: Auf Nicht- .

Schreiben Line Nummer
Zusammenfassung:
[1adr] = [Fahnen]

If Linie nicht angegeben ist, wird standardmäßig die letzte Zeile im Editierpuffer verwendet. Schreiben Sie die
Zeilennummer der angegebenen Zeile.

Strom Linie: Unverändert.

Strom Überblick: Unverändert.

Ausführen
Zusammenfassung:
[2adr] @ puffern
[2adr] * puffern

Wenn kein Puffer angegeben ist oder als . angegeben ist '@' or '*', der letzte ausgeführte Puffer ist
Gebraucht. Wenn kein vorheriger Puffer ausgeführt wurde, handelt es sich um einen Fehler.

Legen Sie für jede durch die Adressen angegebene Zeile die aktuelle Zeile fest ('.') zum angegebenen
Zeile und führen Sie den Inhalt des benannten puffern (wie sie damals waren @ Befehl
wurde hingerichtet) als ex Befehle. Für jede Zeile eines Zeilenmoduspuffers und alle außer der letzten
Zeile eines Zeichenmoduspuffers, die ex Befehls-Parser soll sich so verhalten, als ob die Zeile . wäre
beendet durch a .

Tritt dabei ein Fehler auf oder eine durch die Adressen angegebene Zeile nicht
existieren, wenn die aktuelle Zeile darauf gesetzt wäre oder mehr als eine einzelne Zeile angegeben wurde
durch die Adressen, und der Inhalt des Editierpuffers wird ersetzt (zum Beispiel durch die ex
:bearbeiten Befehl) soll eine Fehlermeldung geschrieben werden und es entstehen keine Befehle mehr aus dem
Ausführung dieses Befehls verarbeitet werden.

Strom Linie: Wie für die Person angegeben ex Befehle.

Strom Überblick: Wie für die Person angegeben ex Befehle.

Lang Ausdrücke in ex
Das ex Das Dienstprogramm soll reguläre Ausdrücke unterstützen, die eine Obermenge des Basisregulären sind
Ausdrücke, die im Band Base Definitions von POSIX.1‐2008 beschrieben sind, Abschnitt 9.3, Basic
Lang Ausdrücke. Ein null regulärer Ausdruck ("//") entspricht dem letzten
regulärer Ausdruck gefunden.

Reguläre Ausdrücke können in Adressen verwendet werden, um Zeilen anzugeben, und in einigen Befehlen (für
Beispiel das Ersatz Befehl), um Teile einer Zeile anzugeben, die ersetzt werden sollen.

Die folgenden Konstrukte können verwendet werden, um die grundlegenden regulären Ausdrücke zu erweitern:

\< Übereinstimmung mit dem Anfang von a Wort. (Siehe die Definition von Wort zu Beginn
Befehl Beschreibungen in ex.)

\> Übereinstimmung mit dem Ende von a Wort.

~ Passen Sie das Ersatzteil des letzten an Ersatz Befehl. Die ('~')
Zeichen kann in einem regulären Ausdruck maskiert werden, um ein normales Zeichen zu werden mit
keine besondere Bedeutung. Der werden verworfen.

Wenn die Editor-Option Magie nicht gesetzt ist, dürfen nur Zeichen mit Sonderbedeutungen verwendet werden
be '^' am Anfang eines Musters, '$' am Ende eines Musters und . Die
Zeichen '.', '*', '[' und '~' werden wie normale Zeichen behandelt, sofern nicht vorangestellt
durch eine ; wenn ein a . vorangestellt ist sie werden ihre besondere Bedeutung wiedererlangen,
oder im Fall von , als Single behandelt werden . Zeichen
verwendet, um andere Zeichen zu maskieren, werden verworfen.

Ersatz Streicher in ex
Der Charakter '&' ('\&' wenn die Editor-Option Magie ist nicht gesetzt) ​​in der Ersatzzeichenfolge
steht für den Text, der dem zu ersetzenden Muster entspricht. Der Charakter '~' ('\~' if
Magie nicht gesetzt) ​​wird durch das Ersatzteil des vorherigen ersetzt Ersatz
Befehl. Der Ablauf '\n', Wobei n ist eine ganze Zahl, soll durch den passenden Text ersetzt werden
durch den entsprechenden Rückverweisausdruck. Wenn der entsprechende Rückverweis
Ausdruck stimmt nicht überein, dann werden die Zeichen '\n' durch die leere Zeichenfolge ersetzt werden.

Die Saiten '\l', '\u', '\L' und '\U' kann verwendet werden, um die Groß-/Kleinschreibung von Elementen in der
Ersatzzeichenfolge (mit der '\&' or "\"Ziffer) Notation. Die Saite '\l' ('\u') soll
bewirken, dass das folgende Zeichen in Kleinbuchstaben (Großbuchstaben) umgewandelt wird. Die Saite '\L'
('\U') bewirkt, dass alle nachfolgenden Zeichen in Kleinbuchstaben umgewandelt werden
(Großbuchstaben), da sie durch die Ersetzung eingefügt werden, bis die Zeichenfolge '\e' or '\E'Oder das
Ende der Ersatzzeichenfolge, angetroffen wird.

Andernfalls kann jedes Zeichen nach a wird so buchstäblich behandelt
Charakter und die Flucht werden verworfen.

Ein Beispiel für die Fallumwandlung mit dem s Befehl lautet wie folgt:

:p
Das Katze Sa on Matte.
:s/\<.at\>/\u&/gp
Das Katze Sa on Mat.
:s/S\(.*\)M/S\U\1\eM/p
Das Katze Samstag ON Mat.

Bearbeiten Optionen in ex
Das ex Das Dienstprogramm verfügt über eine Reihe von Optionen, die sein Verhalten ändern. Diese Optionen haben
Standardeinstellungen, die mit dem geändert werden können kompensieren Befehl.

Optionen sind boolesch, sofern nicht anders angegeben.

automatischer Einzug, ai
[Standard ungesetzt]

If automatischer Einzug gesetzt ist, soll jede Zeile im Eingabemodus eingerückt werden (mit der ersten so vielen
Zeichen wie möglich, wie durch die Editor-Option festgelegt Tabulator, und dann mit
Zeichen), um sie wie folgt an einer anderen Zeile auszurichten:

1. Wenn im offenen oder visuellen Modus und die Texteingabe Teil eines zeilenorientierten Befehls ist (siehe
die ERWEITERTE BESCHREIBUNG in vi), an der ersten Spalte ausrichten.

2. Andernfalls, wenn im offenen oder visuellen Modus, ist die Einrückung für jede Zeile wie folgt zu setzen:
folgt:

A. Wenn zuvor als Teil dieses Befehls eine Zeile eingefügt wurde, soll sie auf den gesetzt werden
Einrückung der zuletzt eingefügten Zeile standardmäßig oder wie anders angegeben für
das ‐D-Zeichen in zufuhr Model Befehle in vi.

B. Andernfalls wird es auf die Einrückung der vorherigen aktuellen Zeile gesetzt, wenn
irgendein; andernfalls in die erste Spalte.

3. Für die ex a, i und c Befehlen ist die Einrückung für jede Zeile wie folgt einzustellen:

A. Wenn zuvor als Teil dieses Befehls eine Zeile eingefügt wurde, soll sie auf den gesetzt werden
Einrückung der zuletzt eingefügten Zeile standardmäßig oder wie anders angegeben für
eof Zeichen Scrollen.

B. Andernfalls, wenn der Befehl der . ist ex a Befehl, es soll auf die Zeile gesetzt werden
angehängt nach, falls vorhanden; ansonsten in die erste Spalte.

C. Andernfalls, wenn der Befehl der . ist ex i Befehl, es soll auf die Zeile gesetzt werden
davor eingefügt, falls vorhanden; ansonsten in die erste Spalte.

D. Andernfalls, wenn der Befehl der . ist ex c Befehl, es wird auf die Einrückung gesetzt
der Linie ersetzt.

automatischer Druck, ap
[Standard kompensieren]

If autoprint gesetzt ist, soll nach jedem die aktuelle Zeile geschrieben werden ex Befehl, der ändert
den Inhalt des aktuellen Editierpuffers und nach jedem Etikett Befehl, für den das Tag
Suchmuster wurde gefunden oder Tag-Zeilennummer war gültig, es sei denn:

1. Der Befehl wurde im offenen oder visuellen Modus ausgeführt.

2. Der Befehl wurde als Teil von a . ausgeführt globale or v Befehl oder @ Pufferausführung.

3. Der Befehl war die Form des lesen Befehl, der eine Datei in den Bearbeitungspuffer einliest.

4. Der Befehl war der anhängen, Übernehmen , oder einfügen Befehl.

5. Der Befehl wurde nicht durch a . beendet .

6. Die aktuelle Zeile soll durch ein Flag geschrieben werden, das dem Befehl spezifiziert ist; zum Beispiel,
löschen # schreibt die aktuelle Zeile wie für den Flag-Modifikator angegeben in den löschen
Befehl, und nicht wie von der autoprint Bearbeiten-Option.

automatisch schreiben, aw
[Standard ungesetzt]

If automatisch schreiben gesetzt ist und der Editierpuffer seit seiner letzten vollständigen Bearbeitung verändert wurde
in eine beliebige Datei geschrieben, wird der Inhalt des Editierpuffers so geschrieben, als ob die ex schreiben
Befehl wurde ohne Argumente angegeben, vor jedem Befehl, der von der
automatisch schreiben Bearbeitungsoption ausgeführt wird. Anhängen des Zeichens '!' an den Befehlsnamen von any
dauert ebenfalls 3 Jahre. Das erste Jahr ist das sog. ex Befehle außer '!' soll das Schreiben verhindern. Wenn das Schreiben fehlschlägt, wird es ein
Fehler und der Befehl soll nicht ausgeführt werden.

verschönern, bf
[Standard ungesetzt]

If verschönern gesetzt ist, alle nicht druckbaren Zeichen außer , , und
feed> Zeichen, sollen aus dem aus Dateien eingelesenen Text entfernt werden.

Verzeichnis, dir
[Standard umsetzungsdefiniert]

Der Wert dieser Option gibt das Verzeichnis an, in dem sich der Editorpuffer befinden soll
platziert. Wenn dieses Verzeichnis vom Benutzer nicht beschreibbar ist, wird der Editor beendet.

edkompatibel, ed
[Standard ungesetzt]

Verursacht die Anwesenheit von g und c Suffixe für Ersatzbefehle, die man sich merken muss, und
durch Wiederholen der Suffixe umgeschaltet.

Fehlerglocken, eb
[Standard ungesetzt]

Wenn der Redakteur dabei ist ex Modus, und das Terminal unterstützt keinen herausragenden Modus (wie z
inverses Video) und Fehlerglocken gesetzt ist, muss vor Fehlermeldungen eine Warnung an den
Terminal.

Auszug
[Standard ungesetzt]

If Auszug eingestellt ist, ex wird auf alle zugreifen .exrc Datei im aktuellen Verzeichnis, wie in . beschrieben
Initialisierung in ex und vi. Wenn Auszug ist nicht eingestellt, ex werde alle ignorieren .exrc Datei in das
aktuelles Verzeichnis während der Initialisierung, es sei denn, das aktuelle Verzeichnis ist das vom
HOME variable Umgebung

Fall ignorieren, ic
[Standard ungesetzt]

If Fall ignorieren gesetzt ist, müssen Zeichen mit Groß- und Kleinschreibung
diese Darstellungen für reguläre Ausdrücke als gleichwertig betrachten
Vergleich.

Das Fall ignorieren Bearbeitungsoption soll sich auf alle gespeicherten regulären Ausdrücke auswirken; zum Beispiel,
entschärfen Fall ignorieren Bearbeiten-Option führt zu einem nachfolgenden vi n Befehl zum Suchen nach
der letzte reguläre reguläre Ausdruck unter Beachtung der Groß-/Kleinschreibung.

Liste
[Standard ungesetzt]

If Liste gesetzt ist, editiere Pufferzeilen, die während in . geschrieben wurden ex Befehlsmodus soll geschrieben werden als
angegeben für die drucken Befehl mit dem l Flag angegeben. Im offenen oder visuellen Modus jeweils
Pufferzeile bearbeiten soll wie für die ex drucken Befehl mit dem l Flagge
spezifiziert. Im offenen oder visuellen Texteingabemodus, wenn der Cursor auf keinem ruht
Zeichen in der Zeile, es soll auf dem ruhen '$' das Ende der Zeile markieren.

Magie
[Standard kompensieren]

If Magie gesetzt ist, ändern Sie die Interpretation von Zeichen in regulären Ausdrücken und
Ersatz-Ersatzzeichenfolgen (siehe Lang Ausdrücke in ex und Ersatz Streicher in
ex).

mesg
[Standard kompensieren]

If mesg gesetzt ist, die Berechtigung für andere, die schreiben or sich unterhalten Befehle zum Schreiben an
das Terminal muss im offenen oder visuellen Modus eingeschaltet sein. Der Befehl auf Shell-Ebene mesg
n hat Vorrang vor jeder Einstellung der ex mesg Möglichkeit; das heißt, wenn mesg y wurde
ausgegeben, bevor der Editor gestartet wurde (oder in einem Shell-Escape), wie zum Beispiel:

:!meg y

mesg Option in ex soll eingehende Nachrichten unterdrücken, aber die mesg Option soll nicht
Eingehende Nachrichten aktivieren, wenn mesg n wurde ausgestellt.

Anzahl, nu
[Standard ungesetzt]

If Anzahl gesetzt ist, editiere Pufferzeilen, die während in . geschrieben wurden ex Befehlsmodus soll geschrieben werden mit
Zeilennummern, in dem Format, das durch die drucken Befehl mit dem # Flag angegeben. In
ex Texteingabemodus, jeder Zeile muss die Zeilennummer vorangestellt werden, die sie im
Datei.

Im offenen oder visuellen Modus soll jede Zeile des Editierpuffers mit einer vorangestellten Zeile angezeigt werden
Nummer, in dem Format, das von der ex drucken Befehl mit dem # Flag angegeben. Dies
Zeilennummer gilt nicht als Teil der Zeile für die Zwecke der Bewertung der
aktuelle Spalte; das heißt, Spaltenposition 1 ist die erste Spaltenposition nach dem
Format angegeben durch die drucken Befehl.

Absätze, für
[Standard im POSIX-Gebietsschema IPLPPPQPP LIpplpipbp]

Das Absätze Bearbeitungsoption soll zusätzliche Absatzgrenzen für die offenen und
Befehle im visuellen Modus. Die Absätze Bearbeitungsoption kann auf eine Zeichenfolge gesetzt werden
bestehend aus null oder mehr Zeichenpaaren. Es sollte ein Fehler sein, es auf eine ungerade zu setzen
Anzahl von Charakteren.

Eingabeaufforderung
[Standard kompensieren]

If Eingabeaufforderung eingestellt ist, ex Eingabe des Befehlsmodus muss mit a . abgefragt werden (':'); Wenn
nicht gesetzt, wird keine Aufforderung geschrieben.

schreibgeschützt
[Standard sehen Text]

Besitzt das schreibgeschützt Bearbeitungsoption gesetzt ist, soll der Nur-Lese-Modus aktiviert werden (siehe Schreiben). Die
schreibgeschützt Die Bearbeitungsoption soll initialisiert werden, um gesetzt zu werden, wenn eine der folgenden Bedingungen zutrifft
wahr:

* Die Befehlszeilenoption −R wurde angegeben.

* Ausführen von Aktionen, die den Zugang() Funktion aufgerufen mit folgendem
arguments zeigt an, dass die Datei keine Schreibberechtigung hat:

1. Der aktuelle Pfadname wird als Weg Argument.

2. Die Konstante W_OK wird als die verwendet Ein Modus Argument.

Das schreibgeschützt Bearbeitungsoption kann initialisiert werden, um für andere, von der Implementierung definierte Einstellungen festzulegen
Gründe dafür. Die schreibgeschützt Die Bearbeitungsoption darf nicht auf der Grundlage irgendwelcher Besonderheiten initialisiert werden
Berechtigungen des Benutzers oder Prozesses. Die schreibgeschützt Bearbeitungsoption soll jeweils neu initialisiert werden
Zeitpunkt, an dem der Inhalt des Editierpuffers ersetzt wird (zum Beispiel durch einen bearbeiten or weiter
Befehl), es sei denn, der Benutzer hat es explizit gesetzt. In diesem Fall bleibt es gesetzt, bis
der Benutzer deaktiviert es explizit. Nach der Deaktivierung wird es jedes Mal neu initialisiert, wenn
der Inhalt des Editierpuffers wird ersetzt.

neu zeichnen
[Standard ungesetzt]

Der Editor simuliert ein intelligentes Terminal auf einem dummen Terminal. (Da dies wahrscheinlich
erfordern eine große Menge an Ausgabe an das Terminal, es ist nur bei hoher Übertragung nützlich
Geschwindigkeiten.)

remap
[Standard kompensieren]

If remap gesetzt ist, muss die Kartenübersetzung Karten ermöglichen, die in Bezug auf andere Karten definiert sind;
Die Übersetzung wird fortgesetzt, bis ein Endprodukt vorliegt. Wenn nicht gesetzt, nur ein Schritt
Übersetzung erfolgen soll.

berichten
[Standard 5]

Der Wert davon berichten Die Bearbeitungsoption gibt an, wie viele Zeilen hinzugefügt, kopiert,
im Editierpuffer gelöscht oder geändert wird, wird eine Informationsnachricht geschrieben
an den Benutzer. Die folgenden Bedingungen müssen eine Informationsmeldung auslösen. Die Nachricht
muss die Anzahl der hinzugefügten, kopierten, gelöschten oder geänderten Zeilen enthalten, ist jedoch anderweitig
nicht spezifiziert.

* Ein ex or vi Editorbefehl, außer XNUMXh geöffnet, rückgängig machen, oder visuell, das ändert sich zumindest
der Wert der berichten Bearbeiten Sie die Option Anzahl der Zeilen, und die nicht Teil einer . ist ex
globale or v Befehl, oder ex or vi Pufferausführung, führt zu einem informativen
Nachricht geschrieben werden.

* Ein ex Ruck or vi y or Y Befehl, der mindestens den Wert des kopiert berichten bearbeiten
Option plus 1 Zeilenanzahl, und die nicht Teil einer ex globale or v Befehl, oder
ex or vi Pufferausführung, veranlassen, dass eine Informationsnachricht geschrieben wird.

* Ein ex globale , v, XNUMXh geöffnet, rückgängig machen, oder visuell Befehl oder ex or vi Pufferausführung, das fügt hinzu
oder löscht insgesamt mindestens den Wert der berichten Option Zeilenanzahl bearbeiten,
und die nicht Teil einer ist ex globale or v Befehl, oder ex or vi Pufferausführung,
veranlasst, dass eine Informationsnachricht geschrieben wird. (Zum Beispiel, wenn 3 Zeilen wären
während an hinzugefügt und 8 Zeilen gelöscht ex visuell Befehl, 5 wäre die verglichene Zahl
gegen die berichten Bearbeitungsoption nach Abschluss des Befehls.)

scrollen, scr
[Standard (Anzahl der Zeilen im Display −1)/2]

Der Wert der blättern Die Bearbeitungsoption bestimmt die Anzahl der Zeilen, die von der gescrollt werden ex
‐D und z Befehle. Für die vi ‐D und -U-Befehle, es soll sein
die anfängliche Anzahl der Zeilen, die gescrollt werden sollen, wenn keine vorherige ‐D oder ‐U-Befehl
ausgeführt wurde.

Abschnitte
[Standard im POSIX-Gebietsschema NHSHH HUnhsh]

Das Abschnitte Bearbeitungsoption soll zusätzliche Abschnittsgrenzen für die offenen und
Befehle im visuellen Modus. Die Abschnitte Bearbeitungsoption kann auf eine Zeichenkette bestehend aus . gesetzt werden
aus null oder mehr Zeichenpaaren; es auf eine ungerade Zahl von zu setzen, ist ein Fehler
Zeichen.

Schale, sh
[Standard aus der Umgebungsvariable SHELL]

Der Wert dieser Option muss ein String sein. Die Vorgabe wird aus dem SHELL
Umgebungsvariable. Wenn die SHELL Umgebungsvariable ist null oder leer, die sh (sehen sh)
Dienstprogramm ist die Standardeinstellung.

Schaltbreite, sw
[Standard 8]

Der Wert dieser Option soll die Breite in Spalten einer verwendeten Einrückungsebene angeben
beim automatischen Einrücken und durch die Shift-Befehle (< und >).

Show-Match, sm
[Standard ungesetzt]

Die beschriebene Funktionalität für die Show-Match Bearbeitungsoption muss auf Block-
Modusterminals oder Terminals mit unzureichenden Fähigkeiten.

If Show-Match eingestellt ist, im offenen oder visuellen Modus, wenn a ')' or '}' getippt wird, wenn die Übereinstimmung
'(' or '{' aktuell auf dem Display sichtbar ist, das passende '(' or '{' soll markiert werden
Bewegen des Cursors für eine unbestimmte Zeit an seine Position.

Showmodus
[Standard ungesetzt]

If Showmodus eingestellt ist, im offenen oder visuellen Modus, der aktuelle Modus, in dem sich der Editor befindet
in der letzten Zeile des Displays angezeigt werden. Befehlsmodus und Texteingabemodus sind
differenziert; andere nicht spezifizierte Modi und durch die Implementierung definierte Informationen können sein
angezeigt.

langsam öffnen
[Standard ungesetzt]

If langsam öffnen im offenen und visuellen Texteingabemodus eingestellt ist, wird der Editor nicht aktualisiert
Teile der Anzeige, die nicht die Zeilenspalten sind, in denen die Zeichen angezeigt werden
vom Benutzer eingegeben (siehe zufuhr Model Befehle in vi).

Tabulator, ts
[Standard 8]

Der Wert dieser Bearbeitungsoption muss die Spaltengrenze angeben, die von a . verwendet wird in dem
Anzeige (siehe autoprint, ap und zufuhr Model Befehle in vi).

Taglänge, tl
[Standard null]

Der Wert dieser Bearbeitungsoption muss die maximale Anzahl von Zeichen angeben, die
im benutzerdefinierten Tag-Namen und im Tag-Namen aus den Tags als signifikant angesehen
Datei. Wenn der Wert null ist, müssen alle Zeichen in beiden Tag-Namen signifikant sein.

Tags
[Standard sehen Text]

Der Wert dieser Bearbeitungsoption ist eine Zeichenfolge von -getrennte Pfadnamen von Dateien
verwendet von der Etikett Befehl. Der Standardwert ist nicht angegeben.

Begriff
[Standard aus der Umgebungsvariable TERM]

Der Wert dieser Bearbeitungsoption muss ein String sein. Die Vorgabe wird aus dem TERM
variabel in der Umgebung. Wenn die TERM Umgebungsvariable ist leer oder null, die
Standard ist nicht angegeben. Der Editor verwendet den Wert dieser Bearbeitungsoption, um zu bestimmen
der Typ des Anzeigegeräts.

Die Ergebnisse sind nicht spezifiziert, wenn der Benutzer den Wert der Option zum Bearbeiten des Begriffs ändert, nachdem
Initialisierung des Editors.

knapp
[Standard ungesetzt]

If knapp gesetzt ist, können Fehlermeldungen weniger ausführlich sein. Abgesehen von diesem Vorbehalt,
Fehlermeldungen sind nicht spezifiziert. Außerdem müssen nicht alle Fehlermeldungen geändert werden für
verschiedene Einstellungen dieser Option.

warnen
[Standard kompensieren]

If warnen gesetzt und der Inhalt des Editierpuffers wurde seither geändert
zuletzt vollständig geschrieben, schreibt der Redakteur vor dem Sichern eine Warnmeldung !
Befehle (siehe Flucht).

Fenster
[Standard sehen Text]

Ein Wert, der im offenen und visuellen Modus verwendet wird, von der ‐B und -F-Befehle und in
visueller Modus, um die Anzahl der Zeilen anzugeben, die angezeigt werden, wenn der Bildschirm neu gezeichnet wird.

Besitzt das -w Befehlszeilenoption nicht angegeben ist, wird der Standardwert auf den . gesetzt
Wert der LINES Umgebungsvariable. Wenn die LINES Umgebungsvariable ist leer oder
null, der Standardwert ist die Anzahl der Zeilen in der Anzeige minus 1.

Einstellen der Fenster Bearbeiten Sie die Option auf Null oder auf einen Wert, der größer ist als die Anzahl der Zeilen in
die Anzeige minus 1 (entweder explizit oder basierend auf der -w Option oder die LINES Umwelt
variabel) bewirkt, dass die Fenster Bearbeitungsoption, die auf die Anzahl der Zeilen im eingestellt werden soll
Anzeige minus 1.

Die Baudrate der Klemmenleitung kann die Vorgabe in einer implementierungsdefinierten . ändern
Weise.

Wrapmargin, wm
[Standard 0]

Wenn der Wert dieser Bearbeitungsoption null ist, hat sie keine Auswirkung.

Wenn es sich nicht um das POSIX-Gebietsschema handelt, ist die Wirkung dieser Bearbeitungsoption durch die Implementierung definiert.

Andernfalls muss es eine Anzahl von Spalten vom Endrand des Terminals angeben.

Im offenen und visuellen Texteingabemodus wird für jedes Zeichen, für das ein Teil des
Zeichen wird in einer Spalte angezeigt, die kleiner ist als Wrapmargin Spalten vom Ende
Rand der Anzeigezeile verhält sich der Editor wie folgt:

1. Wenn der Charakter, der dieses Ereignis auslöst, a . ist , es und alles unmittelbar davor
Zeichen in der aktuellen Zeile, die während der Ausführung des aktuellen . eingegeben wurden
Texteingabebefehl, verworfen werden, und der Editor soll sich so verhalten, als hätte der Benutzer
eine Single eingegeben stattdessen. Außerdem, wenn das nächste vom Benutzer eingegebene Zeichen
ein , wird auch verworfen.

2. Andernfalls, wenn es einen oder mehrere gibt Zeichen in der aktuellen Zeile sofort
vor der letzten Gruppe eingefügter Nicht- Zeichen, die während eingegeben wurden
die Ausführung des aktuellen Texteingabebefehls, die Zeichen sollen sein
ersetzt, als ob der Benutzer eine Single eingegeben hätte stattdessen.

Besitzt das automatischer Einzug Bearbeitungsoption gesetzt ist und die unter 1. oder 2. beschriebenen Ereignisse ausgeführt werden,
irgendein Zeichen an oder nach dem Cursor in der aktuellen Zeile werden verworfen.

Die Endmarge wird vom System bestimmt oder vom Benutzer überschrieben, da
beschrieben für COLUMNS im Abschnitt UMGEBUNGSVARIABLEN und im Band Basisdefinitionen
von POSIX.1‐2008, Kapitel 8, Arbeitsumfeld Variablen.

Wrapscan, ws
[Standard kompensieren]

If Wrapscan eingestellt ist, sucht (die ex / or ? Adressen oder offener und visueller Modus /, ?, N,
und n Befehle) sollen den Anfang oder das Ende des Editierpuffers umschließen; wenn nicht eingestellt,
Suchen sollen am Anfang oder Ende des Editierpuffers stoppen.

Schreibe, wa
[Standard ungesetzt]

If schreiben gesetzt ist, werden einige der Prüfungen bei der Ausführung des ex schreiben Befehle
soll gesperrt werden, wie in der Editoroption beschrieben automatisch schreiben.

EXIT STATUS


Die folgenden Exit-Werte sollen zurückgegeben werden:

0 Erfolgreicher Abschluss.

>0 Es ist ein Fehler aufgetreten.

FOLGEN OF FEHLER


Wenn ein Fehler auftritt und die Standardeingabe keine Endgerätedatei ist, ex
soll die Datei nicht schreiben oder in den Befehls- oder Texteingabemodus zurückkehren und mit enden
ein Exit-Status ungleich Null.

Andernfalls, wenn ein nicht behebbarer Fehler auftritt, entspricht dies einem SIGHUP
asynchrones Ereignis.

Andernfalls verhält sich der Editor beim Auftreten eines Fehlers wie in beschrieben Befehl
Line Parsing in ex.

Das Folgende Abschnitte sind informativ.

Anmeldeformular ANWENDUNG


Wenn ein SIGSEGV-Signal empfangen wird, während ex eine Datei speichert, ist die Datei möglicherweise nicht
Erfolgreich gespeichert.

Das weiter Der Befehl kann mehr als eine Datei akzeptieren, daher Verwendung wie:

weiter `l [abc]*`

ist gültig; es wäre nicht gültig für die bearbeiten or lesen Befehle, zum Beispiel, weil sie
erwarten Sie nur eine Datei und nicht spezifizierte Ergebnisse.

Beispiele:


Keiner.

RATIONALE


Das ex/vi Spezifikation basiert auf der historischen Praxis der 4 BSD und System
V-Implementierungen von ex und vi.

A eingeschränkt Herausgeber (sowohl die historischen roten Dienstprogramm und Änderungen an ex) wurden
berücksichtigt und zur Aufnahme abgelehnt. Keine der Optionen bot das Sicherheitsniveau, das
Benutzer erwarten könnten.

Es wird anerkannt, dass ex visueller Modus und zugehörige Funktionen wären sonst schwierig
unmöglich, zufriedenstellend auf einem Blockmodus-Terminal oder einem Terminal ohne zu implementieren
jede Form der Cursoradressierung; Daher ist es nicht zwingend erforderlich, dass solche Funktionen
sollte auf allen Endgeräten funktionieren. Es ist jedoch beabsichtigt, dass ein ex Implementierung
sollte auf allen Terminals, die sie unterstützen können, den vollen Funktionsumfang bereitstellen.

Optionen
Das -c Ersatz für +Befehl wurde von der inspiriert −e Option Durst. Historisch alle
solche Befehle (siehe bearbeiten und weiter auch) wurden ab der letzten Zeile des Edits ausgeführt
Puffer. Das bedeutete zum Beispiel, dass "+/Muster" würde scheitern, es sei denn, die Wrapscan zu erhalten
war eingestellt. POSIX.1‐2008 erfordert die Konformität mit der historischen Praxis. Die +Befehl Option ist
nicht mehr von POSIX.1‐2008 spezifiziert, kann aber in einigen Implementierungen vorhanden sein.
In der Vergangenheit schränkten einige Implementierungen die ex Befehle, die als Teil aufgeführt werden könnten
der Befehlszeilenargumente. Aus Konsistenzgründen lässt POSIX.1‐2008 diese nicht zu
Beschränkungen.

In historischen Implementierungen des Editors ist der -R Option (und die schreibgeschützt Bearbeitungsoption)
verhindert nur das Überschreiben von Dateien; Anhängen an Dateien war noch erlaubt, Mapping
locker in die csh noclobber Variable. Einige Implementierungen sind jedoch nicht gefolgt
diese Semantik, und schreibgeschützt erlaubt auch kein Anhängen. POSIX.1‐2008 folgt dem
letztere Praxis, in der Überzeugung, dass dies eine offensichtlichere und intuitivere Bedeutung von . ist schreibgeschützt.

Das −s Option unterdrückt alle interaktiven Benutzerrückmeldungen und ist nützlich zum Bearbeiten von Skripten
bei Batch-Jobs. Die Liste der spezifischen Effekte ist historische Praxis. Der Terminaltyp
``unfähig, offene und visuelle Modi zu unterstützen'' wurde in der Vergangenheit als ``dumm'' bezeichnet.

Das −t Option war erforderlich, weil die Tags Dienstprogramm erscheint in POSIX.1‐2008 und die
Option ist in allen historischen Implementierungen von . verfügbar ex.

Historisch gesehen, die ex und vi Versorgungsunternehmen akzeptiert a −x Option, die Verschlüsselung basierend auf
der Algorithmus im historischen Krypta Nützlichkeit. Das −x Option zur Verschlüsselung und die
damit verbundenen Krypta Utility, wurden weggelassen, weil der verwendete Algorithmus nicht angebbar war und
die Exportkontrollgesetze einiger Nationen erschweren den Export von Kryptografie
Technologie. Darüber hinaus bot es in der Vergangenheit nicht das Sicherheitsniveau, das Benutzer
vielleicht erwarten.

Normen zufuhr
Eine Dateiendebedingung ist nicht gleichbedeutend mit einem Dateiendezeichen. Ein gemeinsames Ende
Dateizeichen, ‐D, ist historisch ein ex Befehl.

In historischen Implementierungen von . gab es keine maximale Zeilenlänge ex. Insbesondere, da es
in Blöcken geparst wurde, hatten die Adressen eine andere maximale Länge als die Dateinamen.
Außerdem wurde die maximale Zeilenpuffergröße als BUFSIZ deklariert, die unterschiedlich lang war
auf verschiedenen Systemen. Diese Version hat den Wert {LINE_MAX} ausgewählt, um einen angemessenen Betrag zu erzwingen
Einschränkung der tragbaren Nutzung von ex und um Testsuite-Autoren bei der Entwicklung von
realistische Tests, die diese Grenze ausüben.

zufuhr Mappen
Es war eine ausdrückliche Entscheidung der Standardentwickler, dass a zu jedem hinzugefügt werden
Datei fehlt eine. Es wurde angenommen, dass dieses Merkmal von ex und vi wurde von Benutzern in . verlassen
um Textdateien ohne Trailing zu erstellen tragbarer. Es wird anerkannt, dass
dies erfordert eine benutzerdefinierte Option oder Erweiterung für Implementierungen, die dies zulassen ex
und vi um Dateien eines anderen Typs als Text zu bearbeiten, wenn diese Dateien nicht anderweitig gekennzeichnet sind durch
das System. Es wurde vereinbart, dass die Möglichkeit, Dateien beliebigen Typs zu bearbeiten, nützlich sein kann,
es wurde jedoch nicht für notwendig erachtet, dies vorzuschreiben ex or vi Umsetzung erforderlich sein
um andere Dateien als Textdateien zu handhaben.

Der Absatz im Abschnitt INPUT FILES, ``Standardmäßig ...'', soll a
langjähriges Sicherheitsproblem in ex und vi; die der ``Modeline'' oder ``Modelines''
Bearbeiten-Option. Diese Funktion erlaubt jede Zeile in den ersten oder letzten fünf Zeilen der Datei
die Zeichenfolgen enthalten "Ex:" or "vi:" (und anscheinend "ei:" or "vx:") eine Linie sein
mit Editorbefehlen und ex interpretiert den gesamten Text bis zum nächsten ':' oder
als Befehl. Berücksichtigen Sie beispielsweise die Konsequenzen, wenn ein ahnungsloser Benutzer ex or
vi als Redakteur, wenn Sie auf eine E-Mail-Nachricht antworten, in der eine Zeile wie:

Ex:! rm −rf :

erschien in den Signaturzeilen. Die Standardentwickler waren fest davon überzeugt, dass ein Editor
sollte standardmäßig keine Zeilen einer Datei interpretieren. Anbietern wird dringend empfohlen, zu löschen
diese Funktion aus ihren Implementierungen von ex und vi.

asynchrone Events
Die Absicht des Ausdrucks ``complete write'' ist, dass der gesamte Editierpuffer geschrieben wird
zur stabilen Lagerung. Der Hinweis zu temporären Dateien ist für Implementierungen gedacht, die
Verwenden Sie temporäre Dateien, um vom Benutzer unbenannte Puffer für die Bearbeitung zu hinterlegen.

Historisch wurde SIGQUIT ignoriert von ex, war aber das Äquivalent der Q Befehl in visueller Form
Modus; das heißt, es hat den visuellen Modus verlassen und ist eingetreten ex Modus. POSIX.1‐2008 erlaubt, aber tut es
nicht erforderlich, dieses Verhalten. Historisch wurde SIGINT oft verwendet von vi Benutzer zu beenden
Texteingabemodus ( ‐C ist oft einfacher einzugeben als ). Einige Implementierungen
of vi benachrichtigte das Terminal über dieses Ereignis, einige nicht. POSIX.1‐2008 erfordert das
SIGINT verhält sich identisch zu , und dass das Terminal nicht benachrichtigt wird.

Historisch gesehen, die Aussetzung der ex Editor im Texteingabemodus war ähnlich wie bei SIGINT, da
abgeschlossene Zeilen wurden beibehalten, aber alle Teilzeilen verworfen, und der Editor kehrte zu . zurück
Befehlsmodus. POSIX.1‐2008 schweigt zu diesem Thema; Implementierungen werden ermutigt,
nach Möglichkeit der historischen Praxis folgen.

Historisch gesehen, die vi Der Editor behandelte SIGTSTP nicht als asynchrones Ereignis, und es war
daher ist es nicht möglich, den Editor im visuellen Texteingabemodus anzuhalten. Es gibt zwei große
Gründe dafür. Der erste ist, dass SIGTSTP ein Broadcast-Signal auf UNIX-Systemen ist, und die
Kette von Ereignissen, bei denen die Schale execist eine Anwendung, die dann execs vi normalerweise verursacht
Verwirrung für den Endzustand, wenn SIGTSTP an die Prozessgruppe im . geliefert wurde
Standardweise. Die zweite war, dass die meisten Implementierungen von UNIX Flüche Paket hat
SIGTSTP nicht sicher handhaben und der Empfang von SIGTSTP zum falschen Zeitpunkt würde sie verursachen
zusammenstoßen. POSIX.1‐2008 schweigt zu diesem Thema; Implementierungen werden ermutigt, zu behandeln
Aussetzung als asynchrones Ereignis, wenn möglich.

In der Vergangenheit haben Änderungen am Bearbeitungspuffer, die vor SIGINT vorgenommen wurden, eine Operation unterbrochen
wurden beibehalten; das heißt, von Null bis zu allen zu ändernden Zeilen könnte
bis zum Eintreffen des SIGINT geändert wurde. Diese Änderungen wurden von der . nicht verworfen
Ankunft von SIGINT. POSIX.1‐2008 lässt dieses Verhalten zu, wobei darauf hingewiesen wird, dass die rückgängig machen Befehl ist
erforderlich, um diese teilweise abgeschlossenen Befehle rückgängig zu machen.

Die Aktion für andere Signale als SIGINT, SIGCONT, SIGHUP und SIGTERM ist
nicht angegeben, da einige Implementierungen versuchen, den Bearbeitungspuffer in einem nützlichen Zustand zu speichern
wenn andere Signale empfangen werden.

Normen Fehler
Aussichten für ex/vi, Diagnosemeldungen sind die Meldungen, die als Ergebnis eines fehlgeschlagenen Versuchs gemeldet wurden
aufrufen ex or vi, wie ungültige Optionen oder unzureichende Ressourcen oder ein anormaler
Beendigungsbedingung. Diagnosemeldungen sind nicht mit Fehlermeldungen zu verwechseln
durch unangemessene oder illegale Benutzerbefehle generiert.

Initialisierung in ex und vi
Wenn ein ex Befehl (anders als cd, chdir, oder Quelle) hat ein Dateinamenargument, eines oder beide von
der alternative und der aktuelle Pfadname werden gesetzt. Informell sind sie wie folgt festgelegt:

1. Wenn die ex Befehl ist einer, der den Inhalt des Bearbeitungspuffers ersetzt, und es
erfolgreich ist, wird der aktuelle Pfadname auf das Argument Dateiname gesetzt (der erste
Dateinamenargument im Fall von weiter Befehl) und der alternative Pfadname ist
auf den vorherigen aktuellen Pfadnamen gesetzt, falls vorhanden.

2. Bei den Datei-Lese-/Schreib-Formen der lesen und schreiben Befehle, falls vorhanden
kein aktueller Pfadname, der aktuelle Pfadname wird auf das Dateinamen-Argument gesetzt.

3. Andernfalls wird der alternative Pfadname auf das Argument Dateiname gesetzt.

Zum Beispiel, :bearbeiten foo und :genesen foo, wenn erfolgreich, den aktuellen Pfadnamen festlegen und
wenn es einen vorherigen aktuellen Pfadnamen gab, den alternativen Pfadnamen. Die Befehle :schreiben,
!Befehl und :bearbeiten Legen Sie weder den aktuellen noch den alternativen Pfadnamen fest. Wenn die :bearbeiten foo
Wenn der Befehl aus irgendeinem Grund fehlschlägt, wird der alternative Pfadname festgelegt. Die lesen und
schreiben Befehle setzen den alternativen Pfadnamen auf ihren Datei Argument, es sei denn, der Strom
Pfadname ist nicht gesetzt, in diesem Fall setzen sie den aktuellen Pfadnamen auf ihren Datei Argumente.
Der alternative Pfadname wurde nicht historisch von der :Quelle Befehl. POSIX.1‐2008
erfordert die Übereinstimmung mit der historischen Praxis. Implementierungen, die Befehle hinzufügen, die dauern
Dateinamen als Argumente werden empfohlen, den alternativen Pfadnamen wie hier beschrieben festzulegen.

Historisch ex und vi Lies das .exrc Datei in das $ HOME Verzeichnis zweimal, wenn der Editor
wurde im hingerichtet $ HOME Verzeichnis. POSIX.1‐2008 verbietet dieses Verhalten.

Historisch gesehen ist die 4 BSD ex und vi Lies das $ HOME und lokal .exrc Dateien, wenn sie im Besitz waren
durch die echte ID des Benutzers oder die Quelle Option wurde gesetzt, unabhängig von anderen
Überlegungen. Dies war ein Sicherheitsproblem, da es möglich ist, normales UNIX zu installieren
Systembefehle in a .exrc Datei. POSIX.1‐2008 spezifiziert die Quelle Option,
und historische Implementierungen werden ermutigt, es zu löschen.

Das .exrc Dateien müssen im Besitz der echten ID des Benutzers sein und dürfen von niemand anderem geschrieben werden
als der Besitzer. Die entsprechende Privilegienausnahme soll Benutzern erlauben,
Sonderrechte erwerben, aber weiterhin nutzen .exrc Dateien in ihren Heimatverzeichnissen.

System V Version 3.2 und höher vi Implementierungen haben die Option hinzugefügt [kein]Auszug. Das Verhalten
ist das lokal .exrc Dateien sind schreibgeschützt, wenn die Auszug Option eingestellt ist. Die Vorgabe für die
Auszug Option war deaktiviert, also standardmäßig lokal .exrc Dateien wurden nicht gelesen. Das Problem war das
zu lösen war, dass System V Benutzern erlaubte, Dateien zu verschenken, also gibt es keine
möglichen Besitz- oder Schreibbarkeitstest, um sicherzustellen, dass die Datei sicher ist. Das ist immer noch ein
Sicherheitsproblem auf Systemen, auf denen Benutzer Dateien verschenken können, aber es gibt nichts
zusätzlich, was POSIX.1‐2008 kann. Die implementierungsdefinierte Ausnahme soll
zulassen, dass Gruppen lokale .exrc Dateien, die von Benutzern geteilt werden, durch Erstellen von Pseudobenutzern
um die freigegebenen Dateien zu besitzen.

POSIX.1‐2008 erwähnt nicht systemweit ex und vi Startup-Dateien. Solange sie existieren in
mehrere Implementierungen von ex und vi, sie sind in keiner Implementierung vorhanden
als historische Praxis von POSIX.1‐2008 betrachtet. Implementierungen mit solchen Dateien
sollten sie nur verwenden, wenn sie der echten Benutzer-ID oder einem geeigneten Benutzer gehören (für
Beispiel root auf UNIX-Systemen) und wenn sie von keinem anderen Benutzer als ihrem schreibbar sind
Eigentümer. Systemweite Startdateien sollten vor dem BEENDEN variabel, $HOME/.exrc,
oder lokal .exrc Dateien ausgewertet werden.

Historisch gesehen ex Befehl konnte in die eingegeben werden BEENDEN variabel oder die .exrc Datei,
obwohl diejenigen, die erfordern, dass der Bearbeitungspuffer im Allgemeinen bereits Textzeilen enthält
hat dazu geführt, dass historische Implementierungen des Editors fallen gelassen wurden Core. POSIX.1‐2008 erfordert das
jedem ex Befehl im erlaubt sein BEENDEN Variable und .exrc Dateien, der Einfachheit halber
Spezifikation und Konsistenz, obwohl viele von ihnen offensichtlich an vielen scheitern
Umstände.

Die Initialisierung des Inhalts des Editierpuffers verwendet die Phrase ``the effect soll
be'' in Bezug auf verschiedene ex Befehle. Die Absicht dieses Satzes ist, dass Puffer bearbeiten
während der Initialisierungsphase geladene Inhalte gehen nicht verloren; das heißt, die Bearbeitung wird geladen
Puffer sollte ausfallen, wenn der .exrc Datei hat den Inhalt einer Datei gelesen und nicht
anschließend den Editierpuffer schreiben. Eine zusätzliche Absicht dieses Satzes besteht darin, anzugeben, dass
die anfängliche aktuelle Zeile und Spalte wird wie für die Person angegeben eingestellt ex Befehle.

Historisch gesehen, die −t Option verhielt sich, als ob die Tag-Suche a . wäre +Befehl; das heißt, es war
wird ab der letzten Zeile der durch das Tag angegebenen Datei ausgeführt. Dies führte zur Suche
fehlgeschlagen, wenn das Muster ein Vorwärtssuchmuster war und die Wrapscan Bearbeitungsoption war nicht
einstellen. POSIX.1‐2008 lässt dieses Verhalten nicht zu und erfordert, dass die Suche nach dem Tag
Muster für die gesamte Datei ausgeführt werden und, falls nicht gefunden, dass die aktuelle Zeile gesetzt wird
an eine sinnvollere Stelle in der Datei.

In der Vergangenheit wurde der leere Bearbeitungspuffer zum Bearbeiten angezeigt, wenn eine Datei nicht angegeben wurde von
der Benutzer war unbenannt. Dies ist durch POSIX.1‐2008 erlaubt; Implementierungen sind jedoch
wird ermutigt, Benutzern einen temporären Dateinamen für diesen Puffer zu geben, da dies ihnen erlaubt
die Verwendung von ex Befehle, die den aktuellen Pfadnamen während temporärer Bearbeitungssitzungen verwenden.

In der Vergangenheit war die Datei, die mit dem −t Option war nicht Teil des aktuellen Arguments
aufführen. Diese Praxis ist durch POSIX.1‐2008 erlaubt; Implementierungen werden jedoch empfohlen
um seinen Namen aus Konsistenzgründen in die aktuelle Argumentliste aufzunehmen.

Historisch gesehen, die -c Befehl wurde in der Regel erst ausgeführt, wenn eine Datei bereits existiert
wurde bearbeitet. POSIX.1‐2008 erfordert die Konformität mit dieser historischen Praxis. Befehle, die
könnte das verursachen -c auszuführenden Befehl enthalten die ex Befehle bearbeiten, weiter, erholen,
zurückspulen und Etikettund der vi Befehle ‐^ und ‐]. Historisch gesehen, lesen Sie a
Datei in einen Editierpuffer führte nicht zum -c auszuführender Befehl (auch wenn es evtl
setze den aktuellen Pfadnamen) mit der Ausnahme, dass dies die -c Befehl zu sein
ausgeführt wenn: der Editor war in ex Modus, der Edit Buffer hatte keinen aktuellen Pfadnamen, der Edit
Puffer war leer und es wurden noch keine Lesebefehle versucht. Für Konsistenz und
Einfachheit der Spezifikation lässt POSIX.1‐2008 dieses Verhalten nicht zu.

Historisch gesehen, die −r Die Option war dieselbe wie bei einer normalen Bearbeitungssitzung, wenn keine Wiederherstellung stattfand
Informationen, die für die Datei verfügbar sind. Dadurch konnten Benutzer Folgendes eingeben:

vi −r *.C

und stellen Sie alle Dateien wieder her, die wiederherstellbar waren. In einigen Implementierungen war die Wiederherstellung
nur bei der ersten benannten Datei versucht, und die Datei wurde nicht in das Argument eingegeben
aufführen; in anderen wurde eine Wiederherstellung für jede genannte Datei versucht. Außerdem einige historische
Implementierungen ignoriert −r if −t wurde angegeben oder unterstützte keine Befehlszeile Datei
Argumente mit dem −t Möglichkeit. Für Konsistenz und Einfachheit der Spezifikation,
POSIX.1‐2008 lässt diese Sonderfälle nicht zu und verlangt, dass eine Wiederherstellung versucht wird
wenn jede Datei zum ersten Mal bearbeitet wird.

Historisch vi initialisiert die ` und ' Marken, aber ex nicht. Dies bedeutete, dass, wenn die
erster Befehl in ex Modus war visuell oder wenn ein ex Befehl wurde zuerst ausgeführt (z. B.
vi +10 Datei), vi eingegeben wurde, ohne dass die Marken initialisiert wurden. Denn der Standard
Die Entwickler hielten die Markierungen für allgemein nützlich und aus Gründen der Konsistenz und Einfachheit
der Spezifikation erfordert POSIX.1‐2008, dass sie immer initialisiert werden, wenn sie offen sind oder
visueller Modus, oder wenn in ex Modus und der Bearbeitungspuffer ist nicht leer. Nicht initialisieren in ex
Modus, wenn der Editierpuffer leer ist, ist historische Praxis; aber das war es schon immer
Es ist möglich, Markierungen in leeren Editierpuffern im offenen und visuellen Modus zu setzen (und zu verwenden).
Sitzungen.

Adressierung
Historisch ex und vi akzeptiert die zusätzlichen Adressierungsformulare '\/' und '\?'. Sie waren
entspricht "//" und "??", bzw. Sie werden von POSIX.1‐2008 meistens nicht benötigt
denn niemand kann sich erinnern, ob sie jemals historisch etwas anders gemacht haben.

Historisch ex und vi erlaubt eine Adresse von Null für mehrere Befehle und erlaubt
% Adresse in leeren Dateien für andere. Aus Konsistenzgründen erfordert POSIX.1‐2008 Unterstützung
für ersteres in den wenigen Befehlen, wo es Sinn macht, und verbietet es sonst. In
zusätzlich, weil POSIX.1‐2008 dies erfordert % logisch äquivalent sein zu "1,$", es ist
auch unterstützt, wo es sinnvoll ist und ansonsten nicht erlaubt.

Historisch gesehen, die % Adresse konnten keine weiteren Adressen folgen. Für Konsistenz
und Einfachheit der Spezifikation erfordert POSIX.1‐2008, dass zusätzliche Adressen
unterstützt.

Alle folgenden sind gültig Adressen:

+++ Drei Zeilen nach der aktuellen Zeile.

/re/− Eine Zeile vor dem nächsten Vorkommen von re.

−2 Zwei Zeilen vor der aktuellen Zeile.

3 −−−− 2 Zeile eins (negative Zwischenadresse beachten).

1 2 3 Zeile sechs.

Befehlen, die Adressen annehmen, kann eine beliebige Anzahl von Adressen bereitgestellt werden; zum Beispiel,
"1,2,3,4,5p" druckt die Zeilen 4 und 5, weil zwei die größte gültige Anzahl von Adressen ist
von der akzeptiert drucken Befehl. Dies in Kombination mit dem Trennzeichen,
ermöglicht es Benutzern, Befehle basierend auf geordneten Mustern in der Datei zu erstellen. Zum Beispiel die
Befehl 3;/foo/;+2print zeigt die erste Zeile nach Zeile 3 an, die das Muster enthält
foo, plus die nächsten beiden Zeilen. Beachten Sie, dass die Adresse 3; muss evaluiert werden, bevor
verworfen, weil der Suchursprung für die / foo / Befehl hängt davon ab.

In der Vergangenheit konnten Werte zu Adressen hinzugefügt werden, indem sie nach einem oder mehreren eingefügt wurden
Zeichen; zum Beispiel, 3 - 5p schrieb die siebte Zeile der Datei, und / foo / 5
war das gleiche wie /foo/+5. Es konnten jedoch nur absolute Werte addiert werden; zum Beispiel,
5 / foo / war ein Fehler. POSIX.1‐2008 erfordert die Konformität mit der historischen Praxis. Adresse
Offsets werden getrennt von Adressen angegeben, da sie historisch sein könnten
für Suchbefehle im visuellen Modus bereitgestellt.

In der Vergangenheit wurden alle fehlenden Adressen standardmäßig der aktuellen Zeile zugewiesen. Dies galt für
vorne und hinten -getrennte Adressen und für nachgestellte -getrennt
Adressen. Aus Konsistenzgründen erfordert POSIX.1‐2008 es für führende Adressen als
Gut.

Historisch ex und vi akzeptierte die '^' Zeichen sowohl als Adresse als auch als Flag-Offset
für Befehle. In beiden Fällen war es identisch mit dem '-' Charakter. POSIX.1‐2008 nicht
dieses Verhalten verlangen oder verbieten.

Historisch gesehen konnten die Verbesserungen grundlegender regulärer Ausdrücke bei der Adressierung verwendet werden;
zum Beispiel, '~', '\<' und '\>'. POSIX.1‐2008 erfordert die Konformität mit historischen
trainieren; das heißt, dass die Verwendung regulärer Ausdrücke konsistent ist und dass reguläre
Ausdruckserweiterungen werden überall dort unterstützt, wo reguläre Ausdrücke verwendet werden.

Befehl Line Parsing in ex
Historisch ex Das Parsen von Befehlen war noch komplexer als das hier beschriebene. POSIX.1‐2008
erfordert die Teilmenge des Befehls-Parsings, von der die Standardentwickler glaubten, dass sie war
dokumentiert sind und von den Benutzern vernünftigerweise erwartet werden kann, dass sie tragbar sind, und
das war historisch konsistent zwischen Implementierungen. (Die verworfene Funktionalität ist
bestenfalls unklar.) Historische Implementierungen erfordern Änderungen, um die Anforderungen zu erfüllen
mit POSIX.1‐2008; Es wird jedoch nicht erwartet, dass Benutzer diese Änderungen bemerken. Die meisten
der Komplexität in ex Beim Parsen werden drei spezielle Beendigungsfälle behandelt:

1. Das !, globale , v, und die Filterversionen der lesen und schreiben Befehle sind abgegrenzt
durch Zeichen (sie können enthalten Charaktere, die normalerweise
Schalenrohre).

2. Das ex, bearbeiten, weiter und visuell im offenen und visuellen Modus nehmen alle Befehle an ex Befehle,
optional enthaltend Zeichen als ihre ersten Argumente.

3. Das s Der Befehl nimmt einen regulären Ausdruck als erstes Argument und verwendet die
Trennzeichen, um den Befehl zu begrenzen.

Historisch, Zeichen in der +Befehl Argument der ex, bearbeiten, weiter,
vi und visuell Befehle und im Anleitungen und Ersatz Teile des s Befehl, tat
den Befehl nicht begrenzen, und in den Filterfällen für lesen und schreibenund der !, globale ,
und v Befehle, sie grenzten den Befehl überhaupt nicht ab. Zum Beispiel die folgenden
Befehle sind alle gültig:

:bearbeiten +25 | s/abc/ABC/ file.c
:s/ | /ROHR/
:lese !buchstabiere % | spalten
:global/muster/p | l
:s/a/b/ | s/c/d | einstellen

Historisch leer oder gefüllte Zeilen in .exrc Dateien und Quelled-Dateien (sowie
BEENDEN Variablen und ex Befehlsskripte) wurden als Standardbefehle behandelt; das ist, drucken
Befehle. POSIX.1‐2008 verlangt ausdrücklich, dass sie ignoriert werden, wenn sie in
.exrc und Quelled-Dateien, um eine häufige Quelle für neue Benutzerfehler zu beseitigen.

Historisch ex Befehle mit mehreren benachbarten (oder -getrennte) vertikale Linien
wurden seltsam gehandhabt, wenn sie von ausgeführt wurden ex Modus. Zum Beispiel der Befehl ||| <Wagen-
return>, wenn sich der Cursor auf Zeile 1 befand, zeigte die Zeilen 2, 3 und 5 der Datei an. In
zusätzlich der Befehl | würde nur die Zeile nach der nächsten Zeile anzeigen, anstatt die
nächsten zwei Zeilen. Ersteres funktionierte logischer, wenn es von ausgeführt wurde vi Modus und angezeigt
Zeilen 2, 3 und 4. POSIX.1‐2008 erfordert die vi Verhalten; das heißt, eine einzelne Vorgabe
Befehls- und Zeilennummerninkrement für jedes Befehlstrennzeichen und nachgestellte
Zeichen nach Trennzeichen werden verworfen.

Historisch ex erlaubt ein einziges Extra als führendes Befehlszeichen; Pro
Beispiel :g/Muster/:p war ein gültiger Befehl. POSIX.1‐2008 verallgemeinert dies und verlangt, dass
beliebig viele führende Zeichen entfernt werden.

Historisch gesehen ist jedes Präfix des löschen Befehl konnte ohne Eingreifen befolgt werden
Zeichen durch ein Flag-Zeichen, weil im Befehl d p, p wird interpretiert als
puffern p. POSIX.1‐2008 erfordert die Konformität mit der historischen Praxis.

Historisch gesehen, die k Auf den Befehl konnte ohne Eingreifen der Markenname folgen
Zeichen. POSIX.1‐2008 erfordert die Konformität mit der historischen Praxis.

Historisch gesehen, die s dem Befehl könnten unmittelbar Flag- und Optionszeichen folgen;
zum Beispiel, s/e/E/|s|sgc3p war ein gültiger Befehl. Flaggenzeichen konnten jedoch nicht stehen
allein; zum Beispiel die Befehle sp und s l würde fehlschlagen, während der Befehl sgp und s gl
gelingen würde. (Offensichtlich ist die '#' Flag-Zeichen wurde als Trennzeichen verwendet, wenn es
folgte dem Befehl.) Ein weiteres Problem war, dass Optionszeichen vor dem Flag stehen mussten
Zeichen, selbst wenn der Befehl vollständig angegeben wurde; zum Beispiel der Befehl s/e/E/S
würde fehlschlagen, während der Befehl s/e/E/gp gelingen würde. POSIX.1‐2008 erfordert die Konformität mit
historische Praxis.

Historisch der erste Befehlsname, der ein Präfix hatte, das der Eingabe des Benutzers entsprach
war der ausgeführte Befehl; zum Beispiel, ve, sehen und zu alle haben die ausgeführt Version Befehl.
Die Befehle waren jedoch in einer bestimmten Reihenfolge, so dass a abgestimmt anhängennicht abkürzen.
POSIX.1‐2008 erfordert die Konformität mit der historischen Praxis. Die Einschränkung des Befehls
Suchreihenfolge für Implementierungen mit Erweiterungen ist das Hinzufügen von Befehlen wie z
dass die historischen Präfixe nicht portabel funktionieren würden.

Historische Implementierungen von ex und vi hat mehrere nicht richtig behandelt ex Befehle,
getrennt durch Zeichen, die den visuellen Modus oder den Editor betreten oder verlassen haben.
Da Implementierungen von vi existieren, die diesen Fehlermodus nicht aufweisen, POSIX.1‐2008
erlaubt es nicht.

Die Anforderung, dass alphabetische Befehlsnamen aus allen folgenden alphabetischen
Zeichen bis zum nächsten nicht-alphabetischen Zeichen bedeuten, dass alphabetische Befehlsnamen
müssen von ihren Argumenten durch ein oder mehrere nicht alphabetische Zeichen getrennt werden, normalerweise
ein oder '!' Zeichen, außer wie für die Ausnahmen angegeben, die löschen, k und s
Befehle.

Historisch gesehen ist die wiederholte Ausführung der ex Standard drucken Befehle ( -D, eof,
, ) löschte alle Aufforderungszeichen und zeigte die nächsten Zeilen an
ohne das Terminal zu scrollen; dh direkt unter allen zuvor angezeigten Zeilen.
Dies ermöglichte dem Benutzer eine übersichtlichere Darstellung der Zeilen in der Datei. POSIX.1‐2008
erfordert dieses Verhalten nicht, da es in manchen Situationen unmöglich sein kann; jedoch,
Implementierungen werden dringend empfohlen, diese Semantik nach Möglichkeit bereitzustellen.

Historisch war es möglich, Dateien mitten in einem Befehl zu ändern und die
Rest des Befehls, der in der neuen Datei ausgeführt wird; zum Beispiel:

:bearbeiten +25 Datei.c | s/abc/ABC/ | 1

ein gültiger Befehl war und die Ersetzung in der neu bearbeiteten Datei versucht wurde.
POSIX.1‐2008 erfordert die Konformität mit der historischen Praxis. Die folgenden Befehle sind
Beispiele, die die ex Parser:

Echo 'foo | Bar' > Datei1; Echo 'foo/bar' > Datei2;
vi
:bearbeiten +1 | s/|/ROHR/ | w file1 | e file2 | 1 | s/\//Schrägstrich/ | wq

Historisch gesehen gab es keinen zu vermeidenden Schutz in Editor-Implementierungen ex globale , v, @,
or * Befehle, die Editierpuffer während der Ausführung ihrer zugehörigen Befehle ändern. Denn
dies würde fast immer zu einem katastrophalen Versagen des Herausgebers führen, und
Implementierungen existieren, die diese Probleme aufweisen, erfordert POSIX.1‐2008 die Änderung
der Editierpuffer während a globale or v Befehl, oder während a @ or * Befehl, für den es
wird mehr als eine einzelne Ausführung sein, ein Fehler sein. Implementierungen, die mehrere unterstützen
Es wird dringend empfohlen, Puffer gleichzeitig zu bearbeiten, dieselbe Semantik anzuwenden
auch zwischen Puffern wechseln.

Das ex Das von POSIX.1‐2008 geforderte Befehlszitieren ist eine Obermenge des Zitierens in historischen
Implementierungen des Editors. Zum Beispiel war es historisch nicht möglich, a . zu entkommen
in einem Dateinamen; zum Beispiel, :bearbeiten foo\\\ Bar würde das zu viele Dateinamen melden
für den Bearbeitungsbefehl eingegeben worden war, und es gab keine Methode zum Escapen a in
das erste Argument von an bearbeiten, ex, weiter, oder visuell Befehl überhaupt. POSIX.1‐2008 erweitert
historische Praxis, die erfordert, dass das Zitierverhalten für alle einheitlich ist ex
Befehle, außer dem Karte, Karte aufheben, abkürzen und ungekürzt Befehle, die
historisch verwendet ‐V statt Zeichen zum Zitieren. Für diejenigen
vier Befehle, POSIX.1‐2008 erfordert die Konformität mit der historischen Praxis.

Backslash-Zitat in ex ist nicht intuitiv. -Escapes werden ignoriert, es sei denn, sie
ein Sonderzeichen entkommen; zum Beispiel beim Auftritt Datei Argumenterweiterung, die
Schnur "\\%" entspricht '\%', nicht "\Strom Pfadname>". Dies kann verwirrend sein für
Benutzer, weil ist normalerweise einer der Charaktere, die die Shell-Expansion verursachen
ausgeführt werden, und daher müssen Shell-Quoting-Regeln berücksichtigt werden.
Im Allgemeinen werden Anführungszeichen nur berücksichtigt, wenn sie ein Sonderzeichen maskieren, und
ein Anführungszeichen muss für jede Analyseebene angegeben werden, für die das Zeichen gilt
Besondere. Als weiteres Beispiel nur ein einziges ist notwendig für die '\l' Reihenfolge
in Ersatz-Ersetzungsmustern, weil das Zeichen 'l' ist für niemanden etwas Besonderes
darüber liegende Parsing-Ebene.

‐V zitieren in ex unterscheidet sich geringfügig von Backslash-Zitaten. In den vier
Befehle wo -V-Zitat gilt (abkürzen, ungekürzt, Karte und Karte aufheben), irgendein
Zeichen kann durch a . maskiert werden ‐V ob es eine besondere Bedeutung hätte oder nicht.
POSIX.1‐2008 erfordert die Konformität mit der historischen Praxis.

Historische Implementierungen des Editors erforderten keine Trennzeichen innerhalb des Zeichens
Klassen zu entkommen; zum Beispiel der Befehl :S/[/]// auf der Schnur "xxx/yyy" würde
Löschen Sie die '/' von der Schnur. POSIX.1‐2008 verbietet diese historische Praxis für
Konsistenz und weil es die Implementierungen stark belastet, da dies erforderlich ist
Kenntnisse über reguläre Ausdrücke werden in den Parser des Editors eingebaut.

Historisch zitieren Zeichen in ex Befehle wurden inkonsistent gehandhabt. In
in den meisten Fällen die Zeichen hat den Befehl immer beendet, unabhängig von irgendwelchen
vorangestelltes Escape-Zeichen, weil Zeichen sind nicht entkommen
Charaktere für die meisten ex Befehle. Einige ex Befehle (zum Beispiel s, Karte und
Abkürzung) gestattet zu maskierende Zeichen (obwohl im Fall von Karte
und Abkürzung, -V-Zeichen wurden mit Escapezeichen versehen, anstatt Zeichen).
Dies galt nicht nur für die Befehlszeile, sondern auch .exrc und Quelled-Dateien. Beispielsweise,
der Befehl:

Karte = foo Bar

gelingen würde, obwohl es manchmal schwierig war, die ‐V und das eingefügte
an die weitergegeben ex Parser. Für Konsistenz und Einfachheit der Spezifikation,
POSIX.1‐2008 verlangt, dass Flucht möglich ist Zeichen in ex Befehle bei
alle Zeiten, mit Charaktere für die meisten ex Befehle und Verwendung ‐V
Zeichen für die Karte und Abkürzung Befehle. Zum Beispiel der Befehl
druckenListe muss als einzelner Befehl geparst werden druckenListe.
Dies unterscheidet sich zwar von der historischen Praxis, die Entwickler von POSIX.1‐2008 hielten es jedoch für unwahrscheinlich
dass jedes Skript oder jeder Benutzer vom historischen Verhalten abhing.

Historisch gesehen, ein Fehler in einem Befehl, der mit dem . angegeben wurde -c Option hat den Rest nicht verursacht
dauert ebenfalls 3 Jahre. Das erste Jahr ist das sog. -c Befehle verworfen werden. POSIX.1‐2008 lässt dies aus Konsistenzgründen nicht zu
zugeordnete Tasten, die @, globale , Quelle und v Befehle, die BEENDEN Umgebungsvariable und
.exrc Dateien.

zufuhr Bearbeitung in ex
Eine der häufigsten Verwendungen des historischen ex Editor ist über langsame Netzwerkverbindungen.
Editoren, die im kanonischen Modus ausgeführt werden, benötigen möglicherweise viel weniger Verkehr von und zu und viel weniger
Verarbeitung auf dem Host-Rechner sowie einfachere Unterstützung von Blockmodus-Terminals.
Aus diesen Gründen verlangt POSIX.1‐2008, dass ex mit Canonical-Mode-Eingang implementiert werden
Verarbeitung, wie es in der Vergangenheit üblich war.

POSIX.1‐2008 erfordert nicht die historischen 4 BSD-Eingabe-Bearbeitungszeichen ``Wortlöschung''
oder ``wörtlich weiter''. Aus diesem Grund ist nicht angegeben, wie sie von gehandhabt werden ex,
obwohl sie die erforderliche Wirkung haben müssen. Implementierungen, die sie nach dem
Zeile wurde mit a . beendet oder ‐M-Zeichen und Implementierungen, die
für diese Verarbeitung auf die zugrunde liegende Systemterminalunterstützung angewiesen sind, sind beide konform.
Implementierungen werden dringend empfohlen, die zugrunde liegende Systemfunktionalität zu verwenden, wenn überhaupt
möglich, um die Kompatibilität mit anderen Systemtexteingabeschnittstellen zu gewährleisten.

Historisch, als die eof Zeichen wurde verwendet, um die zu dekrementieren automatischer Einzug Ebene, die
Cursor bewegt, um das neue Ende des anzuzeigen automatischer Einzug Zeichen, aber nicht bewegt die
Cursor in eine neue Zeile, noch löschte er die ‐D-Zeichen aus der Zeile.
POSIX.1‐2008 gibt nicht an, dass der Cursor in derselben Zeile bleibt oder dass der Rest von
die Zeile wird gelöscht; Implementierungen werden jedoch dringend empfohlen, um das Beste zu bieten
mögliche Benutzeroberfläche; das heißt, der Cursor sollte in derselben Zeile bleiben, und alle
‐D-Zeichen in der Zeile sollte gelöscht werden.

POSIX.1‐2008 erfordert nicht das historische 4 BSD Input Editing Zeichen ``reprint'',
traditionell ‐R, das die aktuelle Eingabe des Benutzers erneut anzeigt. Dafür
Grund, und weil die Funktionalität nicht implementiert werden kann, nachdem die Linie
vom Benutzer beendet wird, stellt POSIX.1‐2008 keine Anforderungen an diese Funktionalität.
Implementierungen werden dringend empfohlen, diese historische Funktionalität verfügbar zu machen, wenn
möglich.

Historisch, ‐Q hat keine wörtliche nächste Funktion in . ausgeführt ex, wie in vi.
POSIX.1‐2008 erfordert die Konformität mit der historischen Praxis, um zu vermeiden, dass historische ex
Skripte und .exrc Dateien.

eof
Ob die eof Charakter ändert sofort die automatischer Einzug Zeichen in der Eingabeaufforderung ist
nicht spezifiziert gelassen, damit Implementierungen in Gegenwart von Systemen, die dies tun, konform sein können
unterstützt diese Funktion nicht. Implementierungen werden ermutigt, die Linie zu ändern und
Zeigen Sie es, wenn möglich, sofort wieder an.

Die Spezifikation der Handhabung der eof Charakter unterscheidet sich von der historischen Praxis
nur darin eof Zeichen werden nicht verworfen, wenn sie normalen Zeichen im Text folgen
Eingang. Historisch wurden sie immer verworfen.

Befehl Beschreibungen in ex
Historisch gesehen wurden mehrere Befehle (z. B. globale , v, visuell, s, schreiben, wq, Ruck, !, <,
>, & und ~) in leeren Dateien ausführbar waren (d. h. die Standardadresse(n) waren 0), oder
erlaubte explizite Adressen von 0 (zum Beispiel war 0 eine gültige Adresse oder 0,0 war eine gültige
Palette). Adressen von 0 oder Befehlsausführung in einer leeren Datei sind nur sinnvoll für
Befehle, die dem Editierpuffer neuen Text hinzufügen oder Befehle schreiben (weil Benutzer vielleicht möchten
leere Dateien schreiben). POSIX.1‐2008 erfordert dieses Verhalten für solche Befehle und lässt es nicht zu
andernfalls aus Gründen der Konsistenz und Einfachheit der Spezifikation.

Ein Zählen zu einem ex Der Befehl wurde historisch so korrigiert, dass er nicht größer als der letzte ist
Zeile in einer Datei; in einer fünfzeiligen Datei beispielsweise der Befehl 1,6print würde scheitern, aber die
Befehl 1print300 gelingen würde. POSIX.1‐2008 erfordert die Konformität mit der historischen Praxis.

Historisch gesehen ist die Verwendung von Flaggen in ex Befehle könnten undeutlich sein. Allgemeine historische
die Praxis war wie in POSIX.1‐2008 beschrieben, es gab jedoch einige Sonderfälle. Für
Instanz, die Liste, Anzahl und drucken Befehle ignorierten nachgestellte Adress-Offsets; Pro
Beispiel 3p ++++ würde Zeile 3 anzeigen und 3 wäre die aktuelle Zeile nach der Ausführung
des Befehls. Der XNUMXh geöffnet und visuell Befehle ignorierten sowohl die Trailing-Offsets als auch die
nachgestellte Fahnen. Auch Flags, die für die XNUMXh geöffnet und visuell Befehle interagierten schlecht
an. Nach der Installation können Sie HEIC-Dateien mit der Liste Bearbeitungsoption und Setzen und Deaktivieren während des Öffnens/Visuals
Sitzung würde verursachen vi um die Anzeige von Zeilen im angegebenen Format zu beenden. Für Konsistenz
und Einfachheit der Spezifikation erlaubt POSIX.1‐2008 keine dieser Ausnahmen von
Die allgemeine Regel.

POSIX.1‐2008 verwendet das Wort Kopieren an mehreren Stellen, wenn es um Puffer geht. Das ist nicht
beabsichtigt, eine Umsetzung zu implizieren.

Historisch ex Benutzer konnten aufgrund der Mehrdeutigkeit keine numerischen Puffer angeben
würde dazu führen; zum Beispiel im Befehl 3 löschen 2, es ist unklar, ob 2 ein Puffer ist
name oder a zählen. POSIX.1‐2008 erfordert standardmäßig die Konformität mit der historischen Praxis, aber
schließt Erweiterungen nicht aus.

Historisch wurde der Inhalt des unbenannten Puffers häufig nach Befehlen verworfen
das hat sich nicht ausdrücklich darauf ausgewirkt; zum Beispiel bei der Verwendung der bearbeiten Befehl zum Umschalten
Dateien. Aus Gründen der Konsistenz und Einfachheit der Spezifikation lässt POSIX.1‐2008 dies nicht zu
Verhalten.

Das ex Dienstprogramm hatte in der Vergangenheit keinen Zugriff auf die numerischen Puffer, und außerdem
Zeilen löschen in ex hat deren Inhalt nicht geändert. Zum Beispiel, wenn nach dem Löschen
in vi, der Benutzer wechselte zu ex, löschte erneut und wechselte dann zurück zu vi, der
Der Inhalt der numerischen Puffer hätte sich nicht geändert. POSIX.1‐2008 erfordert Konformität
zur historischen Praxis. Numerische Puffer werden in der . beschrieben ex Dienstprogramm, um
Beschränken Sie die Beschreibung von Puffern in POSIX.1‐2008 auf eine einzige Stelle.

Die Metazeichen, die die Shell-Expansion in . auslösen Datei Argumente stimmen mit historischen überein
üben, ebenso wie die Methode zur Durchführung der Schalenexpansion. Implementierungen, die bereitstellen möchten
Benutzer mit der Flexibilität, den Satz von Metazeichen zu ändern, werden ermutigt, a
Shellmeta Option zum Bearbeiten von Zeichenfolgen.

Historisch ex Befehle ausgeführt von vi den Bildschirm aktualisiert, wenn dies nicht unbedingt der Fall war
muss dies tun; zum Beispiel, :!Datum > / dev / null erfordert keine Bildschirmaktualisierung, weil
die Ausgabe des UNIX Datum Befehl erfordert nur eine einzige Zeile des Bildschirms.
POSIX.1‐2008 erfordert, dass der Bildschirm aktualisiert wird, wenn er überschrieben wurde, macht aber
keine Anforderungen, wie eine Implementierung diese Feststellung treffen sollte.
Implementierungen können den Bildschirm trotzdem auffordern und aktualisieren.

Abkürzen
Historische Praxis war, dass Zeichen, die als Teil einer Abkürzung eingegeben wurden,
Ersatz waren abhängig von Karte Erweiterungen, die Show-Match Bearbeitungsoption, weiter
Abkürzungserweiterungen usw.; das heißt, sie wurden logischerweise auf das Terminal geschoben
Eingabewarteschlange und waren kein einfacher Ersatz. POSIX.1‐2008 erfordert die Konformität mit
historische Praxis. Historische Praxis war, dass immer dann, wenn ein Nicht-Wort-Zeichen (das
nicht von a . entkommen ‐V) wurde nach einem Wortzeichen eingegeben, vi würde nachschauen
Abkürzungen. Die Prüfung basierte auf der Art des Zeichens, das vor dem Wort eingegeben wurde
Zeichen des Wort-/Nicht-Wort-Paares, das die Prüfung ausgelöst hat. Der Wortcharakter des
Wort/Nicht-Wort-Paar, das die Prüfung ausgelöst hat, und alle Zeichen, die vor dem Auslöser eingegeben wurden
Paare, die von diesem Typ waren, wurden in die Prüfung einbezogen, mit Ausnahme von
Zeichen, die die Abkürzung immer begrenzten.

Dies bedeutet, dass, damit die Abkürzung funktioniert, die lhs muss mit einem Wortzeichen enden,
es darf keine Übergänge von Wort- zu Nicht-Wortzeichen geben (oder Schraubstock versa) außer
zwischen dem letzten und vorletzten Zeichen im lhs, und es kann keine geben
Zeichen in der lhs. Außerdem war es aufgrund der historischen Zitierregeln
Es ist unmöglich, ein Literal einzugeben ‐V im lhs. POSIX.1‐2008 erfordert Konformität
zur historischen Praxis. Historische Implementierungen informierten die Benutzer nicht über Abkürzungen
die nie verwendet werden konnten, wurden eingegeben; Implementierungen werden dringend empfohlen, dies zu tun.

Zum Beispiel funktionieren die folgenden Abkürzungen:

:ab (p REPLACE
:ab p REPLACE
:ab ((P REPLACE

Die folgenden Abkürzungen funktionieren nicht:

:ab ( REPLACE
:ab (S REPLACE

Historische Praxis ist, dass Worte über die vi Doppelpunkt-Befehlszeile unterliegen
Abkürzungserweiterung, einschließlich der Argumente zum Abk (und interessanter) die
ungekürzt Befehl. Weil es Implementierungen gibt, die keine Abkürzungserweiterung durchführen
für das erste Argument dieser Befehle ist dies erlaubt, aber nicht erforderlich, von
POSIX.1‐2008. Allerdings folgende Reihenfolge:

:ab foo Bar
:ab foo baz

führte zur Hinzufügung einer Abkürzung von "baz" für die Zeichenfolge "Bar" im historischen
ex/vi, und die Reihenfolge:

:ab foo1 Bar
:ab foo2 Bar
:ungekürzt foo2

die Abkürzung gelöscht "foo1"nicht "foo2". Diese Verhaltensweisen sind nicht erlaubt von
POSIX.1‐2008, weil sie eindeutig die Erwartungen des Benutzers verletzen.

Es war historische Praxis, dass ‐V, nicht , Zeichen werden interpretiert als
nachfolgende Zeichen im entkommen abkürzen Befehl. POSIX.1‐2008 erfordert
Übereinstimmung mit der historischen Praxis; Es ist jedoch zu beachten, dass eine Abkürzung
mit a wird nie funktionieren.

Anhängen
Historisch gesehen ist jeder Text nach a Befehlstrennzeichen nach an anhängen,
Übernehmen , oder einfügen Befehl wurde Teil des Einfügetextes. Zum Beispiel im Befehl:

:g/pattern/append|stuff1

eine Zeile mit dem Text "Zeug1" würde an jedes Linienabgleichsmuster angehängt. Es
war auch historisch gültig für die Eingabe:

:anhängen|Zeug1
Sachen2
.

und der Text auf dem ex Befehlszeile würde zusammen mit dem eingefügten Text angehängt
es. Es gab jedoch einen historischen Fehler, bei dem der Benutzer zwei terminierende . eingeben musste
Zeilen (die '.' Zeilen), um in diesem Fall den Texteingabemodus zu beenden. POSIX.1‐2008 erfordert
Konformität mit der historischen Praxis, lässt aber die historische Notwendigkeit von Mehrfachnennungen nicht zu
Abschlußlinien.

Change
Siehe die BEGRÜNDUNG für die anhängen Befehl. Historische Praxis für die Cursorpositionierung nach
der Änderungsbefehl, wenn kein Text eingegeben wird, ist wie in POSIX.1‐2008 beschrieben. Allerdings ein
Es ist bekannt, dass die Implementierung von System V so modifiziert wurde, dass der Cursor positioniert ist
an der ersten angegebenen Adresse und nicht in der Zeile vor der ersten Adresse. POSIX.1‐2008
lässt diese Änderung aus Konsistenzgründen nicht zu.

Historisch gesehen, die Übernehmen Befehl unterstützte keine Pufferargumente, obwohl einige
Implementierungen ermöglichen die Angabe eines optionalen Puffers. Dieses Verhalten ist weder
nach POSIX.1‐2008 erforderlich oder nicht zulässig.

Change Verzeichnis
Eine gemeinsame Erweiterung in ex Implementierungen ist die Verwendung der Elemente von a CD-Pfad Option bearbeiten als
Präfix-Verzeichnisse für Weg Argumente zu chdir das sind relative Pfadnamen und das nicht
haben '.' or ".." als ihre erste Komponente. Elemente im CD-Pfad Bearbeitungsoption sind
-getrennt. Der Anfangswert des CD-Pfad Bearbeitungsoption ist der Wert der Shell
CDPATH Umgebungsvariable. Diese Funktion war in POSIX.1‐2008 nicht enthalten, da sie dies tut
gibt es in keiner der Implementierungen, die als historische Praxis gelten.

Kopieren
Historische Implementierungen von ex erlaubte Kopien in Zeilen innerhalb des angegebenen Bereichs;
zum Beispiel, :2,5Kopie3 war ein gültiger Befehl. POSIX.1‐2008 erfordert die Konformität mit
historische Praxis.

Löschen
POSIX.1‐2008 erfordert Unterstützung für das historische Parsing von a löschen Befehl gefolgt von
Flaggen, ohne dass Sie eingreifen Zeichen. Beispielsweise:

1dp Löscht die erste Zeile und druckt die zweite Zeile.

1delep Wie für 1dp.

1d Löscht die erste Zeile und speichert sie im Puffer p.

1d p1l (Pee-one-ell.) Löscht die erste Zeile und speichert sie im Puffer p, und die Zeile auflisten
das war das zweite.

Bearbeiten
Historisch gesehen ex Befehl könnte als a . eingegeben werden +Befehl Argument an die bearbeiten Befehl,
obwohl einige (zum Beispiel einfügen und anhängen) waren dafür bekannt, historisches zu verwechseln
Implementierungen. Aus Gründen der Konsistenz und Einfachheit der Spezifikation erfordert POSIX.1‐2008
dass jeder Befehl als Argument für die unterstützt wird bearbeiten Befehl.

In der Vergangenheit wurde das Befehlsargument ausgeführt, wobei die aktuelle Zeile auf die letzte Zeile gesetzt war
der Datei, unabhängig davon, ob die bearbeiten Befehl wurde aus dem visuellen Modus ausgeführt oder nicht.
POSIX.1‐2008 erfordert die Konformität mit der historischen Praxis.

Historisch gesehen, die +Befehl angegeben an die bearbeiten und weiter Befehle wurden durch das
Erste , und es gab keine Möglichkeit, sie zu zitieren. Aus Konsistenzgründen erfordert POSIX.1‐2008
dass das übliche ex Backslash-Zitate bereitgestellt werden.

Historisch gesehen, die Angabe der +Befehl Argument für den Bearbeitungsbefehl erforderte einen Dateinamen, um
ebenfalls angegeben werden; zum Beispiel, :bearbeiten +100 würde immer scheitern. Für Konsistenz und
Einfachheit der Spezifikation, POSIX.1‐2008 lässt nicht zu, dass diese Verwendung dafür fehlschlägt
Grund.

In der Vergangenheit wurde nur die Cursorposition der zuletzt bearbeiteten Datei vom
Editor. POSIX.1‐2008 erfordert, dass dies unterstützt wird; Implementierungen sind jedoch
erlaubt, sich die Cursorposition für jede zuvor bearbeitete Datei zu merken und wiederherzustellen.

Reichen Sie das
Historische Versionen der ex Herausgeber Datei Befehl zeigte eine aktuelle Zeile und Anzahl von
Zeilen im Bearbeitungspuffer von 0, wenn die Datei leer war, während die vi ‐G-Befehl
zeigt eine aktuelle Zeile und Anzahl der Zeilen im Editierpuffer von 1 im selben an
Lage. POSIX.1‐2008 lässt diese Diskrepanz nicht zu, sondern verlangt stattdessen, dass eine Nachricht
angezeigt werden, um anzuzeigen, dass die Datei leer ist.

Global
Der Zwei-Pass-Betrieb des globale und v Befehle soll nicht andeuten
Implementierung, nur das erforderliche Ergebnis der Operation.

Die aktuelle Zeile und Spalte werden wie für die Person angegeben eingestellt ex Befehle. Dies
Anforderung ist kumulativ; das heißt, die aktuelle Zeile und Spalte müssen über alle
Befehle, die von der . ausgeführt werden globale or v Befehle.

Insert
Siehe die BEGRÜNDUNG für die anhängen Befehl.

Historisch einfügen konnte nicht mit einer Adresse von Null verwendet werden; das heißt, nicht wenn die Bearbeitung
Puffer war leer. POSIX.1‐2008 erfordert, dass sich dieser Befehl konsistent mit dem
anhängen Befehl.

Registrieren
Die Aktion der join Befehl in Bezug auf die Sonderzeichen ist nur definiert für
das POSIX-Gebietsschema, da die richtige Menge an Leerzeichen nach einer Periode variiert; in
Im Japanischen ist keine erforderlich, im Französischen nur ein einziges Leerzeichen und so weiter.

Liste
Die historische Ausgabe der Liste Befehl war möglicherweise mehrdeutig. Der Standard
Entwickler hielten es für wichtiger, dies zu korrigieren, als sich an historischen zu halten
Praxis, und POSIX.1‐2008 erfordert eine eindeutige Ausgabe.

Karte
In der Vergangenheit wurden Befehlsmoduszuordnungen nur auf Befehlsnamen angewendet; zum Beispiel, wenn die
Charakter 'x' wurde zugeordnet 'y', der Befehl fx gesucht nach dem 'x' Charakter, nicht der
'y' Charakter. POSIX.1‐2008 erfordert dieses Verhalten. Historisch gesehen betreten ‐V wie
das erste Zeichen von a vi Befehl war ein Fehler. Mehrere Implementierungen wurden erweitert
die Semantik von vi so dass ‐V bedeutet, dass das nachfolgende Befehlszeichen ist
nicht abgebildet. Dies ist nach POSIX.1‐2008 erlaubt, aber nicht erforderlich. Unabhängig davon, mit
‐V, um das zweite oder spätere Zeichen in einer Zeichenfolge zu maskieren, die möglicherweise
übereinstimmen Karte Befehl oder ein beliebiges Zeichen im Texteingabemodus ist historische Praxis, und
verhindert, dass die eingegebenen Schlüssel mit einer Karte übereinstimmen. POSIX.1‐2008 erfordert die Konformität mit
historische Praxis.

Historische Implementierungen erlaubten die Verwendung von Ziffern als a Karte Befehl lhs, aber dann
ignorierte die Karte. POSIX.1‐2008 erfordert, dass die zugeordneten Ziffern nicht ignoriert werden.

Die historische Umsetzung der Karte Befehl hat nicht erlaubt Karte Befehle, die waren
mehr als ein einzelnes Zeichen lang, wenn das erste Zeichen druckbar war. Dieses Verhalten
ist nach POSIX.1‐2008 erlaubt, aber nicht erforderlich.

In der Vergangenheit wurden zugeordnete Zeichen neu zugeordnet, es sei denn, die remap Bearbeitungsoption wurde nicht gesetzt, oder
das Präfix der abgebildeten Zeichen stimmte mit den Abbildungszeichen überein; zum Beispiel in der
Karte:

:Karte ab abcd

die Charaktere "ab" wurden unverändert verwendet und nicht neu zugeordnet, aber die Zeichen "CD" waren
ggf. abgebildet. Dies kann zu Endlosschleifen im vi Mapping-Mechanismen.
POSIX.1‐2008 erfordert die Konformität mit der historischen Praxis und dass solche Schleifen
unterbrechbar.

Texteingabekarten hatten die gleichen Probleme beim Erweitern der lhs für die ex Karte! und Karte aufheben!
befehlen, wie dies getan hat ex abkürzen und ungekürzt Befehle. Siehe die BEGRÜNDUNG für die ex
abkürzen Befehl. POSIX.1‐2008 erfordert eine ähnliche Modifikation einiger historischer Praktiken
für die Karte und Karte aufheben Befehle, wie für die abkürzen und ungekürzt Befehle.

Historisch Kartes, die Teilmengen von anderen waren Kartes verhielten sich je nach
Reihenfolge, in der sie definiert wurden. Beispielsweise:

:Karte! ab kurz
:Karte! ABC lange

würde immer die Zeichen übersetzen "ab" zu "kurz", egal wie schnell die
Zeichen "ABC" eingetragen wurden. Wenn die Eingabereihenfolge umgekehrt wurde:

:Karte! ABC lange
:Karte! ab kurz

die Charaktere "ab" würde dazu führen, dass der Editor pausiert und auf die Fertigstellung wartet 'C'
Zeichen, und die Zeichen werden möglicherweise nie zugeordnet "kurz". Für Konsistenz und
Einfachheit der Spezifikation verlangt POSIX.1‐2008, dass die kürzeste Übereinstimmung überhaupt verwendet wird
Zeiten.

Die Zeit, die der Redakteur damit verbringt, darauf zu warten, dass die Charaktere die lhs is
nicht spezifiziert, weil die Timing-Fähigkeiten von Systemen oft ungenau und variabel sind, und
es kann von anderen Faktoren wie der Geschwindigkeit der Verbindung abhängen. Die Zeit sollte sein
lang genug, damit der Benutzer die Sequenz abschließen kann, aber nicht lang genug für die
Benutzer warten müssen. Einige Implementierungen von vi habe hinzugefügt Schlüsselzeit Option, die
erlaubt dem Benutzer, die Anzahl von 0,1 Sekunden einzustellen, die der Editor auf den Abschluss wartet
Zeichen. Da zugeordnete Terminalfunktions- und Cursortasten dazu neigen, mit einem zu beginnen
Charakter, und ist das Schlüsselende vi Texteingabemodus, Kartes beginnend mit
Zeichen sind in der Regel von dieser Zeitüberschreitung ausgenommen oder haben zumindest eine Zeitüberschreitung
anders.

Tobias
In der Vergangenheit waren Benutzer in der Lage, die Markierungen für den ``vorhergehenden Kontext'' explizit zu setzen. In
zusätzlich, die ex Befehle '' und '` und dem vi Befehle '', ``, `' und '` alle bezeichnet
das gleiche Zeichen. Außerdem wurden die vorherigen Kontextmarken nicht gesetzt, wenn der Befehl mit
der die Adresseinstellung der Marke zugeordnet war, ist fehlgeschlagen. POSIX.1‐2008 erfordert
Übereinstimmung mit der historischen Praxis. Wenn markierte Zeilen in der Vergangenheit gelöscht wurden, wurde die Markierung
wurde ebenfalls gelöscht, würde aber wieder erscheinen, wenn die Änderung rückgängig gemacht würde. POSIX.1‐2008 erfordert
Übereinstimmung mit der historischen Praxis.

Die Beschreibung der besonderen Ereignisse, die die ` und ' Markierungen entsprechen historischen
trainieren. Zum Beispiel, historisch gesehen der Befehl /a/,/b/ habe die nicht eingestellt ` und ' Marken, aber
der Befehl /a/,/b/löschen tat.

Weiter
Historisch gesehen ex Befehl könnte als a . eingegeben werden +Befehl Argument an die weiter Befehl,
obwohl einige (zum Beispiel einfügen und anhängen) waren dafür bekannt, historisches zu verwechseln
Implementierungen. POSIX.1‐2008 verlangt, dass jeder Befehl erlaubt ist und sich wie
spezifiziert. Die weiter Der Befehl kann mehr als eine Datei akzeptieren, daher Verwendung wie:

weiter `l [ABC] `

ist gültig; es muss nicht gültig sein für die bearbeiten or lesen Befehle, zum Beispiel, weil sie
erwarten Sie nur einen Dateinamen.

Historisch gesehen, die weiter Befehl verhielt sich anders als der :zurückspulen Befehl darin, dass es
ignorierte das Force-Flag, wenn die automatisch schreiben Flagge wurde gesetzt. Aus Konsistenzgründen tut POSIX.1‐2008
dieses Verhalten nicht zulassen.

Historisch gesehen, die weiter Befehl positionierte den Cursor, als ob die Datei nie bearbeitet worden wäre
vorher, egal. POSIX.1‐2008 lässt dieses Verhalten aus Konsistenzgründen nicht zu
bearbeiten Befehl.

Implementierungen, die ein Gegenstück zu den weiter Befehl, der die bearbeitet hat
vorherige Datei haben den Befehl verwendet früher], was braucht nein Datei Streit. POSIX.1‐2008
benötigt diesen Befehl nicht.

Offen
Historisch gesehen, die XNUMXh geöffnet Befehl würde fehlschlagen, wenn die XNUMXh geöffnet Bearbeitungsoption wurde nicht gesetzt.
POSIX.1‐2008 erwähnt nicht die XNUMXh geöffnet Bearbeitungsoption und erfordert dieses Verhalten nicht.
Einige historische Implementierungen erlauben es nicht, aus dem offenen oder visuellen Modus in den offenen Modus zu wechseln.
erst ab ex Modus. Aus Konsistenzgründen lässt POSIX.1‐2008 dieses Verhalten nicht zu.

In der Vergangenheit wurde der offene Modus über die Befehlszeile aufgerufen (d. h. vi +öffnen) führte zu
anormales Verhalten; zum Beispiel die ex Datei-und kompensieren Befehle und die vi Befehl
-G hat nicht funktioniert. Aus Konsistenzgründen lässt POSIX.1‐2008 dieses Verhalten nicht zu.

Historisch gesehen, die XNUMXh geöffnet Befehl nur erlaubt '/' Zeichen für die Suche
Musterbegrenzer. Aus Konsistenzgründen erfordert POSIX.1‐2008, dass die verwendeten Suchbegrenzer
von dem s, globale und v Befehle werden auch akzeptiert.

Bewahren
Das bewahren Befehl führt historisch nicht dazu, dass die Datei als unverändert betrachtet wird für
die Zwecke zukünftiger Befehle, die den Editor verlassen können. POSIX.1‐2008 erfordert
Übereinstimmung mit der historischen Praxis.

In der historischen Dokumentation wurde angegeben, dass keine E-Mail an den Benutzer gesendet wurde, als die Konservierung vorgenommen wurde
hingerichtet; jedoch haben historische Implementierungen in diesem Fall E-Mails gesendet. POSIX.1‐2008
erfordert die Konformität mit den historischen Implementierungen.

Print
Das Schreiben von NUL durch die drucken Befehl wird nicht als Sonderfall angegeben, da der
Standardentwickler wollten nicht fordern ex um NUL-Zeichen zu unterstützen. Historisch,
Zeichen wurden unter Verwendung der ARPA-Standardzuordnungen angezeigt, die wie folgt lauten:

1. Druckbare Zeichen werden in Ruhe gelassen.

2. Steuerzeichen kleiner als \177 werden dargestellt als '^' gefolgt vom Zeichen
versetzt von der '@' Zeichen in der ASCII-Map; zum Beispiel wird \007 dargestellt als
'^G'.

3. \177 wird dargestellt als '^' gefolgt von '?'.

Die Anzeige von Zeichen, deren achtes Bit gesetzt war, war weniger Standard. Bestehenden
Implementierungen verwenden Hex (0x00), Oktal (\000) und eine Meta-Bit-Anzeige. (Letzteres
angezeigte Bytes, deren achtes Bit als die beiden Zeichen festgelegt war "M-" gefolgt von der
XNUMX-Bit-Darstellung wie oben beschrieben.) Letztere hat wohl den besten Anspruch auf
historische Praxis, weil es für die −v Option von 4 BSD und 4 BSD-derived
Versionen der Katze Dienstprogramm seit 1980.

POSIX.1‐2008 erfordert kein spezielles Anzeigeformat.

Eine explizite Abhängigkeit vom ASCII-Zeichensatz wurde nach Möglichkeit vermieden, daher ist die
Verwendung des Ausdrucks eine ``implementierungsdefinierte Mehrzeichenfolge'' für die Anzeige
von nicht druckbaren Zeichen gegenüber der historischen Verwendung von z. "^ich"
für die . Implementierungen werden ermutigt, der historischen Praxis in den
Fehlen eines wichtigen Grundes für eine Abweichung.

Historisch alle ex Befehle, die mit dem Buchstaben beginnen 'P' könnte mit eingegeben werden
Versionen der Befehle in Großbuchstaben; zum Beispiel, Drucken], Bewahren] und Setzen] waren alle
gültige Befehlsnamen. POSIX.1‐2008 erlaubt diese historische Praxis, erfordert sie jedoch nicht
da Großbuchstaben der Befehle von einigen Implementierungen für andere Zwecke verwendet werden.

setzen
Historisch gesehen ein ex setzen Befehl, der aus dem offenen oder visuellen Modus ausgeführt wurde, war der gleiche wie der
offener oder visueller Modus P Befehl, wenn der Puffer benannt und im Zeichenmodus geschnitten wurde, und
das gleiche wie p Befehl, wenn der Puffer benannt und im Zeilenmodus geschnitten wurde. Wenn das unbenannte
Puffer war die Quelle des Textes, die gesamte Zeile, aus der der Text entnommen wurde, war
gewöhnlich setzen, und der Puffer wurde wie im Zeilenmodus behandelt, aber es war möglich,
extrem anomales Verhalten. Darüber hinaus verwenden Sie die Q Befehl zum Umschalten in ex Modus und
dann mach a setzen führte oft auch zu Fehlern, wie z. B. das Anhängen von Text, der
unabhängig vom (angeblichen) Inhalt des Puffers. Für Konsistenz und Einfachheit von
Spezifikation erlaubt POSIX.1‐2008 diese Verhaltensweisen nicht. Alle ex setzen Befehle sind
erforderlich, um im Line-Modus zu arbeiten, und der Inhalt der Puffer wird nicht geändert durch
den Modus des Editors ändern.

Lesen Sie mehr
Historisch gesehen ein ex lesen Befehl ausgeführt aus dem offenen oder visuellen Modus, ausgeführt in einem leeren
Datei, eine leere Zeile als erste Zeile der Datei hinterlassen. Für Konsistenz und Einfachheit von
Spezifikation lässt POSIX.1‐2008 dieses Verhalten nicht zu. Historisch gesehen, a lesen im offenen
oder visueller Modus aus einem Programm verließ den Cursor in der letzten eingelesenen Zeile, nicht in der ersten. Für
Konsistenz lässt POSIX.1‐2008 dieses Verhalten nicht zu.

Historische Implementierungen von ex konnten nicht rückgängig machen lesen Befehle, die aus dem lesen
Ausgabe eines Programms. Aus Konsistenzgründen lässt POSIX.1‐2008 dieses Verhalten nicht zu.

Historisch gesehen, die ex und vi Nachricht nach einem erfolgreichen lesen or schreiben Befehl angegeben
``Zeichen'', nicht ``Bytes''. POSIX.1‐2008 erfordert, dass die Anzahl der Bytes
angezeigt, nicht die Anzahl der Zeichen, da es bei Multi-Byte schwierig sein kann
Implementierungen, um die Anzahl der gelesenen Zeichen zu bestimmen. Implementierungen sind erwünscht
um die dem Benutzer angezeigte Nachricht zu verdeutlichen.

In der Vergangenheit waren Lesevorgänge für andere Dateien als den Typ regular nicht zulässig, außer dass FIFO
Dateien gelesen werden konnten (wahrscheinlich nur, weil sie nicht existierten, als ex und vi waren
ursprünglich geschrieben). Denn das historische ex Bewerten lesen! und lesen ! gleichwertig,
Es kann keine optionale Möglichkeit geben, das Lesen zu erzwingen. POSIX.1‐2008 erlaubt, aber nicht
erfordern, dieses Verhalten.

Entspannung
Einige historische Implementierungen des Editors ermöglichten es Benutzern, den Bearbeitungspuffer wiederherzustellen
Inhalte aus einer vorherigen Bearbeitungssitzung und beenden Sie sie dann, ohne diese Inhalte zu speichern (oder
ausdrücklich verwerfen). Die Absicht von POSIX.1‐2008 besteht darin, dass der Bearbeitungspuffer
als bereits geändert behandelt werden, um diesen Benutzerfehler zu vermeiden.

Rewind
Historische Implementierungen unterstützten die zurückspulen Befehl, wenn der Benutzer die bearbeitete
erste Datei in der Liste; das heißt, die Datei, die zurückspulen Befehl bearbeiten würde. POSIX.1‐2008
erfordert die Übereinstimmung mit der historischen Praxis.

Ersatz
Historisch ex akzeptiert und r Option zum s Befehl. Die Wirkung der r Option war zu
Verwenden Sie den letzten regulären Ausdruck, der in einem beliebigen Befehl verwendet wird, als Muster, genau wie beim ~
Befehl. Das r Option wird von POSIX.1‐2008 nicht benötigt. Historisch gesehen ist die c und g Optionen
wurden umgeschaltet; zum Beispiel der Befehl :s/abc/def/ war das gleiche wie s/abc/def/ccccgggg.
Zur Vereinfachung der Spezifikation lässt POSIX.1‐2008 dieses Verhalten nicht zu.

Der Tilde-Befehl wird oft verwendet, um die letzte Suche RE zu ersetzen. Zum Beispiel in der
Sequenz:

s/rot/blau/
/Grün
~

~ Befehl ist äquivalent zu:

s/grün/blau/

Historisch ex akzeptiert alle der folgenden Formulare:

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

POSIX.1‐2008 erfordert die Konformität mit dieser historischen Praxis.

Das s Befehl setzt voraus, dass die '^' Zeichen belegt nur eine einzige Spalte im
Anzeige. Viel von der ex und vi Spezifikation geht davon aus, dass die belegt nur a
einzelne Spalte im Display. Es sind keine Zeichensätze bekannt, für die dies nicht gilt
wahr.

Historisch basierte die letzte Spaltenposition für die Ersatzbefehle auf früheren
Säulenbewegungen; eine Suche nach einem Muster gefolgt von einer Ersetzung würde die Spalte verlassen
Position unverändert, während ein 0-Befehl gefolgt von einer Ersetzung die Spalte ändern würde
Position an die erste nicht- . Für Konsistenz und Einfachheit der Spezifikation,
POSIX.1‐2008 erfordert, dass die letzte Spaltenposition immer auf die erste gesetzt wird
nicht- .

Sept
Historische Implementierungen zeigten alle Optionen für jedes Vorkommen der alle
Stichwort. POSIX.1‐2008 erlaubt dieses Verhalten, erfordert es aber nicht.

Etikett
Es wird keine Vorgabe gemacht, wo ex und vi soll nach der Datei suchen, auf die das Tag verweist
Eintrag. Die historische Praxis war es, nach dem Pfad zu suchen, der in der Tags Datei, basierend auf
das aktuelle Verzeichnis. Eine nützliche Erweiterung, die in einigen Implementierungen zu finden ist, ist die Suche basierend
auch in dem Verzeichnis, das die Tag-Datei enthält, die den Eintrag enthält. Keine Anforderung ist
gemacht, welche Referenz für das Tag in der Tags-Datei verwendet wird. Dies ist beabsichtigt, in
um Erweiterungen wie mehrere Einträge in einer Tag-Datei für ein Tag zuzulassen.

Da Benutzer oft viele verschiedene Tag-Dateien angeben, von denen einige nicht relevant sein müssen
oder zu einem bestimmten Zeitpunkt existieren, erfordert POSIX.1‐2008, dass Fehlermeldungen über das Problem
Tag-Dateien werden nur angezeigt, wenn das angeforderte Tag nicht gefunden wird, und dann nur einmal für
jedes Mal, wenn die Etikett Bearbeitungsoption wird geändert.

Die Anforderung, dass der aktuelle Editierpuffer unverändert bleibt, ist nur erforderlich, wenn die Datei
die durch den Tag-Eintrag angezeigt wird, ist nicht mit der aktuellen Datei identisch (wie durch den aktuellen
Pfadname). Historisch gesehen wurde die Datei auch neu geladen, wenn sich der Dateiname geändert hätte
als ob sich der Dateiname vom aktuellen Pfadnamen unterscheidet. Für Konsistenz und Einfachheit
der Spezifikation erlaubt POSIX.1‐2008 dieses Verhalten nicht und erfordert, dass der Name
der einzige Faktor bei der Entscheidung.

Historisch vi nur nach Tags in der aktuellen Datei gesucht vom aktuellen Cursor bis zum
Ende der Datei, und daher, wenn die Wrapscan Option wurde nicht gesetzt, Tags traten vorher auf
der aktuelle Cursor wurde nicht gefunden. POSIX.1‐2008 betrachtet dies als Fehler und Implementierungen
sind erforderlich, um nach dem ersten Vorkommen in der Datei zu suchen, unabhängig davon.

Rückgängig machen
Das rückgängig machen Beschreibung verwendet absichtlich das Wort ``modifiziert''. Der rückgängig machen Befehl ist nicht
zum Rückgängigmachen von Befehlen, die den Inhalt des Bearbeitungspuffers ersetzen, wie z bearbeiten,
weiter, Etikett, oder erholen.

Cursorpositionierung nach dem rückgängig machen Befehl war in der historischen inkonsistent vi, manchmal
versucht, die ursprüngliche Cursorposition wiederherzustellen (globale , rückgängig machen und v Befehle) und
manchmal, wenn Karten vorhanden sind, den Cursor auf die letzte hinzugefügte oder geänderte Zeile setzen
statt des ersten. POSIX.1‐2008 erfordert ein vereinfachtes Verhalten für Konsistenz und
Einfachheit der Spezifikation.

Version
Das Version Befehl kann nicht genau spezifiziert werden, da es kein allgemein akzeptiertes
Definition dessen, was die Versionsinformationen enthalten sollen. Implementierungen sind erwünscht
etwas vernünftig Intelligentes zu tun.

Schreiben
Historisch gesehen, die ex und vi Nachricht nach einem erfolgreichen lesen or schreiben Befehl angegeben
``Zeichen'', nicht ``Bytes''. POSIX.1‐2008 erfordert, dass die Anzahl der Bytes
angezeigt, nicht die Anzahl der Zeichen, da dies bei Multi-Byte schwierig sein kann
Implementierungen, um die Anzahl der geschriebenen Zeichen zu bestimmen. Implementierungen sind
aufgefordert, die dem Benutzer angezeigte Nachricht zu verdeutlichen.

Implementierungsdefinierte Tests sind zulässig, damit Implementierungen zusätzliche
Schecks; B. für Sperren oder Dateiänderungszeiten.

In der Vergangenheit hat der Versuch, an eine nicht vorhandene Datei anzuhängen, einen Fehler verursacht. Es ist geblieben
nicht spezifiziert in POSIX.1‐2008, um Implementierungen zu ermöglichen, die schreiben gelingen, damit
die Append-Semantik ähnelt der des historischen csh.

Historisch vi erlaubt, dass leere Editierpuffer geschrieben werden. Da jedoch der Weg vi habe
der Umgang mit ``leeren'' Dateien war, immer eine Zeile im Editierpuffer zu haben, nein
Egal was, es hat sie als Dateien mit einer einzigen, leeren Zeile geschrieben. POSIX.1‐2008 lässt nicht zu
Dieses Verhalten.

Historisch ex Standardausgabe und Standardfehler wieder auf ihre Werte zurückgesetzt, ab wann ex
aufgerufen wurde, bevor Schreibvorgänge in Programme ausgeführt wurden. Dies könnte das Terminal stören
Konfiguration sowie für einige Terminals ein Sicherheitsproblem darstellen. POSIX.1‐2008 nicht
erlauben dies und erfordern, dass die Programmausgabe erfasst und angezeigt wird, als ob vom ex
drucken Befehl.

Prozesse Window
In der Vergangenheit wurde die Zeilenanzahl auf den Wert des gesetzt blättern Option, wenn der Typ
Zeichen war Dateiende. Diese Funktion war bei den meisten historischen Implementierungen lange Zeit defekt
ist jedoch nirgendwo dokumentiert. Aus diesem Grund ist POSIX.1‐2008 entschlossen
Leise.

Historisch gesehen, die z Befehl war -sensibel und z + und z - habe verschiedene dinge gemacht
als z+ und z− weil der Typ nicht von einem Flag unterschieden werden konnte. (Die Befehle z .
und z = waren historisch ungültig.) POSIX.1‐2008 erfordert die Konformität mit diesem historischen
trainieren.

Historisch gesehen, die z Befehl war weiter -sensibel, da die zählen kann nicht sein
-getrennt; zum Beispiel die Befehle z= 5 und z− 5 waren ebenfalls ungültig. Weil der
zählen ist weder in Bezug auf das Typzeichen noch auf die Flags mehrdeutig, dies ist es nicht
erlaubt durch POSIX.1‐2008.

Flucht
Historisch ex Filterbefehle lesen nur die Standardausgabe der Befehle, lassen
Standardfehler werden wie gewohnt auf dem Terminal angezeigt. Der vi Dienstprogramm, jedoch lesen Sie beide
Standardausgabe und Standardfehler. POSIX.1‐2008 erfordert das letztere Verhalten für beide ex
und vi, für Konsistenz.

Shift Links und Shift Rechts
Historisch war es möglich, Shift-Zeichen hinzuzufügen, um die Wirkung der
Befehl; zum Beispiel, << ausgerückt (oder >>> eingerückt) die Zeilen 3 Einrückungsstufen
anstelle des Standardwerts 1. POSIX.1‐2008 erfordert die Konformität mit der historischen Praxis.

-D
Historisch gesehen ist die ‐D-Befehl löschte die Eingabeaufforderung und gab dem Benutzer ein
ununterbrochene Darstellung von Zeilen aus dem Editierpuffer. Dies wird von POSIX.1‐2008 nicht verlangt;
Implementierungen werden ermutigt, diese nach Möglichkeit bereitzustellen. Historisch gesehen ist die -D
Befehl nahm, und dann ignoriert, a zählen. POSIX.1‐2008 lässt dieses Verhalten nicht zu.

Schreiben Line Nummer
Historisch gesehen, die ex = Befehl, wenn ausgeführt in ex Modus in einem leeren Editierpuffer, gemeldet
0, und aus dem offenen oder visuellen Modus, gemeldet 1. Für Konsistenz und Einfachheit von
Spezifikation lässt POSIX.1‐2008 dieses Verhalten nicht zu.

Ausführen
Historisch ex hat die Aufnahme von Texteingabebefehlen nicht korrekt behandelt (d. h.,
anhängen, einfügen und Übernehmen ) in ausgeführten Puffern. POSIX.1‐2008 lässt dies nicht zu
Ausschluss aus Konsistenzgründen.

Historisch gesehen hat sich der logische Inhalt des ausgeführten Puffers nicht geändert, wenn der
Puffer selbst wurden durch die ausgeführten Befehle verändert; das heißt, die Pufferausführung hat
unterstützt keinen selbstmodifizierenden Code. POSIX.1‐2008 erfordert die Konformität mit der historischen Praxis.

Historisch gesehen, die @ Befehl nahm eine Reihe von Zeilen, und die @ Puffer wurde einmal pro . ausgeführt
Zeile, mit der aktuellen Zeile ('.') auf jede angegebene Zeile setzen. POSIX.1‐2008 erfordert
Übereinstimmung mit der historischen Praxis.

Einige historische Implementierungen haben nicht bemerkt, wenn während der Pufferausführung Fehler auftraten.
Dies, gepaart mit der Möglichkeit, eine Reihe von Leitungen für die ex @ Befehl, macht es
trivial, um sie fallen zu lassen Core. POSIX.1‐2008 erfordert, dass Implementierungen gestoppt werden
Pufferausführung, wenn ein Fehler auftritt, wenn die angegebene Zeile nicht existiert oder wenn die
Inhalte des Editierpuffers selbst werden ersetzt (der Puffer führt z ex
:bearbeiten Befehl).

Lang Ausdrücke in ex
Historische Praxis ist, dass die Zeichen im Ersatzteil des letzten s Befehl-
d. h. diejenigen, die durch Eingabe von a . übereinstimmen '~' im regulären Ausdruck – waren nicht weiter
durch die Engine für reguläre Ausdrücke erweitert. Wenn also die Zeichen die Zeichenfolge enthielten
"ein.," sie würden zusammenpassen 'A' gefolgt von ".," und nicht 'A' gefolgt von einem beliebigen Zeichen.
POSIX.1‐2008 erfordert die Konformität mit der historischen Praxis.

Bearbeiten Optionen in ex
Die folgenden Absätze beschreiben das historische Verhalten einiger Bearbeitungsoptionen, die
nicht, aus welchen Gründen auch immer, in POSIX.1‐2008 enthalten. Implementierungen sind stark
Es wird empfohlen, diese Namen nur zu verwenden, wenn die hier beschriebene Funktionalität vollständig unterstützt wird.

verlängert Das verlängert Die Bearbeitungsoption wurde in einigen Implementierungen von verwendet vi um
erweiterte reguläre Ausdrücke anstelle einfacher regulärer Ausdrücke Diese Option
wurde in POSIX.1‐2008 weggelassen, da dies keine weit verbreitete historische Praxis ist.

Blitz Das Blitz Bearbeitungsoption hat in der Vergangenheit dazu geführt, dass der Bildschirm blinkt, anstatt zu piepen
auf Fehler. Diese Option wurde in POSIX.1‐2008 weggelassen, da sie nicht in gefunden wird
einige historische Umsetzungen.

Hardtabs Das Hardtabs Bearbeitungsoption hat die Anzahl der Spalten zwischen historisch definiert
Einstellungen der Registerkarte Hardware. Diese Option wurde in POSIX.1‐2008 weggelassen, weil sie
als nicht mehr allgemein brauchbar angesehen.

Modelline Das Modelline (manchmal benannt Modelle) Bearbeitungsoption historisch bedingt ex or
vi um die fünf ersten und letzten Zeilen der Datei für Editorbefehle zu lesen. Dies
Option ist ein Sicherheitsproblem, und Anbietern wird dringend empfohlen, sie zu löschen
aus historischen Umsetzungen.

XNUMXh geöffnet Das XNUMXh geöffnet Bearbeitungsoption war historisch nicht zulässig ex XNUMXh geöffnet und visuell Befehle.
Diese Bearbeitungsoption wurde weggelassen, da diese Befehle benötigt werden von
POSIX.1‐2008.

optimieren Das optimieren Bearbeitungsoption beschleunigte den Textdurchsatz in der Vergangenheit durch Einstellen der
Terminal, um nicht automatisch zu tun Zeichen beim Drucken mehr
als eine logische Ausgabezeile. Diese Option wurde in POSIX.1‐2008 weggelassen
weil es für Terminals ohne adressierbare Cursor gedacht war, die
selten, wenn überhaupt, noch benutzt.

Herrscher Das Herrscher Die Bearbeitungsoption wurde in einigen Implementierungen von verwendet vi a
aktuelles Zeilen-/Spaltenlineal für den Benutzer. Diese Option wurde in POSIX.1‐2008 weggelassen
weil es keine weit verbreitete historische Praxis ist.

Quelle Das Quelle Bearbeitungsoption historisch bedingt ex or vi um Startdateien zu beschaffen
die anderen Benutzern als dem Benutzer gehören, der den Editor ausführt. Diese Option ist
ein Sicherheitsproblem, und Anbietern wird dringend empfohlen, es aus ihren
Implementierungen.

Timeout Das Timeout Bearbeitungsoption hat in der Vergangenheit die (jetzt Standard-)Funktion von nur aktiviert
Warten Sie eine kurze Zeit, bevor Sie Schlüssel zurückgeben, die Teil eines Makros sein könnten.
Diese Funktion wurde in POSIX.1‐2008 weggelassen, da ihr Verhalten jetzt Standard ist.
es ist nicht allgemein nützlich, und es wurde selten dokumentiert.

ausführlich Das ausführlich Die Bearbeitungsoption wurde in einigen Implementierungen von verwendet vi verursachen vi
um Fehlermeldungen für häufige Fehler auszugeben; zum Beispiel der Versuch, die
Cursor hinter den Anfang oder das Ende der Zeile, anstatt nur den
Bildschirm. (Die historische vi nur das Terminal alarmiert und keine Nachricht angezeigt
für solche Fehler. Die historische Editor-Option knapp nicht ausgewählt, wann
Fehlermeldungen anzeigen, es wurden nur vorhandene Fehlermeldungen mehr oder weniger gemacht
ausführlich.) Diese Option wurde in POSIX.1‐2008 weggelassen, da sie nicht weit verbreitet ist
historische Praxis; Implementierer werden jedoch ermutigt, es zu verwenden, wenn sie dies wünschen
um Fehlermeldungen für naive Benutzer bereitzustellen.

wickeln Das wickeln Die Bearbeitungsoption wurde in einigen Implementierungen von verwendet vi spezifizieren
ein automatischer Rand gemessen vom linken Rand statt vom rechten
Rand. Dies ist nützlich, wenn mehrere Bildschirmgrößen verwendet werden, um a . zu bearbeiten
einzelne Datei. Diese Option wurde in POSIX.1‐2008 weggelassen, da sie nicht
weit verbreitete historische Praxis; Implementierer werden jedoch ermutigt, es zu verwenden
wenn sie diese Funktionalität hinzufügen.

automatischer Einzug, ai
Historisch gesehen ist der Befehl 0a hat keine automatische Einrückung durchgeführt, unabhängig vom Strom
Einrückung von Zeile 1. POSIX.1‐2008 verlangt, dass jede Einrückung in Zeile 1
benutzt.

automatischer Druck, ap
Historisch gesehen, die autoprint Bearbeitungsoption war nicht vollständig konsistent oder basierte ausschließlich auf
Änderungen am Editierpuffer. Ausnahmen waren die lesen Befehl (beim Lesen von a
Datei, aber nicht aus einem Filter), die anhängen, Übernehmen , einfügen, globale und v Befehle, alle
die nicht betroffen waren autoprintund der Etikett Befehl, der betroffen war von
autoprint. POSIX.1‐2008 erfordert die Konformität mit der historischen Praxis.

Historisch gesehen, die autoprint Option wird nur auf den letzten von mehreren eingegebenen Befehlen angewendet
mit Trennzeichen; zum Beispiel, löschen war betroffen von autoprint,
aber löschen|version war nicht. POSIX.1‐2008 erfordert die Konformität mit historischen
trainieren.

automatisch schreiben, aw
Anhängen der '!' Charakter zum ex weiter Befehl, um ein automatisches Schreiben zu vermeiden
wurde in historischen Implementierungen nicht unterstützt. POSIX.1‐2008 erfordert, dass das Verhalten
passen zum anderen ex Befehle für Konsistenz.

Fall ignorieren, ic
Historische Implementierungen des Abgleichs ohne Beachtung der Groß-/Kleinschreibung (der Fall ignorieren Bearbeitungsoption) führen
zu nicht intuitiven Situationen, in denen Großbuchstaben in Bereichsausdrücken verwendet wurden.
Historisch war der Ablauf wie folgt:

1. Nehmen Sie eine Textzeile aus dem Bearbeitungspuffer.

2. Wandeln Sie Großbuchstaben in Kleinbuchstaben in der Textzeile um.

3. Wandeln Sie in regulären Ausdrücken Großbuchstaben in Kleinbuchstaben um, außer in der Zeichenklasse
Spezifikationen.

4. Vergleichen Sie reguläre Ausdrücke mit Text.

Dies würde bedeuten, dass mit Fall ignorieren im Endeffekt der Text:

Das Katze Sa on Matte

würde passen von

/^die/

aber nicht von:

/^[A−Z]er/

Aus Gründen der Konsistenz mit anderen Befehlen, die reguläre Ausdrücke implementieren, tut POSIX.1‐2008
dieses Verhalten nicht zulassen.

Absätze, für
Der Standard ISO POSIX-2:1993 machte den Standard Absätze und Abschnitte Bearbeitungsoptionen
implementierungsdefiniert, mit der Begründung, sie seien historisch am UNIX-System orientiert troff
Textformatierer, und ein ``tragbarer Benutzer'' könnte den {, }, [[, ]], ( und ) Befehle in
offenen oder visuellen Modus und lassen Sie den Cursor an unerwarteten Stellen anhalten. POSIX.1‐2008 spezifiziert
ihre Werte im POSIX-Gebietsschema aufgrund der ungewöhnlichen Gruppierung (sie funktionieren nur, wenn sie gruppiert sind)
in zwei Zeichen gleichzeitig) bedeutet, dass sie nicht für allgemeine Zwecke verwendet werden können
Bewegung, egal.

schreibgeschützt
Implementierungen werden ermutigt, dem Benutzer die bestmöglichen Informationen über
den schreibgeschützten Status der Datei, mit der Ausnahme, dass sie die
aktuellen Sonderprivilegien des Verfahrens. Dies bietet den Benutzern ein Sicherheitsnetz, da
Sie müssen das Überschreiben von schreibgeschützten Dateien erzwingen, auch wenn sie mit zusätzlichen
Privilegien.

Das schreibgeschützt Die Angabe der Bearbeitungsoption entspricht weitgehend der historischen Praxis. Das einzige
Der Unterschied besteht darin, dass historische Implementierungen nicht bemerkt haben, dass der Benutzer die
schreibgeschützt Bearbeitungsoption in Fällen, in denen die Datei aus irgendeinem Grund bereits als schreibgeschützt markiert war,
und würde daher die neu initialisieren schreibgeschützt Bearbeitungsoption das nächste Mal den Inhalt von
die Editierpuffer wurden ersetzt. Dieses Verhalten wird von POSIX.1‐2008 nicht zugelassen.

berichten
Die Anforderung, dass in einen Puffer kopierte Zeilen anders interagieren als gelöschte Zeilen ist
historische Praxis. Zum Beispiel, wenn die berichten Bearbeitungsoption ist auf 3 gesetzt, 3 Zeilen werden gelöscht
bewirkt, dass ein Bericht geschrieben wird, aber es müssen 4 Zeilen kopiert werden, bevor ein Bericht geschrieben wird.

Die Anforderung, dass die ex globale , v, XNUMXh geöffnet, rückgängig machen und visuell Befehle präsentieren Berichte
basierend auf der Gesamtzahl der Zeilen, die während der Befehlsausführung hinzugefügt oder gelöscht wurden, und dass
Befehle, die von der . ausgeführt werden globale und v Befehle keine Berichte enthalten, ist historisch
trainieren. POSIX.1‐2008 erweitert die historische Praxis, indem es verlangt, dass die Pufferausführung
ähnlich behandelt. Die Gründe dafür sind zweifach. Historisch gesehen ist nur der Bericht der
der letzte aus dem Puffer ausgeführte Befehl würde vom Benutzer gesehen, wie jeder neue Bericht
das letzte überschreiben. Darüber hinaus glaubten die Standardentwickler, dass die Pufferausführung
hatte mehr gemeinsam mit globale und v Befehle als bei anderen ex Befehle und
sollte sich aus Gründen der Konsistenz und Einfachheit der Spezifikation ähnlich verhalten.

Show-Match, sm
Die Zeit, die der Cursor auf dem übereinstimmenden Zeichen verbringt, ist nicht angegeben, da die
Timing-Fähigkeiten von Systemen sind oft ungenau und variabel. Die Zeit sollte lang sein
genug für den Benutzer, um es zu bemerken, aber nicht lange genug, um sich zu ärgern. Manche
Implementierungen von vi habe hinzugefügt Spielzeit Option, mit der Benutzer die Nummer einstellen können
in Intervallen von 0,1 Sekunden verharrt der Cursor auf dem passenden Zeichen.

Showmodus
Das Showmodus Option wurde in einigen historischen Implementierungen von verwendet ex und vi zu
Zeigt den aktuellen Bearbeitungsmodus im offenen oder visuellen Modus an. Die Bearbeitungsmodi haben
im Allgemeinen enthalten ``Befehl'' und ``Eingabe'' und manchmal andere Modi wie
``ersetzen'' und ``ändern''. Die Zeichenfolge wurde normalerweise in der unteren Zeile des angezeigt
Bildschirm ganz rechts in der Ecke. Darüber hinaus ist ein vorangestelltes '*' Charakter oft bezeichnet
ob der Inhalt des Editierpuffers geändert wurde. Letzteres Display hat
war manchmal Teil der Showmodus Option, und manchmal basierend auf einer anderen Option. Dies
Option war in der historischen 4-BSD-Implementierung von . nicht verfügbar vi, wurde aber als . angesehen
allgemein nützlich, insbesondere für unerfahrene Benutzer, und wird von POSIX.1‐2008 verlangt.

Das smd Abkürzung für Showmodus Option war nicht in allen historischen
Implementierungen des Editors. POSIX.1‐2008 erfordert es aus Konsistenzgründen.

Nicht alle historischen Implementierungen des Editors zeigten eine Moduszeichenfolge für den Befehlsmodus an,
Unterscheidung des Befehlsmodus vom Texteingabemodus durch das Fehlen einer Moduszeichenfolge.
POSIX.1‐2008 erlaubt dieses Verhalten aus Gründen der Übereinstimmung mit der historischen Praxis, aber
Implementierungen werden ermutigt, eine Anzeigezeichenfolge für beide Modi bereitzustellen.

langsam öffnen
Historisch gesehen, die langsam öffnen Option wurde automatisch gesetzt, wenn die Baudrate des Terminals geringer war
als 1200 Baud, oder wenn die Baudrate 1200 Baud war und die neu zeichnen Option wurde nicht gesetzt. Der
langsam öffnen Option hatte zwei Effekte. Erstens, wenn Sie Zeichen in der Mitte einer Zeile einfügen,
Zeichen nach dem Cursor würden nicht vorgeschoben, sondern überschrieben erscheinen.
Zweitens würden beim Erstellen einer neuen Textzeile Zeilen nach der aktuellen Zeile nicht angezeigt
nach unten gescrollt, scheint aber überschrieben zu sein. In beiden Fällen den Texteingabemodus beenden
würde dazu führen, dass der Bildschirm aktualisiert wird, damit er dem tatsächlichen Inhalt des Bearbeitungspuffers entspricht.
Schließlich führten ausreichend intelligente Terminals dazu, dass der Redakteur die
langsam öffnen Möglichkeit. POSIX.1‐2008 erlaubt die meisten historischen Verhaltensweisen und erweitert historische
üben zu verlangen langsam öffnen Verhalten, wenn die Bearbeitungsoption vom Benutzer festgelegt wurde.

Tags
Der Standardpfad für Tag-Dateien wird nicht angegeben, da Implementierungen ihre eigenen haben können
Tags Implementierungen, die nicht den historischen entsprechen. Der Standard Tags
Optionswert sollte wahrscheinlich zumindest die Datei enthalten ./Stichworte.

Begriff
Historische Implementierungen von ex und vi ignorierte Änderungen an den Begriff Bearbeitungsoption nach dem
anfängliche Terminalinformationen wurden geladen. Dies ist durch POSIX.1‐2008 erlaubt; jedoch,
Implementierungen werden ermutigt, dem Benutzer zu ermöglichen, ihren Terminaltyp jederzeit zu ändern
Zeit.

knapp
Historisch gesehen, die knapp Bearbeitungsoption optional mit einem kürzeren, weniger beschreibenden Fehler
Nachricht, für einige Fehlermeldungen. Dies ist nach POSIX.1‐2008 erlaubt, aber nicht erforderlich.
Historisch gesehen sind die häufigsten Fehler im visuellen Modus (z. B. der Versuch, den Cursor über
am Ende einer Zeile) führte zu keiner Fehlermeldung, sondern warnte lediglich das Terminal.
Implementierungen, die Nachrichten für unerfahrene Benutzer bereitstellen möchten, werden dringend gebeten, dies basierend auf
bearbeiten zu erhalten ausführlich, und nicht knapp.

Fenster
In historischen Implementierungen ist die Standardeinstellung für die Fenster Bearbeitungsoption basierte auf dem
Baudrate wie folgt:

1. Wenn die Baudrate weniger als 1200 beträgt, wird die bearbeiten zu erhalten w300 setze den Fensterwert; Pro
Beispiel die Zeile:

kompensieren w300=12

würde die Fensteroption auf 12 setzen, wenn die Baudrate weniger als 1200 beträgt.

2. Wenn die Baudrate gleich 1200 war, bearbeiten zu erhalten w1200 Stellen Sie den Fensterwert ein.

3. Wenn die Baudrate größer als 1200 war, bearbeiten zu erhalten w9600 Stellen Sie den Fensterwert ein.

Das w300, w1200 und w9600 Optionen erscheinen nicht in POSIX.1‐2008 wegen ihrer
Abhängigkeit von bestimmten Baudraten.

In historischen Implementierungen war die Größe des von verschiedenen Befehlen angezeigten Fensters
verwandt, aber nicht unbedingt gleichbedeutend mit dem Fenster Bearbeiten-Option. Zum Beispiel die Größe
des Fensters wurde vom . gesetzt ex Befehl visuell 10, aber es hat den Wert von nicht geändert
Fenster Bearbeiten-Option. Ändern Sie jedoch den Wert von Fenster Bearbeitungsoption hat die geändert
Anzahl der Zeilen, die beim Neuzeichnen des Bildschirms angezeigt wurden. POSIX.1‐2008 nicht
dieses Verhalten im Interesse der Konsistenz und Einfachheit der Spezifikation zulassen und
erfordert, dass alle Befehle, die die Anzahl der angezeigten Zeilen ändern, dies tun durch
den Wert der einstellen Fenster Bearbeiten-Option.

Wrapmargin, wm
Historisch gesehen, die Wrapmargin Option wirkte sich nicht auf Karten aus, die Zeichen einfügen, die auch hatten
damit verbundenen zählenS; zum Beispiel :Karte K 5aABC DEF. Leider gibt es weit verbreitete
Karten, die von diesem Verhalten abhängen. Für Konsistenz und Einfachheit der Spezifikation,
POSIX.1‐2008 lässt dieses Verhalten nicht zu.

Historisch Wrapmargin wurde mit der Spaltenanzeigebreite aller Zeichen berechnet
auf dem Bildschirm. Zum Beispiel eine Implementierung mit "^ich" zu repräsentieren Zeichen
wenn das Liste Bearbeitungsoption wurde gesetzt, wo '^' und 'ICH' jeder nahm eine einzelne Spalte auf der
Bildschirm, würde das berechnen Wrapmargin basierend auf einem Wert von 2 für jeden . Der Anzahl
Die Bearbeitungsoption hat auch die effektive Länge der Linie geändert. POSIX.1‐2008
erfordert die Übereinstimmung mit der historischen Praxis.

Frühere Versionen dieses Standards erlaubten Implementierungen mit anderen Bytes als acht
Bits, aber dies wurde in dieser Version geändert.

ZUKUNFT RICHTUNGEN


Keiner.

Verwenden Sie Exposix online mit den onworks.net-Diensten


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

Linux-Befehle

Ad