AnglaisFrançaisEspagnol

Ad


Icône de favori OnWorks

exposix - En ligne dans le Cloud

Exécutez exposix dans le fournisseur d'hébergement gratuit OnWorks sur Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS

Il s'agit de la commande exposix qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks à l'aide de l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS

PROGRAMME:

Nom


ex — éditeur de texte

SYNOPSIS


ex [−rR] [−s|−v] [-c commander] [-t chaîne de balise] [-w taille] [filet ]

DESCRIPTION


La ex l'utilitaire est un éditeur de texte orienté ligne. Il existe deux autres modes de l'éditeur—
ouvert et visuel—dans lequel l'édition orientée écran est disponible. Ceci est décrit plus
pleinement par le ex ouvert ainsi que visuel commandes et dans vi.

Si un opérande est '−', les résultats ne sont pas précisés.

Cette section utilise le terme éditer tampon pour décrire le texte de travail actuel. Pas de spécifique
la mise en œuvre est impliquée par ce terme. Toutes les modifications d'édition sont effectuées sur l'édition
tampon, et aucune modification n'affectera aucun fichier jusqu'à ce qu'une commande d'éditeur écrive le
fichier.

Certains terminaux n'ont pas toutes les capacités nécessaires pour prendre en charge l'intégralité ex
définition, telles que les commandes d'édition en plein écran (visuel mode or ouvert mode). Quand
ces commandes ne peuvent pas être prises en charge sur de tels terminaux, cette condition ne doit pas produire de
message d'erreur tel que « pas une commande d'éditeur » ou signaler une erreur de syntaxe. le
l'implémentation peut soit accepter les commandes et produire des résultats à l'écran qui sont
le résultat d'une tentative infructueuse de répondre aux exigences de ce volume de
POSIX.1‐2008 ou signaler une erreur décrivant la déficience liée au terminal.

OPTIONS


La ex l'utilitaire doit être conforme au volume Base Definitions de POSIX.1‐2008, Section 12.2,
utilitaire Syntaxe Recommandations, à l'exception de l'utilisation non spécifiée de '−', Et Ce '+' peut être
reconnu comme un délimiteur d'options ainsi que '−'.

Les options suivantes doivent être prises en charge :

-c commander
Spécifiez une commande initiale à exécuter dans le premier tampon d'édition chargé depuis
un fichier existant (voir la section DESCRIPTION ETENDUE). Les implémentations peuvent
supporter plus d'un seul -c option. Dans de telles implémentations, le
les commandes doivent être exécutées dans l'ordre spécifié sur la ligne de commande.

-r Récupérez les fichiers nommés (voir la section DESCRIPTION ÉTENDUE). Récupération
les informations d'un fichier doivent être enregistrées lors d'un crash de l'éditeur ou du système (par
exemple, lorsque l'éditeur est terminé par un signal que l'éditeur peut capter),
ou après l'utilisation d'un ex préserver commander.

A crash dans ce contexte est une défaillance inattendue du système ou de l'utilitaire qui
nécessite le redémarrage du système ou de l'utilitaire défaillant. Un plantage du système implique que
tous les utilitaires en cours d'exécution à ce moment-là se bloquent également. Dans le cas d'un éditeur ou d'un système
crash, le nombre de modifications apportées au tampon d'édition (depuis le dernier préserver
commande) qui sera récupéré n'est pas spécifié.

Sinon filet les opérandes sont donnés et les -t l'option n'est pas spécifiée, toutes les autres
options, le QUITTER variable, et tout .exrc les fichiers doivent être ignorés ; une liste de
tous les fichiers récupérables disponibles pour l'utilisateur appelant doivent être écrits, et le
l'éditeur doit quitter normalement sans autre action.

-R Ensemble lecture seulement possibilité d'édition.

-s Préparer ex pour une utilisation par lots en effectuant les actions suivantes :

* Supprimer les invites d'écriture et les messages d'information (mais pas de diagnostic).

* Ignorer la valeur de TERME et tout type de terminal par défaut d'implémentation et
supposer que le terminal est un type incapable de prendre en charge les modes ouverts ou visuels ;
voir la visuel commande et la description de vi.

* Supprimer l'utilisation du QUITTER variable d'environnement et la lecture de tout
.exrc déposer; voir la section DESCRIPTION ÉTENDUE.

* Supprimer l'autoindentation, en ignorant la valeur du indentation automatique possibilité d'édition.

-t chaîne de balise
Modifier le fichier contenant le spécifié chaîne de balise; voir balises c. La fonctionnalité des balises
représenté par -t chaîne de balise et par Étiquette la commande est facultative. Ce sera
fourni sur tout système qui fournit également une mise en œuvre conforme de balises c;
sinon, l'utilisation de -t produit des résultats indéfinis. Sur tout système, il doit être
une erreur pour spécifier plus d'un seul -t option.

-v Commencez en mode visuel (voir vi).

-w taille Réglez la valeur de la fenêtre option de l'éditeur pour taille.

OPÉRANDES


L'opérande suivant doit être pris en charge :

filet Un chemin d'accès d'un fichier à éditer.

STDIN


L'entrée standard consiste en une série de commandes et de texte d'entrée, comme décrit dans le
section DESCRIPTION ÉTENDUE. L'implémentation peut limiter chaque ligne d'entrée standard à
une longueur de {LINE_MAX}.

Si l'entrée standard n'est pas un dispositif terminal, ce sera comme si l'entrée -s l'option avait été
spécifié.

Si une lecture de l'entrée standard renvoie une erreur, ou si l'éditeur détecte une fin de
condition de fichier à partir de l'entrée standard, elle doit être équivalente à un SIGHUP asynchrone
un événement.

CONTRIBUTION DES DOSSIERS


Les fichiers d'entrée doivent être des fichiers texte ou des fichiers qui seraient des fichiers texte à l'exception d'un
dernière ligne qui ne dépasse pas {LINE_MAX}−1 octets et ne contient pas de valeur NUL
personnages. Par défaut, toute dernière ligne incomplète sera traitée comme si elle avait une fin
. L'édition d'autres formes de fichiers peut éventuellement être autorisée par ex
mises en œuvre.

La .exrc les fichiers et les fichiers sources doivent être des fichiers texte composés de ex commandes ; voir le
section DESCRIPTION ÉTENDUE.

Par défaut, l'éditeur lit les lignes des fichiers à éditer sans interpréter
l'une de ces lignes comme n'importe quelle forme de commande d'éditeur.

ENVIRONNEMENT VARIABLES


Les variables d'environnement suivantes doivent affecter l'exécution de ex:

COLONNES Remplacez la taille d'écran horizontale sélectionnée par le système. Voir les définitions de base
tome de POSIX.1‐2008, Chapitre 8, Environment Variables pour les valeurs valides et
résultats lorsqu'il est non défini ou nul.

QUITTER Déterminer une liste de ex commandes exécutées au démarrage de l'éditeur. Voir le
section DESCRIPTION ÉTENDUE pour plus de détails sur la phase d'initialisation.

ACCUEIL Déterminer un chemin d'accès d'un répertoire qui doit être recherché pour un démarrage d'éditeur-
fichier nommé .exrc; voir la section DESCRIPTION ÉTENDUE.

LANGUE Fournissez une valeur par défaut pour les variables d'internationalisation qui ne sont pas définies ou
nul. (Voir le volume Définitions de base de POSIX.1‐2008, Section 8.2,
Internationalisation Variables pour la priorité de l'internationalisation
variables utilisées pour déterminer les valeurs des catégories de paramètres régionaux.)

LC_TOUS S'il est défini sur une valeur de chaîne non vide, remplace les valeurs de tous les autres
variables d'internationalisation.

LC_COLLER
Déterminer les paramètres régionaux pour le comportement des plages, des classes d'équivalence et des
éléments de classement de caractères dans des expressions régulières.

LC_CTYPE Déterminer la localisation pour l'interprétation des séquences d'octets de données de texte
sous forme de caractères (par exemple, des caractères à un octet par opposition aux caractères à plusieurs octets dans
arguments et fichiers d'entrée), le comportement des classes de caractères dans
expressions, la classification des caractères en lettres majuscules ou minuscules,
la conversion de casse des lettres et la détection des limites de mots.

LC_MESSAGES
Déterminez les paramètres régionaux qui doivent être utilisés pour affecter le format et le contenu de
messages de diagnostic écrits dans l'erreur standard.

LIGNES Remplacer la taille d'écran verticale sélectionnée par le système, utilisée comme nombre de lignes
en plein écran et la taille de l'écran vertical en mode visuel. Voir la base
Volume des définitions de POSIX.1‐2008, Chapitre 8, Environment Variables pour valide
valeurs et résultats lorsqu'il est non défini ou nul.

NLSPATH Déterminer l'emplacement des catalogues de messages pour le traitement des LC_MESSAGES.

PATH Déterminez le chemin de recherche de la commande shell spécifiée dans le ex éditeur
commandes !, coquille, lireet écrire, et la commande mode ouvert et visuel !; voir
la description de la recherche et de l'exécution des commandes dans Section 2.9.1.1, Command
Rechercher ainsi que Internationaux.

SHELL Déterminez l'interpréteur de ligne de commande préféré à utiliser comme valeur par défaut de
le coquille possibilité d'édition.

TERME Déterminez le nom du type de terminal. Si cette variable est non définie ou nulle, un
un type de terminal par défaut non spécifié doit être utilisé.

ASYNCHRONE ÉVÉNEMENTS


Le terme suivant est utilisé dans cette section et les suivantes pour spécifier la commande et
actions d'événements asynchrones :

complet écrire
Une écriture complète est une écriture de tout le contenu du tampon d'édition dans un fichier
d'un type autre qu'un périphérique terminal, ou la sauvegarde du tampon d'édition a causé
par l'utilisateur exécutant le ex préserver commander. Rédaction du contenu de l'édition
tampon dans un fichier temporaire qui sera supprimé à la fermeture de l'éditeur ne doit pas
être considéré comme une écriture complète.

Les mesures suivantes doivent être prises à la réception des signaux :

SIGINT Si l'entrée standard n'est pas un terminal, ex ne doit pas écrire le fichier ou
revenir au mode de saisie de commande ou de texte, et doit quitter avec une sortie différente de zéro
état.

Sinon, si vous exécutez une commande en mode de saisie de texte ouvert ou visuel, ex en réception
de SIGINT se comportera de la même manière qu'à sa réception de la personnage.

Autrement:

1. Si vous exécutez un ex commande de mode de saisie de texte, toutes les lignes de saisie qui ont été
complètement entré doit être résolu dans le tampon d'édition, et tout
la ligne saisie doit être rejetée.

2. S'il y a une commande en cours d'exécution, elle doit être abandonnée et un message
affiché. Sauf indication contraire par le ex or vi descriptions de commandes,
il n'est pas spécifié si des lignes modifiées par la commande en cours d'exécution apparaissent
modifiés, ou tels qu'ils étaient avant d'être modifiés par la commande d'exécution, dans
le tampon.

Si la commande en cours d'exécution était une commande de mouvement, son
la commande doit être rejetée.

3. S'il est en mode commande ouvert ou visuel, le terminal doit être alerté.

4. L'éditeur revient alors en mode commande.

SIGCONT L'écran doit être rafraîchi s'il est en mode ouvert ou visuel.

SIGHUP Si le tampon d'édition a été modifié depuis la dernière écriture complète, ex doit
essayez de sauvegarder le tampon d'édition afin qu'il puisse être récupéré plus tard en utilisant le -r
option ou le ex récupérer commander. L'éditeur ne doit pas écrire le fichier ou retourner
en mode commande ou saisie de texte, et se terminera par un état de sortie différent de zéro.

SIGTERM Se référer à SIGHUP.

L'action entreprise pour tous les autres signaux n'est pas spécifiée.

SORTIE STD


La sortie standard ne doit être utilisée que pour écrire des invites à l'utilisateur, à des fins d'information.
messages, et pour écrire des lignes à partir du fichier.

STDERR


L'erreur standard ne doit être utilisée que pour les messages de diagnostic.

SORTIE DES DOSSIERS


La sortie de ex doivent être des fichiers texte.

ÉLARGI DESCRIPTION


Seulement le ex mode de l'éditeur est décrit dans cette section. Voir vi pour une édition supplémentaire
capacités disponibles dans ex.

Lorsqu'une erreur se produit, ex écrira un message. Si le terminal prend en charge un mode hors concours
(comme la vidéo inverse), le message doit être écrit en mode standout. Si la borne
ne prend pas en charge un mode hors concours, et l'option d'édition cloches d'erreur est défini, une action d'alerte
doit précéder le message d'erreur.

Par défaut, ex doit démarrer en mode commande, ce qui doit être indiqué par un : rapide; voir
le rapide commander. Le mode de saisie de texte peut être entré par le ajouter, insérerou Change
commandes ; il peut être quitté (et le mode de commande ré-entré) en tapant un ('.') seul
au début d'une ligne.

Initialisation in ex ainsi que vi
Les symboles suivants sont utilisés dans cette section et les suivantes pour spécifier les emplacements dans le
tampon d'édition :

autre ainsi que actuel chemins d'accès
Deux chemins, nommés actuel ainsi que autre, sont maintenus par l'éditeur. Quelconque ex
les commandes qui prennent des noms de fichiers comme arguments doivent les définir comme suit :

1. Si un filet l'argument est spécifié au ex éditer, exou récupérer commandes, ou si
an ex Étiquette La commande remplace le contenu du tampon d'édition.

une. Si la commande remplace le contenu du tampon d'édition, le
pathname doit être défini sur le filet argument ou le fichier indiqué par la balise,
et le chemin alternatif doit être défini sur la valeur précédente du chemin actuel
chemin d'accès.

b. Sinon, le chemin alternatif doit être défini sur le filet argument.

2. Si un filet l'argument est spécifié au ex next commander:

une. Si la commande remplace le contenu du tampon d'édition, le
pathname doit être défini sur le premier filet argument, et le chemin alternatif
doit être mis à la valeur précédente du nom de chemin actuel.

3. Si un filet l'argument est spécifié au ex filet commande, le chemin actuel
doit être fixé à la filet argument, et le chemin alternatif doit être défini sur
la valeur précédente du chemin d'accès actuel.

4. Si un filet l'argument est spécifié au ex lire ainsi que écrire commandes (c'est-à-dire quand
lire ou écrire un fichier, et non au programme nommé par le coquille éditer
option), ou un filet l'argument est spécifié au ex quitter commander:

une. Si le chemin d'accès courant n'a pas de valeur, le chemin d'accès courant doit être défini sur
le filet argument.

b. Sinon, le chemin alternatif doit être défini sur le filet argument.

Si le chemin alternatif est défini sur la valeur précédente du chemin actuel lorsque
le chemin actuel n'avait pas de valeur précédente, alors le chemin alternatif doit avoir
aucune valeur en conséquence.

actuel en ligne
La ligne du tampon d'édition référencée par le curseur. Chaque description de commande
spécifie la ligne courante après l'exécution de la commande, car le actuel en ligne
Plus-value. Lorsque le tampon d'édition ne contient aucune ligne, la ligne courante doit être zéro ; voir
Adressage in ex.

actuel colonne
La colonne de la ligne d'affichage actuelle occupée par le curseur. (Les colonnes doivent être
numérotée à partir de 1.) Chaque description de commande spécifie la colonne courante
après l'exécution de la commande, comme le actuel colonne valeur. Cette colonne est un
idéal colonne dont on se souvient pendant toute la durée de vie de l'éditeur. L'affichage réel
la colonne de ligne sur laquelle repose le curseur peut être différente de la colonne actuelle ;
voir la discussion sur le positionnement du curseur dans Command Descriptions in vi.

set à non-
Une description pour une valeur de colonne actuelle, ce qui signifie que la colonne actuelle doit être
défini sur la dernière colonne de ligne d'affichage sur laquelle est affichée une partie de la première
non- de la ligne. Si la ligne n'a pas de non- non- personnages,
la colonne actuelle doit être définie sur la dernière colonne de la ligne d'affichage sur laquelle est
affiché une partie du dernier non- caractère dans la ligne. Si la ligne est
vide, la colonne actuelle doit être définie sur la position de colonne 1.

La longueur des lignes dans le tampon d'édition peut être limitée à {LINE_MAX} octets. En ouvert et
mode visuel, la longueur des lignes dans le tampon d'édition peut être limitée au nombre de
caractères qui s'adapteront à l'affichage. Si l'une des limites est dépassée pendant l'édition, un
message d'erreur doit être écrit. Si l'une des limites est dépassée par une ligne lue à partir d'un fichier,
un message d'erreur doit être écrit et la session d'édition peut être terminée.

Si l'éditeur s'arrête pour une raison autre qu'une commande utilisateur et que la modification
buffer a été modifié depuis la dernière écriture complète, il sera équivalent à un SIGHUP
événement asynchrone. Si le système plante, cela sera équivalent à un SIGHUP asynchrone
un événement.

Pendant l'initialisation (avant que le premier fichier ne soit copié dans le tampon d'édition ou tout utilisateur
les commandes du terminal sont traitées), ce qui suit doit se produire :

1. Si la variable d'environnement QUITTER est défini, l'éditeur doit exécuter le ex commandes
contenu dans cette variable.

2. Si le QUITTER variable n'est pas définie et toutes les conditions suivantes sont vraies :

une. le ACCUEIL La variable d'environnement n'est ni nulle ni vide.

b. Le fichier .exrc dans l'annuaire auquel se réfère le ACCUEIL variable d'environnement:

je. Existe

ii. appartient au même ID utilisateur que l'ID utilisateur réel du processus ou du
processus a les privilèges appropriés

iii. N'est accessible en écriture à personne d'autre que le propriétaire

l'éditeur exécute le ex commandes contenues dans ce fichier.

3. Si et seulement si toutes les conditions suivantes sont vraies :

une. Le répertoire courant n'est pas référencé par le ACCUEIL variable d'environnement.

b. Une commande dans le QUITTER variable d'environnement ou une commande dans le .exrc déposer dans le
répertoire auquel se réfère le ACCUEIL variable d'environnement définit l'option de l'éditeur
exrc.

c. Le .exrc fichier dans le répertoire courant :

je. Existe

ii. appartient au même ID utilisateur que l'ID utilisateur réel du processus, ou à l'un des
un ensemble d'ID utilisateur définis par l'implémentation

iii. N'est accessible en écriture à personne d'autre que le propriétaire

l'éditeur tentera d'exécuter le ex commandes contenues dans ce fichier.

Lignes dans n'importe quel .exrc fichier qui sont des lignes vides doivent être ignorés. Si seulement .exrc le fichier existe,
mais n'est pas lu pour des raisons de propriété ou d'autorisation, ce sera une erreur.

Après le QUITTER variable et tout .exrc sont traités, le premier fichier spécifié par
l'utilisateur doit être édité comme suit :

1. Si l'utilisateur a spécifié le -t option, l'effet sera comme si le ex Étiquette la commande était
entré avec l'argument spécifié, à l'exception du fait que si le traitement des balises
n'aboutit pas à un fichier à éditer, l'effet sera tel que décrit à l'étape 3 ci-dessous.

2. Sinon, si l'utilisateur a spécifié une ligne de commande filet arguments, l'effet sera
comme si le ex éditer La commande a été entrée avec le premier de ces arguments comme filet
argument.

3. Sinon, l'effet sera comme si le ex éditer la commande a été entrée avec un
nom de fichier inexistant comme son filet argument. Il n'est pas précisé si cette action doit
définir le chemin d'accès actuel. Dans une implémentation où cette action ne définit pas le
chemin actuel, toute commande d'éditeur utilisant le chemin actuel échouera jusqu'à ce qu'un
La commande editor définit le chemin d'accès actuel.

Si la -r option a été spécifiée, la première fois qu'un fichier dans la liste d'arguments initiale ou un
fichier spécifié par le -t l'option est modifiée, si les informations de récupération ont déjà été
sauvegardées à son sujet, ces informations seront récupérées et l'éditeur se comportera comme si le
le contenu du tampon d'édition a déjà été modifié. S'il y a plusieurs cas de
le fichier à récupérer, celui le plus récemment enregistré doit être récupéré, et un
message d'information indiquant qu'il existe des versions précédentes du fichier qui peuvent être récupérées
sera écrit. Si aucune information de récupération sur un fichier n'est disponible, un
un message à cet effet doit être écrit, et la modification doit se dérouler comme d'habitude.

Si la -c a été spécifiée, la première fois qu'un fichier qui existe déjà (y compris un
fichier qui n'existe peut-être pas mais pour lequel des informations de récupération sont disponibles, lorsque le -r
est spécifiée) remplace ou initialise le contenu du tampon d'édition, le
La ligne doit être définie sur la dernière ligne du tampon d'édition, la colonne actuelle doit être définie sur
non- , et le ex commandes spécifiées avec le -c l'option doit être exécutée. Dans ce
cas, la ligne actuelle et la colonne actuelle ne doivent pas être définies comme décrit pour la commande
associé au remplacement ou à l'initialisation du contenu du tampon d'édition. Toutefois, si
le -t option ou un Étiquette commande est associée à cette action, la -c commandes d'options
doit être exécuté, puis le mouvement vers l'étiquette doit être effectué.

La liste d'arguments actuelle doit initialement être définie sur les noms de fichiers spécifiés par l'utilisateur sur
la ligne de commande. Si aucun nom de fichier n'est spécifié par l'utilisateur, la liste d'arguments actuelle
sera vide. Si la -t option a été spécifiée, il n'est pas spécifié si un nom de fichier
résultant du traitement des balises doit être ajouté au début de la liste d'arguments actuelle. Dans le cas
où le nom de fichier est ajouté comme préfixe à la liste d'arguments actuelle, l'argument actuel
la référence de liste doit être définie sur ce nom de fichier. Dans le cas où le nom de fichier n'est pas ajouté
comme préfixe de la liste d'arguments actuelle, la référence de la liste d'arguments actuelle doit
logiquement être situé avant le premier des noms de fichiers spécifiés sur la ligne de commande (par
exemple, une suite ex next la commande doit éditer le premier nom de fichier de la commande
ligne). Si la -t option n'a pas été spécifiée, la référence de la liste d'arguments actuelle doit être à
le premier des noms de fichiers sur la ligne de commande.

Adressage in ex
Adressage dans ex concerne la ligne courante et la colonne courante ; l'adresse d'une ligne
est son numéro de ligne basé sur 1, l'adresse d'une colonne est son compte basé sur 1 à partir du
début de la ligne. Généralement, la ligne courante est la dernière ligne affectée par une commande.
Le numéro de la ligne courante est l'adresse de la ligne courante. Dans chaque description de commande,
l'effet de la commande sur le numéro de ligne courant et la colonne courante est décrit.

Les adresses sont construites comme suit :

1. Le personnage '.' (point) doit adresser la ligne courante.

2. Le personnage «$» doit adresser la dernière ligne du tampon d'édition.

3. Le nombre décimal positif n doit s'adresser au nème ligne du tampon d'édition.

4. L'adresse "'X" fait référence à la ligne marquée du caractère de nom de marque 'X', Qui
doit être une lettre minuscule du jeu de caractères portable, le caractère de guillemet arrière,
ou le caractère guillemet simple. Ce sera une erreur si la ligne qui a été marquée n'est pas
actuellement présent dans le tampon d'édition ou la marque n'a pas été définie. Les lignes peuvent être marquées
les ex marque or k commandes, ou le vi m commander.

5. Une expression régulière entourée par personnages ('/') doit adresser la première ligne
trouvé en recherchant vers l'avant à partir de la ligne suivant la ligne actuelle vers la fin de
le tampon d'édition et s'arrêtant à la première ligne pour laquelle la ligne excluant le
terminer correspond à l'expression régulière. Comme indiqué dans Un coupage régulier Expressions
in ex, une adresse constituée d'une expression régulière nulle délimitée par
personnages ("//") porte sur la ligne suivante pour laquelle la ligne excluant le
terminer correspond à la dernière expression régulière rencontrée. En outre,
la deuxième peut être omis à la fin d'une ligne de commande. Si la numérisation enveloppante éditer
est définie, la recherche doit revenir au début du tampon d'édition et
continuer jusqu'à et y compris la ligne actuelle, de sorte que l'ensemble du tampon d'édition est
cherché. Dans l'expression régulière, la séquence "\/" doit représenter un littéral
au lieu du délimiteur d'expression régulière.

6. Une expression régulière enfermée dans personnages ('?') doit aborder le
première ligne trouvée en recherchant en arrière à partir de la ligne précédant la ligne courante
vers le début du tampon d'édition et en s'arrêtant à la première ligne pour laquelle le
ligne à l'exclusion de la terminaison correspond à l'expression régulière. Une adresse
consistant en une expression régulière nulle délimitée par personnages ("???")
doit adresser la ligne précédente pour laquelle la ligne excluant la terminaison
correspond à la dernière expression régulière rencontrée. De plus, le deuxième
mark> peut être omis à la fin d'une ligne de commande. Si la numérisation enveloppante l'option d'édition est définie,
la recherche doit boucler du début du tampon d'édition à la fin du
tampon d'édition et continuez jusqu'à et y compris la ligne actuelle, de sorte que l'ensemble de l'édition
tampon est recherché. Dans l'expression régulière, la séquence "\?" représentera un
littéral au lieu du délimiteur RE.

7. Un ('+') ou un signe moins ('−') suivi d'un nombre décimal doit adresser
la ligne courante plus ou moins le numéro. UNE '+' or '−' non suivi d'une décimale
numéro doit adresser la ligne courante plus ou moins 1.

Les adresses peuvent être suivies de zéro ou plusieurs décalages d'adresses, en option -séparé.
Les décalages d'adresse sont construits comme suit :

1. La '+' or '−' immédiatement suivi d'un nombre décimal ajoute (soustrait) le
nombre indiqué de lignes vers (depuis) ​​l'adresse. UNE '+' or '−' pas suivi d'un
le nombre décimal ajoute (soustrait) 1 à (de) l'adresse.

2. Un nombre décimal ajoute le nombre de lignes indiqué à l'adresse.

Le fait qu'une valeur d'adresse intermédiaire soit inférieure ou supérieure à zéro ne doit pas constituer une erreur
que la dernière ligne du tampon d'édition. Ce sera une erreur pour la valeur d'adresse finale à
être inférieur à zéro ou supérieur à la dernière ligne du tampon d'édition.

Les commandes prennent zéro, une ou deux adresses ; voir les descriptions de 1adresse ainsi que 2adresse in
Command Descriptions in ex. Si plus que le nombre requis d'adresses est fourni à
une commande qui nécessite zéro adresse, ce sera une erreur. Sinon, si plus que le
nombre requis d'adresses sont fournies à une commande, les adresses spécifiées en premier
doivent être évalués puis rejetés jusqu'à ce qu'il reste le nombre maximum d'adresses valides.

Les adresses sont séparées les unes des autres par un (',') ou un (';').
Si aucune adresse n'est spécifiée avant ou après un ou séparateur, il doit être
comme si l'adresse de la ligne courante était spécifiée avant ou après le séparateur. Dans le
cas d'un séparateur, la ligne courante ('.') doit être mis à la première
adresse, et alors seulement l'adresse suivante sera calculée. Cette fonction peut être utilisée pour
déterminer la ligne de départ pour les recherches en avant et en arrière (voir règles 5. et 6.).

UNE ('%') équivaut à saisir les deux adresses "1,$".

Toute délimitation caractères entre les adresses, les séparateurs d'adresses ou l'adresse
les décalages doivent être supprimés.

Command Gamme Analyse in ex
Le symbole suivant est utilisé dans cette section et les suivantes pour décrire le comportement de l'analyse :

échapper Si un caractère est appelé `` -échappé'' ou `` -V-
échappé'', cela signifie que le caractère a acquis ou perdu une signification particulière
du fait qu'ils sont précédés, respectivement, d'un ou ‐V
personnage. Sauf indication contraire, le caractère d'échappement doit être supprimé
à ce moment-là et ne seront plus pris en considération à quelque fin que ce soit.

L'analyse de la ligne de commande doit être effectuée dans les étapes suivantes. Pour chaque étape, des personnages
déjà évalué doit être ignoré ; c'est-à-dire que l'expression « personnage principal » fait référence à
le caractère suivant qui n'a pas encore été évalué.

1. Diriger les caractères doivent être sautés.

2. Diriger les caractères doivent être sautés.

3. Si le premier caractère est un caractère entre guillemets, les caractères jusqu'à et
y compris le prochain non- -échappé doivent être jetés, et tout
les caractères suivants doivent être analysés comme une commande distincte.

4. Les caractères de tête pouvant être interprétés comme des adresses doivent être évalués ; voir
Adressage in ex.

5. Diriger les caractères doivent être sautés.

6. Si le caractère suivant est un personnage ou un :

une. Si le caractère suivant est un :

je. Si ex est en mode ouvert ou visuel, la ligne courante doit être réglée sur la dernière
l'adresse indiquée, le cas échéant.

ii. Sinon, si la dernière commande s'est terminée par un personnage,
aucune mesure ne doit être prise ; par exemple, la commande "|| " doit
exécuter deux commandes implicites, pas trois.

iii. Sinon, l'étape 6.b. doit s'appliquer.

b. Sinon, la commande implicite sera la impression commander. Le dernier #, pet l
indicateurs spécifiés à n'importe quel ex commande doit être rappelée et doit s'appliquer à cette
commande implicite. Exécuter le ex nombre, impressionou liste la commande doit définir le
souvenir des drapeaux à #, rien, et l, respectivement, plus tout autre indicateur
spécifié pour cette exécution du nombre, impressionou liste commander.

If ex n'effectue pas actuellement de de défis or v commande, et pas d'adresse ou de nombre
est spécifié, la ligne courante doit être incrémentée de 1 avant que la commande ne soit
réalisé. Si l'incrémentation de la ligne actuelle entraîne une adresse au-delà de la
dernière ligne du tampon d'édition, la commande échouera et l'incrément ne
arriver.

c. le ou caractère doit être rejeté et tout autre
les caractères doivent être analysés comme une commande distincte.

7. Le nom de la commande doit être composé du caractère suivant (si le caractère n'est pas
alphabétique), ou le caractère suivant et tous les caractères alphabétiques suivants (si le
caractère alphabétique), avec les exceptions suivantes :

une. Commandes constituées de n'importe quel préfixe des caractères du nom de la commande effacer,
suivi immédiatement de l'un des caractères 'l', 'p', '+', '−'ou '#' doit être
interprété comme un effacer commande, suivie d'un , suivi des caractères
qui ne faisaient pas partie du préfixe du effacer commander. Le nombre maximal de
les caractères doivent correspondre au nom de la commande effacer; par exemple, "del" doit
ne pas être traité comme "de" suivi du drapeau l.

b. Commandes constituées du personnage 'k', suivi d'un caractère qui peut être
utilisé comme nom d'une marque, doit être équivalent à la commande de marque suivie d'un
, suivi du caractère qui suit le 'k'.

c. Commandes constituées du personnage 's', suivi de caractères pouvant être
interprétés comme des options valides pour le s commande, doit être l'équivalent de la s
commande, sans modèle ni valeur de remplacement, suivie d'un ,
suivi des caractères après le 's'.

8. Le nom de la commande doit être comparé aux noms de commande possibles, et une commande
nom qui contient un préfixe correspondant aux caractères spécifiés par l'utilisateur doit être le
commande exécutée. Dans le cas de commandes où les caractères spécifiés par l'utilisateur
peut être ambigu, la commande exécutée doit être la suivante :

??
aajouter ??nnext ??tt
cChange ??pimpression ??udéfaire
chChange ??primpression ??undéfaire
eéditer ??rlire ??vv
mBougez ??relire ??wécrire
mamarque ??ss │ │
??
Les extensions de mise en œuvre avec des noms provoquant des ambiguïtés similaires ne doivent pas être vérifiées
pour une correspondance jusqu'à ce que toutes les correspondances possibles pour les commandes spécifiées par POSIX.1‐2008 aient
été vérifié.

9. Si la commande est un ! commande, ou si la commande est une lire commande suivie de zéro
ou plus personnages et un !, ou si la commande est un écrire commande suivie de
un ou plus personnages et un !, le reste de la commande doit inclure tous
caractères jusqu'à un non- -échappé . le doit être
rejeté et tous les caractères suivants doivent être analysés comme un ex commander.

10. Sinon, si la commande est un éditer, exou next commande, ou un visuel commande pendant que
en mode ouvert ou visuel, la partie suivante de la commande doit être analysée comme suit :

une. Quelconque '!' caractère qui suit immédiatement la commande doit être ignoré et faire partie
de la commande.

b. Tout leader les caractères doivent être sautés et faire partie de la commande.

c. Si le caractère suivant est un '+', caractères jusqu'au premier non- -échappé
ou non -échappé doivent être ignorés et faire partie du
commander.

ré. Le reste de la commande doit être déterminé par les étapes spécifiées au paragraphe
12.

11. Sinon, si la commande est un de défis, ouvert, sou v commande, la partie suivante de la
La commande doit être analysée comme suit :

une. Tout leader les caractères doivent être sautés et faire partie de la commande.

b. Si le caractère suivant n'est pas un guillemet alphanumérique, ,
, ou personnage:

je. Le caractère suivant doit être utilisé comme délimiteur de commande.

ii. Si la commande est un de défis, ouvertou v commande, caractères jusqu'au premier
non- -échappé , ou premier non- -délimiteur échappé
caractère, doit être ignoré et faire partie de la commande.

iii. Si la commande est un s commande, caractères jusqu'au premier
non- -échappé , ou deuxième non- -échappé
caractère délimiteur, doit être ignoré et faire partie de la commande.

c. Si la commande est un de défis or v commande, caractères jusqu'au premier
non- -échappé doivent être ignorés et faire partie du commandement.

ré. Sinon, le reste de la commande doit être déterminé par les étapes spécifiées dans
paragraphe 12.

12. Sinon :

une. Si la commande était un Localisation, démapper, abrégerou abréger commande, caractères
jusqu'au premier non- ‐V-échappé , , ou double-
Le caractère guillemet doit être ignoré et faire partie de la commande.

b. Sinon, les caractères jusqu'au premier non- -échappé ,
, ou les guillemets doubles doivent être ignorés et faire partie de la
commander.

c. Si la commande était un ajouter, Changeou insérer commande, et l'étape 12.b. terminé
à caractère, tous les caractères suivants, jusqu'au prochain
non- -échappé doit être utilisé comme texte d'entrée pour la commande.

ré. Si la commande s'est terminée par un guillemet double, tous les caractères suivants,
jusqu'au prochain non- -échappé , doit être rejeté.

e. La terminaison ou caractère doit être rejeté et tout
les caractères suivants doivent être analysés comme un ex commander.

Les arguments de commande doivent être analysés comme décrit par le synopsis et la description de chaque
individuel ex commander. Cette analyse ne doit pas être -sensible, sauf pour le !
argument, qui doit suivre le nom de la commande sans intervenir personnages, et
où il serait autrement ambigu. Par example, compter ainsi que drapeau les arguments n'ont pas besoin d'être
-séparés parce que "d22p" n'est pas ambigu, mais filet arguments à la ex next
la commande doit être séparée par un ou plusieurs personnages. Quelconque en commande
arguments pour le abréger, abréger, Localisationet démapper les commandes peuvent être -V-
échappé, auquel cas le ne doit pas être utilisé comme délimiteur d'argument. Quelconque
dans l'argument de commande pour toute autre commande peut être -échappé, auquel cas
cette ne doit pas être utilisé comme délimiteur d'argument.

Dans les arguments de commande pour le abréger, abréger, Localisationet démapper commandes, tout
le personnage peut être ‐V-échappé. Tous ces caractères échappés doivent être traités
littéralement et n'aura pas de signification particulière. Dans les arguments de commande pour tous les autres ex
commandes qui ne sont pas des expressions régulières ou des chaînes de remplacement, tout caractère qui
sinon avoir une signification particulière peut être -échappé. Les caractères échappés doivent être
traités littéralement, sans signification particulière en tant que caractères d'expansion du shell ou '!', '%'et
'#' caractères d'extension. Voir Un coupage régulier Expressions in ex ainsi que après extraction String in ex en
descriptions des arguments de commande qui sont des expressions régulières ou des chaînes de remplacement.

Non- -échappé '%' personnages apparaissant dans filet arguments à tout ex la commande doit
être remplacé par le chemin actuel ; sans échappé '#' les caractères sont remplacés par le
chemin alternatif. Ce sera une erreur si '%' or '#' les caractères apparaissent sans échappement dans un
argument et leurs valeurs correspondantes ne sont pas définies.

Non- -échappé '!' caractères dans les arguments de ex ! commande ou
le mode ouvert et visuel ! commande, ou dans les arguments de la ex lire commande, où le
premier non- après le nom de la commande est un '!' personnage, ou dans les arguments du
ex écrire commande où le nom de la commande est suivi d'un ou plusieurs personnages et
le premier non- après le nom de la commande est un '!' caractère, doit être remplacé par
les arguments de la dernière de ces trois commandes tels qu'ils apparaissaient après tout sans échappé
'%', '#'et '!' les caractères ont été remplacés. Ce sera une erreur si '!' caractères
apparaissent sans échappement dans l'une de ces commandes et il n'y a eu aucune exécution précédente d'une
de ces commandes.

Si une erreur se produit lors de l'analyse ou de l'exécution d'un ex commander:

* Un message d'information à cet effet doit être rédigé. Exécution de la ex commander
doit s'arrêter et le curseur (par exemple, la ligne et la colonne en cours) ne doit pas être
encore modifié.

* Si la ex commande résultant d'une extension de carte, tous les caractères de cette carte
l'expansion doit être rejetée, sauf indication contraire par le Localisation commander.

* Sinon, si le ex commande résultant du traitement d'un QUITTER sûr, heureux et sain
variable, un .exrc déposer un :la source commande, un -c option, ou un +commander spécifié à un
ex éditer, ex, nextou visuel commande, aucune autre commande de la source de la
les commandes doivent être exécutées.

* Sinon, si le ex commande résultant de l'exécution d'un buffer ou d'un de défis or v
commande, aucune autre commande causée par l'exécution du tampon ou de la de défis or v
la commande doit être exécutée.

* Sinon, si le ex la commande n'a pas été interrompue par un , tous les caractères jusqu'à
et y compris le prochain non- -échappé doit être mis au rebut.

Entrée Montage in ex
Le symbole suivant est utilisé dans cette section et les suivantes pour spécifier la commande
actes:

mot Dans la locale POSIX, un mot consiste en une séquence maximale de lettres, chiffres,
et des traits de soulignement, délimités aux deux extrémités par des caractères autres que des lettres,
chiffres, ou des traits de soulignement, ou par le début ou la fin d'une ligne ou le tampon d'édition.

Lors de l'acceptation des caractères d'entrée de l'utilisateur, dans l'une ou l'autre ex mode commande ou ex saisie de texte
Mode, ex doit permettre le traitement d'entrée en mode canonique, tel que défini dans les interfaces système
tome de POSIX.1‐2008.

Si dans ex mode de saisie de texte :

1. Si le nombre l'option d'édition est définie, ex demandera la saisie en utilisant le numéro de ligne qui
serait affecté à la ligne si elle est saisie, dans le format spécifié pour le ex
nombre commander.

2. Si le indentation automatique l'option d'édition est définie, ex doit demander la saisie à l'aide de indentation automatique
personnages, tels que décrits par le indentation automatique possibilité d'édition. indentation automatique les caractères doivent
suivre le numéro de ligne, le cas échéant.

Si dans ex mode de commande :

1. Si le rapide l'option d'édition est définie, l'entrée doit être invitée à utiliser un seul ':'
personnage; sinon, il n'y aura pas d'invite.

Les caractères saisis dans les sections suivantes auront les effets suivants sur le
ligne d'entrée.

Faites défiler
Synopsis:
eof

Voir la description du Sty eof caractère Sty.

Si dans ex mode de commande :

Si la eof caractère est le premier caractère entré sur la ligne, la ligne doit être
évalué comme s'il contenait deux caractères : un ‐D et un .

Sinon, le eof caractère n'a pas de signification particulière.

Si dans ex mode de saisie de texte :

Si le curseur suit un indentation automatique personnage, le indentation automatique personnages dans le
la ligne doit être modifiée de manière à ce qu'une partie du prochain caractère de saisie de texte soit
affiché sur la première colonne de la ligne après la précédente largeur de décalage option de modification
limite de la colonne, et l'utilisateur sera à nouveau invité à saisir pour la même ligne.

Sinon, si le curseur suit un «0 ', qui fait suite à une indentation automatique caractère, et
le «0 ' était le caractère de saisie de texte précédent, le «0 ' et toutes indentation automatique
les caractères de la ligne doivent être supprimés et l'utilisateur doit être à nouveau invité à saisir
entrée pour la même ligne.

Sinon, si le curseur suit un '^', qui fait suite à une indentation automatique caractère, et
le '^' était le caractère de saisie de texte précédent, le '^' et toutes indentation automatique
les caractères de la ligne doivent être supprimés et l'utilisateur doit être à nouveau invité à saisir
entrée pour la même ligne. De plus, le indentation automatique niveau pour la ligne d'entrée suivante
doit être dérivé de la même ligne à partir de laquelle le indentation automatique niveau pour le courant
la ligne d'entrée a été dérivée.

Sinon, s'il n'y a pas indentation automatique ou des caractères de saisie de texte dans la ligne, le eof
caractère doit être rejeté.

Sinon, le eof caractère n'a pas de signification particulière.


Synopsis:

-J

Si dans ex mode de commande :

Provoque l'analyse de la ligne de commande ; ‐J doit être mappé sur le
dans ce but.

Si dans ex mode de saisie de texte :

Termine la ligne actuelle. S'il n'y a pas d'autres caractères que indentation automatique
caractères sur la ligne, tous les caractères sur la ligne doivent être supprimés.

Invite de saisie de texte sur une nouvelle ligne après la ligne actuelle. Si la indentation automatique éditer
est définie, un nombre approprié de indentation automatique les caractères doivent être ajoutés en tant que
préfixe à la ligne comme décrit par le ex indentation automatique possibilité d'édition.


Synopsis:


Autoriser la saisie d'un ou ‐J comme caractère littéral, en supprimant
toute signification particulière qu'il peut avoir pour l'éditeur pendant le mode de saisie de texte. le
caractère doit être conservé et évalué lorsque la ligne de commande est analysée, ou conservée et
inclus lorsque le texte d'entrée devient une partie du tampon d'édition.

‐V
Synopsis:
-V

Autoriser la saisie de tout caractère suivant en tant que caractère littéral, en supprimant tout caractère spécial
ce qui signifie qu'il peut avoir à l'éditeur pendant le mode de saisie de texte. le ‐V caractère
doit être rejeté avant que la ligne de commande ne soit analysée ou que le texte saisi fasse partie de la
tampon d'édition.

Si la fonctionnalité ``literal next'' est exécutée par le système sous-jacent, il est
Implémentation définie si un caractère autre que ‐V remplit cette fonction.

‐W
Synopsis:
-W

Jeter le ‐W, et le mot qui le précède dans la ligne d'entrée, y compris
caractères suivant le mot et précédant le ‐W. Si le ``mot
La fonctionnalité d'effacement est exécutée par le système sous-jacent, elle est définie par l'implémentation
si un personnage autre que ‐W remplit cette fonction.

Command Descriptions in ex
Les symboles suivants sont utilisés dans cette section pour représenter les modificateurs de commande. Une partie de
ces modificateurs peuvent être omis, auquel cas les valeurs par défaut spécifiées doivent être utilisées.

1adresse Une adresse sur une seule ligne, donnée sous l'une des formes décrites dans Adressage in ex;
la valeur par défaut sera la ligne courante ('.'), sauf indication contraire.

Si l'adresse de ligne est zéro, il s'agit d'une erreur, sauf indication contraire dans
les descriptions de commandes suivantes.

Si le tampon d'édition est vide et que l'adresse est spécifiée avec une commande autre
que =, ajouter, insérer, ouvert, mettre, lireou visuel, ou l'adresse n'est pas nulle,
ce sera une erreur.

2adresse Deux adresses spécifiant une plage de lignes inclusive. Si aucune adresse n'est
spécifié, la valeur par défaut pour 2adresse doit être la ligne courante uniquement (".,."), sauf si
autrement spécifié dans les descriptions de commandes suivantes. Si une adresse est
spécifié, 2adresse doit spécifier cette ligne uniquement, sauf indication contraire dans le
descriptions de commandes suivantes.

Ce sera une erreur si la première adresse est supérieure à la deuxième adresse.

Si le tampon d'édition est vide et que les deux adresses sont spécifiées avec une commande
autre que le !, écrire, wqou quitter commandes, ou l'une des adresses n'est pas zéro, il
sera une erreur.

compter Un nombre décimal positif. Si compter est spécifié, il doit être équivalent à
spécifiant une adresse supplémentaire à la commande, sauf indication contraire par
les descriptions de commandes suivantes. L'adresse supplémentaire est égale à la
dernière adresse spécifiée à la commande (soit explicitement, soit par défaut) plus
compter−1.

Si cela entraîne une adresse supérieure à la dernière ligne de l'édition
tampon, il doit être corrigé pour être égal à la dernière ligne du tampon d'édition.

drapeaux Un ou plusieurs personnages '+', '−', '#', 'p'ou 'l' (aune). Le drapeau
les personnages peuvent être -séparés, et dans n'importe quel ordre ou combinaison. le
caractères '#', 'p'et 'l' doit entraîner l'écriture des lignes dans le format
spécifié par le impression commande avec le spécifié drapeaux.

Les lignes à écrire sont les suivantes :

1. Toutes les lignes de tampon d'édition écrites pendant l'exécution du ex &, ~, liste,
nombre, ouvert, impression, s, visuelet z les commandes doivent être écrites comme spécifié
by drapeaux.

2. Après l'achèvement d'un ex commande avec un drapeau comme argument, la
la ligne actuelle doit être écrite comme spécifié par drapeaux, à moins que la ligne courante
était la dernière ligne écrite par la commande.

Les personnages '+' ainsi que '−' provoquer la valeur de la ligne actuelle après le
exécution de la ex commande à ajuster par l'adresse de décalage comme décrit dans
Adressage in ex. Cet ajustement doit avoir lieu avant que la ligne actuelle ne soit
écrit comme décrit au point 2. ci-dessus.

La valeur par défaut pour drapeaux n'en sera pas.

tampon L'une des nombreuses zones nommées pour contenir du texte. Les tampons nommés sont spécifiés
par les caractères alphanumériques de la locale POSIX. Il y aura aussi un
Tampon ``sans nom''. Lorsqu'aucun tampon n'est spécifié pour les commandes de l'éditeur qui utilisent un
buffer, le buffer sans nom doit être utilisé. Commandes qui stockent du texte dans des tampons
stockera le texte tel qu'il était avant que la commande ne prenne effet, et stockera
le texte apparaissant plus tôt dans le fichier avant le texte apparaissant plus tard dans le fichier,
indépendamment de la façon dont la zone de texte a été spécifiée. Commandes qui stockent du texte dans
les tampons doivent stocker le texte dans le tampon sans nom ainsi que tout autre
un tampon.

In ex commandes, les noms de tampon sont spécifiés comme le nom par lui-même. En ouvert ou
commandes en mode visuel le nom est précédé d'un guillemet double ('"') personnage.

Si le nom du tampon spécifié est un caractère majuscule et que le contenu du tampon
doivent être modifiés, le tampon doit être ajouté au lieu d'être
écrasé. Si le tampon n'est pas modifié, en spécifiant le nom du tampon dans
les minuscules et les majuscules doivent avoir des résultats identiques.

Il doit également y avoir des tampons nommés par les numéros 1 à 9. En ouvert et visuel
mode, si une zone de texte comprenant des caractères de plus d'une ligne est
étant modifié par le vi c or d commandes, le caractère de mouvement associé à
le c or d commandes spécifie que le texte du tampon doit être en mode ligne, ou le
commandes %, `, /, ?, (, ), N, n, {ou } sont utilisés pour définir une région de texte pour
le c or d commandes, le contenu des tampons 1 à 8 doit être déplacé dans le
tampon nommé par la valeur numériquement supérieure suivante, le contenu du tampon 9
doit être ignoré et la zone de texte doit être copiée dans le tampon 1. Cette
doit être en plus de copier le texte dans un tampon spécifié par l'utilisateur ou sans nom
tampon, ou les deux. Les tampons numériques peuvent être spécifiés comme tampon source pour open
et les commandes du mode visuel ; cependant, en spécifiant un tampon numérique comme écriture
cible d'une commande en mode ouvert ou visuel doit avoir des résultats non spécifiés.

Le texte de chaque tampon doit avoir la caractéristique d'être en ligne ou
mode caractère. L'ajout de texte à un tampon non vide doit définir le mode pour qu'il corresponde
la caractéristique du texte en annexe. L'ajout de texte à un tampon doit
provoquer la création d'au moins une ligne supplémentaire dans le buffer. Tout le texte
stocké dans des tampons par ex les commandes doivent être en mode ligne. le ex commandes qui
utiliser des tampons comme source de texte spécifier individuellement comment les tampons de différents
les modes sont gérés. Chaque commande en mode ouvert ou visuel qui utilise des tampons pour tout
Purpose spécifie individuellement le mode du texte stocké dans le tampon et
comment les tampons de différents modes sont gérés.

filet Texte de commande utilisé pour dériver un chemin. La valeur par défaut sera la valeur actuelle
chemin, tel que défini précédemment, auquel cas, si aucun chemin courant n'a encore
été établi, il s'agit d'une erreur, sauf indication contraire dans le
descriptions des commandes individuelles qui suivent. Si le texte de la commande contient
des personnages '~', '{', '[', '*', '?', «$», '"', citation arrière, guillemet simple,
et , il doit être soumis au processus de ``expansions de coque'',
comme décrit ci-dessous ; si plusieurs chemins d'accès sont générés et la commande
n'en attend qu'un, ce sera une erreur.

Le processus d'expansion du shell dans l'éditeur doit être effectué comme suit. le ex
l'utilitaire doit passer deux arguments au programme nommé par l'option d'édition du shell ;
le premier sera -c, et la seconde sera la chaîne "écho" et la commande
texte comme argument unique. La sortie standard et l'erreur standard de ce
commande remplace le texte de la commande.

! Un caractère qui peut être ajouté au nom de la commande pour modifier son fonctionnement, comme
détaillés dans les descriptions des commandes individuelles. A l'exception du ex
lire, écrireet ! commandes, le '!' le personnage n'agira comme un modificateur que si
il n'y a pas caractères entre celui-ci et le nom de la commande.

se souvient recherche direction
La vi commandes N ainsi que n commencer la recherche vers l'avant ou vers l'arrière dans
le tampon d'édition basé sur une direction de recherche mémorisée, qui est initialement
désactivé, et est défini par le ex de défis, v, set Étiquette commandes, et le vi / ainsi que ?
les commandes.

Abréger
Synopsis:
un B[abréger][lhs rhs]

If lhs ainsi que rhs ne sont pas spécifiés, écrivez la liste actuelle des abréviations et ne faites rien
plus.

Les implémentations peuvent restreindre le jeu de caractères acceptés dans lhs or rhs, excepté
caractères imprimables et les caractères ne doivent pas être restreints. Supplémentaire
les restrictions doivent être définies par la mise en œuvre.

À la fois lhs ainsi que rhs, tout caractère peut être échappé avec un ‐V, auquel cas le
caractère ne doit pas être utilisé pour délimiter lhs de rhs, et la fuite ‐V doit être
mis au rebut.

En mode de saisie de texte ouvert et visuel, si un mot ou caractère qui n'est pas échappé
par un ‐Le caractère V est entré après un caractère de mot, une vérification doit être effectuée pour un
ensemble de caractères correspondant lhs, dans le texte saisi lors de cette commande. Si c'est
trouvé, l'effet sera comme si rhs a été entré au lieu de lhs.

Le jeu de caractères qui sont vérifiés est défini comme suit :

1. Si aucun caractère n'est inséré avant le mot et le non-mot ou personnages
qui a déclenché la vérification, l'ensemble de caractères doit être constitué du mot caractère.

2. Si le caractère inséré avant le mot et le non-mot ou des personnages qui
déclenché le contrôle est un caractère de mot, l'ensemble de caractères doit se composer du
caractères insérés immédiatement avant les caractères déclencheurs qui sont word
caractères, plus le caractère du mot déclencheur.

3. Si le caractère inséré avant le mot et le non-mot ou des personnages qui
déclenché le contrôle n'est pas un caractère de mot, l'ensemble de caractères doit être composé de
les caractères qui ont été insérés avant les caractères déclencheurs qui ne sont ni
caractères ni caractères de mot, plus le caractère de mot déclencheur.

Il n'est pas précisé si le lhs argument entré pour le ex abréger ainsi que abréger
commandes est remplacé de cette façon. Que le remplacement ait lieu ou non,
l'effet de la commande sera comme si le remplacement n'avait pas eu lieu.

Courant en ligne: Inchangé.

Courant colonne: Inchangé.

Ajouter
Synopsis:
[1adresse] a[pend][!]

Entrer ex mode de saisie de texte ; le texte saisi doit être placé après la ligne spécifiée. Si ligne
zéro est spécifié, le texte doit être placé au début du tampon d'édition.

Cette commande sera affectée par le nombre ainsi que indentation automatique modifier les options ; suivant le
nom de la commande avec '!' causera le indentation automatique modifier le paramètre d'option à basculer
la durée de cette commande seulement.

Courant en ligne: défini sur la dernière ligne d'entrée ; si aucune ligne n'a été entrée, défini sur le spécifié
ligne, ou à la première ligne du tampon d'édition si une ligne de zéro a été spécifiée, ou zéro si
le tampon d'édition est vide.

Courant colonne: défini sur non- .

Arguments
Synopsis:
ar[gs]

Écrivez la liste d'arguments actuelle, avec l'entrée de la liste d'arguments actuelle, le cas échéant, entre '['
ainsi que ']' caractères.

Courant en ligne: Inchangé.

Courant colonne: Inchangé.

Modifier
Synopsis:
[2adresse] c[CHANGEMENT][!][compter]

Entrer ex mode de saisie de texte ; le texte saisi doit remplacer les lignes spécifiées. Le spécifié
les lignes seront copiées dans le tampon sans nom, qui deviendra un tampon en mode ligne.

Cette commande sera affectée par le nombre ainsi que indentation automatique modifier les options ; suivant le
nom de la commande avec '!' causera le indentation automatique modifier le paramètre d'option à basculer
la durée de cette commande seulement.

Courant en ligne: défini sur la dernière ligne d'entrée ; si aucune ligne n'a été saisie, défini sur la ligne avant
la première adresse, ou à la première ligne du tampon d'édition s'il n'y a pas de lignes précédant
la première adresse, ou à zéro si le tampon d'édition est vide.

Courant colonne: défini sur non- .

Modifier Annuaire
Synopsis:
chd[ir][!][annuaire]
cd[!][annuaire]

Remplacez le répertoire de travail actuel par annuaire.

Sinon annuaire l'argument est spécifié, et le ACCUEIL la variable d'environnement est définie sur un non-
valeur nulle et non vide, annuaire doit par défaut à la valeur indiquée dans le ACCUEIL
variable d'environnement. Si la ACCUEIL variable d'environnement est vide ou n'est pas définie, la
valeur par défaut de annuaire est défini par la mise en œuvre.

Sinon '!' est ajouté au nom de la commande et le tampon d'édition a été modifié depuis
la dernière écriture complète, et le chemin actuel ne commence pas par un '/', ce sera
une erreur.

Courant en ligne: Inchangé.

Courant colonne: Inchangé.

Copier
Synopsis:
[2adresse] co[py] 1adresse [drapeaux]
[2adresse] t 1adresse [drapeaux]

Copiez les lignes spécifiées après la ligne de destination spécifiée ; la ligne zéro précise que
les lignes doivent être placées au début du tampon d'édition.

Courant en ligne: défini sur la dernière ligne copiée.

Courant colonne: défini sur non- .

Supprimer
Synopsis:
[2adresse] d[supprimer][tampon][compter][drapeaux]

Supprimer les lignes spécifiées dans un tampon (par défaut le tampon sans nom), qui doit
devenir un tampon en mode ligne.

Les indicateurs peuvent suivre immédiatement le nom de la commande ; voir Command Gamme Analyse in ex.

Courant en ligne: Définir sur la ligne suivant les lignes supprimées, ou sur la dernière ligne de l'édition
buffer si cette ligne dépasse la fin du tampon d'édition, ou à zéro si le tampon d'édition est
vide.

Courant colonne: défini sur non- .

Modifier
Synopsis:
e[dit][!][+commander][filet]
ex[!][+commander][filet]

Sinon '!' est ajouté au nom de la commande et le tampon d'édition a été modifié depuis
la dernière écriture complète, ce sera une erreur.

If filet est spécifié, remplace le contenu actuel du tampon d'édition par le contenu actuel
contenu de filet, et définissez le chemin d'accès actuel sur filet. Si filet n'est pas spécifié, remplacez
le contenu actuel du tampon d'édition avec le contenu actuel du fichier nommé par le
chemin d'accès actuel. Si, pour une raison quelconque, le contenu actuel du fichier n'est pas accessible,
le tampon d'édition doit être vide.

La +commander l'option doit être -délimité ; personnages au sein de la +commander vous
être échappé en les faisant précéder d'un personnage. le +commander doit être
interprété comme un ex commande immédiatement après que le contenu du tampon d'édition a été
remplacé et la ligne et la colonne actuelles ont été définies.

Si le tampon d'édition est vide :

Courant en ligne: mis à 0.

Courant colonne: mis à 1.

Sinon, s'il est exécuté pendant ex mode commande ou si le +commander l'argument est spécifié :

Courant en ligne: défini sur la dernière ligne du tampon d'édition.

Courant colonne: défini sur non- .

Sinon, si filet est omis ou renvoie le chemin d'accès actuel :

Courant en ligne: défini sur la première ligne du tampon d'édition.

Courant colonne: défini sur non- .

Sinon, si filet est le même que le dernier fichier édité, la ligne et la colonne doivent être définies
comme suit; si le fichier a déjà été édité, la ligne et la colonne peuvent être définies comme suit :

Courant en ligne: défini sur la dernière valeur conservée lors de la dernière modification de ce fichier. Si cette valeur est
pas une ligne valide dans le nouveau tampon d'édition, défini sur la première ligne du tampon d'édition.

Courant colonne: Si la ligne actuelle a été définie sur la dernière valeur détenue lors de la dernière création du fichier
modifié, défini sur la dernière valeur détenue lors de la dernière modification du fichier. Sinon, ou si le
la dernière valeur n'est pas une colonne valide dans le nouveau tampon d'édition, définie sur non- .

Autrement:

Courant en ligne: défini sur la première ligne du tampon d'édition.

Courant colonne: défini sur non- .

Déposez votre dernière attestation
Synopsis:
f[s][filet]

Si un filet est spécifié, le chemin alternatif doit être défini sur le
chemin d'accès, et le chemin d'accès actuel doit être défini sur filet.

Écrivez un message d'information. Si le fichier a un chemin d'accès courant, il doit être inclus
dans ce message ; sinon, le message doit indiquer qu'il n'y a pas de nom de chemin actuel.
Si le tampon d'édition contient des lignes, le numéro de la ligne actuelle et le nombre de lignes dans le
le tampon d'édition doit être inclus dans ce message ; sinon, le message doit indiquer que
le tampon d'édition est vide. Si le tampon d'édition a été modifié depuis le dernier
écrire, ce fait doit être inclus dans ce message. Si la lecture seulement l'option d'édition est définie,
ce fait doit être inclus dans ce message. Le message peut contenir d'autres
</br>L’Information.

Courant en ligne: Inchangé.

Courant colonne: Inchangé.

Global
Synopsis:
[2adresse] g[global] /modèle/ [commandes]
[2adresse] v/modèle/ [commandes]

Le facultatif '!' caractère après le de défis commande doit être le même que l'exécution de la v
commander.

If modèle est vide (par exemple, "//") ou non spécifié, la dernière expression régulière utilisée
dans la commande de l'éditeur doit être utilisé comme modèleL’ modèle peut être délimité par
caractères (indiqués dans le Synopsis), ainsi que tout caractère non alphanumérique ou non
autre que , , , ou entre guillemets.

Si aucune ligne n'est spécifiée, les lignes seront par défaut le fichier entier.

La de défis ainsi que v les commandes sont logiquement des opérations en deux passes. Tout d'abord, marquez les lignes à l'intérieur
les lignes spécifiées pour lesquelles la ligne excluant la terminaison allumettes
(de défis) ou ne correspond pas (v or mondial!) le modèle spécifié. Deuxièmement, exécutez le ex
commandes données par commandes, avec la ligne courante ('.') défini sur chaque ligne marquée. Si un
erreur se produit pendant ce processus, ou le contenu du tampon d'édition est remplacé (par
exemple, par le ex :modifier commande) un message d'erreur doit être écrit et plus aucune commande
résultant de l'exécution de cette commande sera traité.

Multiple ex les commandes peuvent être spécifiées en entrant plusieurs commandes sur une seule ligne en utilisant
une pour les délimiter, soit un par ligne, en échappant chacun avec un
.

Si aucune commande n'est spécifiée :

1. Si dans ex mode de commande, ce sera comme si le impression commande ont été spécifiés.

2. Sinon, aucune commande ne sera exécutée.

Pour le ajouter, Changeet insérer commandes, le texte saisi doit être inclus dans
la commande et la fin peut être omis si la commande termine la liste des
commandes. le ouvert ainsi que visuel les commandes peuvent être spécifiées comme l'une des commandes, dans lesquelles
cas, chaque ligne marquée doit faire entrer l'éditeur en mode ouvert ou visuel. Si ouvert ou
le mode visuel est quitté en utilisant le vi Q commande, la ligne en cours doit être définie sur la prochaine
ligne marquée, et le mode ouvert ou visuel est revenu, jusqu'à ce que la liste des lignes marquées soit
épuisé.

La de défis, vet défaire les commandes ne peuvent pas être utilisées dans commandes. Les lignes marquées peuvent être supprimées
par les commandes exécutées pour les lignes apparaissant plus tôt dans le fichier que les lignes marquées. Dans
dans ce cas, aucune commande ne sera exécutée pour les lignes supprimées.

Si la direction de recherche mémorisée n'est pas définie, le de défis ainsi que v les commandes doivent le mettre à
vers l'avant.

La impression automatique ainsi que indentation automatique les options d'édition doivent être inhibées pendant la durée de la g or
v commander.

Courant en ligne: Si aucune commande n'est exécutée, défini sur la dernière ligne marquée. Sinon, comme
spécifié pour l'exécution ex les commandes.

Courant colonne: Si aucune commande n'est exécutée, défini sur non- ; sinon, comme spécifié
pour le particulier ex les commandes.

insérer
Synopsis:
[1adresse] i[insérer][!]

Entrer ex mode de saisie de texte ; le texte saisi doit être placé avant la ligne spécifiée. Si la
ligne vaut zéro ou 1, le texte doit être placé au début du tampon d'édition.

Cette commande sera affectée par le nombre ainsi que indentation automatique modifier les options ; suivant le
nom de la commande avec '!' causera le indentation automatique modifier le paramètre d'option à basculer
la durée de cette commande seulement.

Courant en ligne: défini sur la dernière ligne d'entrée ; si aucune ligne n'a été saisie, défini sur la ligne avant
la ligne spécifiée, ou à la première ligne du tampon d'édition s'il n'y a pas de lignes
précédant la ligne spécifiée, ou zéro si le tampon d'édition est vide.

Courant colonne: défini sur non- .

S'inscrire
Synopsis:
[2adresse] j[salut][!][compter][drapeaux]

If compter est spécifié:

Si aucune adresse n'a été spécifiée, le rejoindre commande doit se comporter comme si 2adresse où le
la ligne courante et la ligne courante plus compter (.,. + compter).

Si une adresse a été spécifiée, la rejoindre commande doit se comporter comme si 2adresse où le
l'adresse spécifiée et l'adresse spécifiée plus compter (addr,addr + compter).

Si deux adresses ont été spécifiées, le rejoindre commande doit se comporter comme si une commande supplémentaire
adresse, égale à la dernière adresse plus compter -1 (adresse1,adresse2,adresse2 + compter −1),
a été précisé.

Si cela entraîne une deuxième adresse supérieure à la dernière ligne de l'édition
buffer, il doit être corrigé pour être égal à la dernière ligne du buffer d'édition.

Sinon compter est spécifié:

Si aucune adresse n'a été spécifiée, le rejoindre commande doit se comporter comme si 2adresse où le
la ligne courante et la ligne suivante (.,. +1).

Si une adresse a été spécifiée, la rejoindre commande doit se comporter comme si 2adresse où le
l'adresse spécifiée et la ligne suivante (addr,addr +1).

Joindre le texte des lignes spécifiées ensemble en une seule ligne, qui remplacera
les lignes spécifiées.

Si un '!' caractère est ajouté au nom de la commande, le rejoindre sera sans
modification de n'importe quelle ligne, indépendamment de la locale courante.

Sinon, dans la locale POSIX, définissez la ligne actuelle sur la première des lignes spécifiées,
puis, pour chaque ligne suivante, procédez comme suit :

1. Jeter le leader caractères de la ligne à joindre.

2. Si la ligne à joindre est maintenant vide, supprimez-la et ignorez les étapes 3 à 5.

3. Si la ligne courante se termine par un , ou le premier caractère de la ligne à joindre
est une ')' caractère, joignez les lignes sans autre modification.

4. Si le dernier caractère de la ligne courante est un '.', joignez les lignes avec deux
personnages entre eux.

5. Sinon, joignez les lignes avec un seul entre eux.

Courant en ligne: défini sur la première ligne spécifiée.

Courant colonne: défini sur non- .

Liste
Synopsis:
[2adresse] l[est][compter][drapeaux]

Cette commande doit être équivalente à la ex commander:

[2adresse] p[menthe][compter] l[drapeaux]

See Imprimé.

Carte
Synopsis:
carte[!][lhs rhs]

If lhs ainsi que rhs ne sont pas spécifiés :

1. Si '!' est spécifié, écrivez la liste actuelle des mappes de mode de saisie de texte.

2. Sinon, écrivez la liste actuelle des mappes de mode de commande.

3. Ne rien faire de plus.

Les implémentations peuvent restreindre le jeu de caractères acceptés dans lhs or rhs, excepté
caractères imprimables et les caractères ne doivent pas être restreints. Supplémentaire
les restrictions doivent être définies par la mise en œuvre. À la fois lhs ainsi que rhs, n'importe quel caractère peut être
s'est échappé avec un ‐V, auquel cas le caractère ne doit pas être utilisé pour délimiter lhs
de rhs, et la fuite ‐V doit être rejeté.

Si le personnage '!' est annexé au Localisation nom de la commande, le mappage doit être effectif
pendant le mode de saisie de texte ouvert ou visuel plutôt que ouvert or visuel mode de commande. Ceci permet
lhs avoir deux différents Localisation définitions en même temps : une pour le mode commande et une
pour le mode de saisie de texte.

Pour les mappages de mode de commande :

When the lhs est entré en tant que partie d'un vi commande en mode ouvert ou visuel (mais pas
dans le cadre des arguments de la commande), l'action doit être comme si le
correspondant rhs avait été saisie.

Si un caractère de la commande, autre que le premier, est échappé à l'aide d'un
‐V caractère, ce caractère ne doit pas faire partie d'une correspondance avec un lhs.

Il n'est pas précisé si les implémentations doivent prendre en charge Localisation commandes où le lhs
comporte plus d'un caractère, le premier caractère de la lhs is
imprimable.

If lhs contient plus d'un caractère et le premier caractère est '#', Suivie par
une suite de chiffres correspondant à une touche de fonction numérotée, puis lorsque cette
la touche de fonction est tapée, elle doit être mappée sur rhs. Caractères autres que des chiffres
Suite à une '#' caractère représente également la touche de fonction nommée par les caractères
dans l' lhs après l' '#' et peut être mappé sur rhs. Il n'est pas précisé comment
les touches de fonction sont nommées ou quelles touches de fonction sont prises en charge.

Pour les mappages de mode de saisie de texte :

When the lhs est entré comme n'importe quelle partie du texte entré dans une entrée de texte ouverte ou visuelle
modes, l'action doit être comme si le correspondant rhs avait été saisie.

Si un caractère du texte saisi est échappé à l'aide d'un ‐V caractère, que
caractère ne doit pas faire partie d'une correspondance avec un lhs.

Il n'est pas précisé si le lhs texte saisi pour la suite Localisation or démapper commandes
est remplacé par le rhs du texte aux fins de l'affichage à l'écran ; outre le fait que
si l'affichage apparaît ou non comme si le correspondant rhs le texte a été saisi,
l'effet de la commande sera comme si le lhs le texte a été saisi.

Si seulement une partie du lhs est entré, il n'est pas spécifié combien de temps l'éditeur attendra
caractères supplémentaires, éventuellement correspondants avant de traiter les caractères déjà saisis comme
ne correspond pas au lhs.

La rhs les caractères doivent eux-mêmes faire l'objet d'un remappage, sauf indication contraire par
le remap option d'édition, sauf que si les caractères dans lhs apparaissent comme caractères préfixes dans
rhs, ces caractères ne doivent pas être remappés.

Sur les terminaux en mode bloc, le mappage n'a pas besoin de se produire immédiatement (par exemple, il peut se produire
après que le terminal a transmis un groupe de caractères au système), mais il doit atteindre
les mêmes résultats que si cela se produisait immédiatement.

Courant en ligne: Inchangé.

Courant colonne: Inchangé.

Marquez
Synopsis:
[1adresse] ma[rk] caractère
[1adresse] k caractère

Les implémentations doivent prendre en charge caractère valeurs d'une seule lettre minuscule du POSIX
locale et les caractères entre guillemets et guillemets simples ; le support d'autres personnages est
défini par la mise en œuvre.

Si vous exécutez le vi m commande, définissez la marque spécifiée sur la ligne actuelle et basée sur 1
caractère numéroté référencé par la colonne actuelle, le cas échéant ; sinon, position de colonne 1.

Sinon, définissez la marque spécifiée sur la ligne spécifiée et numérotée en premier
non- non- dans la ligne, le cas échéant ; sinon, le dernier non- dans le
ligne, le cas échéant ; sinon, position de colonne 1.

La marque doit rester associée à la ligne jusqu'à ce que la marque soit réinitialisée ou que la ligne soit
supprimé. Si une ligne supprimée est restaurée par une défaire commande, toutes les marques précédemment
associés à la ligne, qui n'ont pas été réinitialisés, doivent également être restaurés. Toute utilisation de
une marque non associée à une ligne courante dans le tampon d'édition sera une erreur.

Les marques ` ainsi que ' doit être réglé comme décrit précédemment, immédiatement avant le suivant
les événements se produisent dans l'éditeur :

1. L'utilisation de «$» en tant que ex propos

2. L'utilisation d'un nombre décimal positif comme ex propos

3. L'utilisation d'une commande de recherche comme ex propos

4. L'utilisation d'une référence de marque comme ex propos

5. L'utilisation des commandes suivantes en mode ouvert et visuel : ‐], %, (, ), [, ], {,
}

6. L'utilisation des commandes suivantes en mode ouvert et visuel : ', G, H, L, M, z si le
la ligne actuelle changera à la suite de la commande

7. L'utilisation des commandes du mode ouvert et visuel : /, ?, N, `, n si la ligne courante ou
la colonne changera à la suite de la commande

8. L'utilisation du ex commandes de mode : z, défaire, de défis, v

Pour les règles 1., 2., 3. et 4., le ` ainsi que ' les marques ne doivent pas être placées si le ex la commande est
analysé comme spécifié par la règle 6.a. dans Command Gamme Analyse in ex.

Pour les règles 5., 6. et 7., le ` ainsi que ' les marques ne doivent pas être placées si les commandes sont utilisées comme
commandes de mouvement en mode ouvert et visuel.

Pour les règles 1., 2., 3., 4., 5., 6., 7. et 8., le ` ainsi que ' les marques ne doivent pas être placées si le
la commande échoue.

La ` ainsi que ' les marques doivent être définies comme décrit précédemment, chaque fois que le contenu de l'édition
buffer sont remplacés (y compris l'édition du buffer initial), s'il est en open ou visuel
mode, ou si en ex mode et le tampon d'édition n'est pas vide, avant toute commande ou mouvement
(y compris les commandes ou les mouvements spécifiés par le -c or -t options ou les +commander
argument) sont exécutés sur le tampon d'édition. En mode ouvert ou visuel, les marques doivent être
défini comme si l'exécution de la vi m commander; sinon, comme si l'exécution de la ex marque commander.

Lors du changement de ex mode ouvert ou mode visuel, si le ` ainsi que ' les marques ne sont pas déjà
met le ` ainsi que ' les marques doivent être placées comme décrit précédemment.

Courant en ligne: Inchangé.

Courant colonne: Inchangé.

Move
Synopsis:
[2adresse] m[ove] 1adresse [drapeaux]

Déplace les lignes spécifiées après la ligne de destination spécifiée. Une destination de la ligne zéro
spécifie que les lignes doivent être placées au début du tampon d'édition. Ce sera
une erreur si la ligne de destination est dans la plage de lignes à déplacer.

Courant en ligne: défini sur la dernière des lignes déplacées.

Courant colonne: défini sur non- .

Suivant
Synopsis:
n[poste][!][+commander][filet ]

Sinon '!' est ajouté au nom de la commande et le tampon d'édition a été modifié depuis
la dernière écriture complète, ce sera une erreur, sauf si le fichier est écrit avec succès comme
spécifié par le écriture automatique option.

Si un ou plusieurs fichiers sont spécifiés :

1. Définissez la liste d'arguments sur les noms de fichiers spécifiés.

2. Définissez la référence actuelle de la liste d'arguments comme étant la première entrée de la liste d'arguments.

3. Définissez le chemin d'accès actuel sur le premier nom de fichier spécifié.

Autrement:

1. Ce sera une erreur s'il n'y a plus de noms de fichiers dans la liste d'arguments après le
nom de fichier actuellement référencé.

2. Définissez le chemin d'accès actuel et la référence de la liste d'arguments actuelle au nom de fichier après
le nom de fichier actuellement référencé dans la liste d'arguments.

Remplacez le contenu du tampon d'édition par le contenu du fichier nommé par le
chemin d'accès. Si pour une raison quelconque le contenu du fichier n'est pas accessible, le tampon d'édition
sera vide.

Cette commande sera affectée par le écriture automatique ainsi que écrire options d'édition.

La +commander l'option doit être -délimité ; les caractères peuvent être échappés par
les précédant d'un personnage. le +commander doit être interprété comme un ex
commande immédiatement après le remplacement du contenu du tampon d'édition et la
la ligne et la colonne actuelles ont été définies.

Courant en ligne: Régler comme décrit pour le éditer commander.

Courant colonne: Régler comme décrit pour le éditer commander.

Numéro
Synopsis:
[2adresse] nu[mbre][compter][drapeaux]
[2adresse] #[compter][drapeaux]

Ces commandes doivent être équivalentes aux ex commander:

[2adresse] p[menthe][compter] #[drapeaux]

See Imprimé.

Ouvert
Synopsis:
[1adresse] o[stylo] /modèle/ [drapeaux]

Cette commande n'a pas besoin d'être prise en charge sur les terminaux en mode bloc ou les terminaux avec
capacités. Si l'entrée standard, la sortie standard ou l'erreur standard ne sont pas des bornes
périphériques, les résultats ne sont pas spécifiés.

Entrez en mode ouvert.

Le délimiteur de fin peut être omis de modèle à la fin de la ligne de commande. Si
modèle est vide (par exemple, "//") ou non spécifié, la dernière expression régulière utilisée dans
l'éditeur doit être utilisé comme modèle. Le motif peut être délimité par
caractères (affichés dans le synopsis), ainsi que tout caractère alphanumérique ou non autre que
, , , ou entre guillemets.

Courant en ligne: défini sur la ligne spécifiée.

Courant colonne: défini sur non- .

Préserver
Synopsis:
pré[besoin]

Enregistrez le tampon d'édition sous une forme qui pourra être récupérée ultérieurement à l'aide de la commande -r option ou par
utilisant l' ex récupérer commander. Une fois le fichier conservé, un message électronique doit être
envoyé à l'utilisateur. Ce message doit être lisible en invoquant le courrier x utilitaire. Le
message doit contenir le nom du fichier, l'heure de conservation et un ex commander
qui pourrait être utilisé pour récupérer le fichier. Des informations supplémentaires peuvent être incluses dans le courrier
par voie électronique.

Courant en ligne: Inchangé.

Courant colonne: Inchangé.

Imprimé
Synopsis:
[2adresse] p[menthe][compter][drapeaux]

Écrivez les lignes adressées. Le comportement n'est pas spécifié si le nombre de colonnes sur le
l'affichage est inférieur au nombre de colonnes nécessaires pour écrire un seul caractère dans le
lignes en cours d'écriture.

Les caractères non imprimables, à l'exception du , doit être écrit comme défini par l'implémentation
séquences multi-caractères.

Si la # flag est spécifié ou le nombre l'option d'édition est définie, chaque ligne doit être précédée
par son numéro de ligne au format suivant :

"%6d ", <en ligne nombre>

Si la l flag est spécifié ou le liste l'option d'édition est définie :

1. Les caractères listés dans le volume Base Definitions de POSIX.1‐2008, lampe de table 5-1,
Échapper Séquences ainsi que Associé Actions doit être écrit comme l'échappement correspondant
séquence.

2. Caractères non imprimables ne figurant pas dans le volume Base Definitions de POSIX.1‐2008, lampe de table
5-1, Échapper Séquences ainsi que Associé Actions doit être écrit comme un octal à trois chiffres
numéro (précédé d'un ) pour chaque octet du caractère (le plus significatif
octet en premier).

3. La fin de chaque ligne doit être marquée d'un «$», et littéral «$» personnages au sein du
ligne doit être écrite avec un précédent .

Les palangres doivent être pliées ; la longueur à laquelle le pliage se produit n'est pas spécifiée, mais devrait
être approprié pour le terminal de sortie, compte tenu du nombre de colonnes du terminal.

Si une ligne est pliée et que le l flag n'est pas spécifié et le liste l'option d'édition n'est pas définie,
il n'est pas précisé si un caractère multi-colonnes à la position de pliage est séparé ;
il ne doit pas être jeté.

Courant en ligne: Réglez sur la dernière ligne écrite.

Courant colonne: Inchangé si la ligne courante est inchangée ; sinon, réglez sur non- .

mettre
Synopsis:
[1adresse] pu[t][tampon]

Ajouter le texte du tampon spécifié (par défaut, le tampon sans nom) au
ligne; la ligne zéro spécifie que le texte doit être placé au début de l'édition
amortir. Chaque portion de ligne dans le tampon deviendra une nouvelle ligne dans le tampon d'édition,
quel que soit le mode du tampon.

Courant en ligne: défini sur la dernière ligne entrée dans le tampon d'édition.

Courant colonne: défini sur non- .

quitter
Synopsis:
q[uit][!]

Sinon '!' est ajouté au nom de la commande :

1. Si le tampon d'édition a été modifié depuis la dernière écriture complète, il doit s'agir d'un
Erreur.

2. S'il y a des noms de fichiers dans la liste d'arguments après le nom de fichier actuellement référencé,
et la dernière commande n'était pas un quitter, wq, quitterou ZZ (voir Sortie) commande, ce sera un
Erreur.

Sinon, terminez la session d'édition.

Lire
Synopsis:
[1adresse] r[ead][!][filet]

If '!' n'est pas le premier non- à la suite du nom de la commande, une copie du fichier spécifié
fichier doit être ajouté dans le tampon d'édition après la ligne spécifiée ; ligne zéro spécifie
que la copie doit être placée au début du tampon d'édition. Le nombre de lignes et
les octets lus doivent être écrits. Sinon filet est nommé, le chemin d'accès actuel doit être le
défaut. S'il n'y a pas de chemin d'accès actuel, alors filet deviendra le chemin d'accès actuel. Si
il n'y a pas de chemin d'accès actuel ou filet opérande, ce doit être une erreur. Spécification d'un filet qui
n'est pas de type regular doit avoir des résultats quelconques.

Sinon, si filet est précédé de '!', le reste de la ligne après le '!' devrait avoir '%',
'#'et '!' caractères développés comme décrit dans Command Gamme Analyse in ex.

La ex l'utilitaire doit alors passer deux arguments au programme nommé par le shell edit
option; le premier sera -c et le second sera les arguments développés à la lire
commande en tant qu'argument unique. L'entrée standard du programme doit être réglée sur
entrée standard du ex programme lorsqu'il a été appelé. L'erreur type et la norme
la sortie du programme doit être ajoutée dans le tampon d'édition après la ligne spécifiée.

Chaque ligne du fichier copié ou de la sortie du programme (délimitée par personnages ou
la fin du fichier ou de la sortie si elle n'est pas immédiatement précédée d'un ), doit être
une ligne séparée dans le tampon d'édition. Toute occurrence de et
les paires dans la sortie doivent être traitées comme des paires uniques personnages.

La signification particulière de la '!' après l' lire la commande peut être annulée en échappant
avec un personnage.

Courant en ligne: Si aucune ligne n'est ajoutée au tampon d'édition, inchangé. Sinon, si en plein
ou mode visuel, défini sur la première ligne entrée dans le tampon d'édition. Sinon, réglez sur
dernière ligne entrée dans le tampon d'édition.

Courant colonne: défini sur non- .

Récupérer
Synopsis:
rec[plus de ][!] filet

Sinon '!' est ajouté au nom de la commande et le tampon d'édition a été modifié depuis
la dernière écriture complète, ce sera une erreur.

Sinon filet opérande est spécifié, le nom de chemin actuel doit être utilisé. Si il n'y a pas
chemin d'accès actuel ou filet opérande, ce doit être une erreur.

Si aucune information de récupération n'a été précédemment enregistrée sur filet, récupérer la commande doit
se comporter de la même manière que éditer commande, et un message d'information à cet effet doit
etre ecrit.

Sinon, définissez le chemin d'accès actuel sur filet, et remplacez le contenu actuel de la modification
tampon avec le contenu récupéré de filet. S'il existe plusieurs instances du fichier
à récupérer, celui qui a été enregistré le plus récemment doit être récupéré, et une information
message indiquant qu'il existe des versions précédentes du fichier qui peuvent être récupérées doit être
écrit. L'éditeur doit se comporter comme si le contenu du tampon d'édition avait déjà été
modifié.

Courant filet: Régler comme décrit pour le éditer commander.

Courant colonne: Régler comme décrit pour le éditer commander.

Rembobiner
Synopsis:
re[salle][!]

Sinon '!' est ajouté au nom de la commande et le tampon d'édition a été modifié depuis
la dernière écriture complète, ce sera une erreur, sauf si le fichier est écrit avec succès comme
spécifié par le écriture automatique option.

Si la liste d'arguments est vide, ce sera une erreur.

La référence actuelle de la liste d'arguments et le chemin d'accès actuel doivent être définis sur le premier
nom de fichier dans la liste des arguments.

Remplacez le contenu du tampon d'édition par le contenu du fichier nommé par le
chemin d'accès. Si pour une raison quelconque le contenu du fichier n'est pas accessible, le tampon d'édition
sera vide.

Cette commande sera affectée par le écriture automatique ainsi que écrire options d'édition.

Courant en ligne: Régler comme décrit pour le éditer commander.

Courant colonne: Régler comme décrit pour le éditer commander.

Ensemble
Synopsis:
soi[t][option[=[Plus-value]] ][aucuneoption ][option? ...][TOUTE]

Lorsqu'aucun argument n'est spécifié, écrivez la valeur de terme option d'édition et ces options
dont les valeurs ont été modifiées par rapport aux paramètres par défaut ; quand la dispute TOUTE is
spécifié, écrivez toutes les valeurs d'option.

Donner un nom d'option suivi du caractère '?' entraînera la valeur actuelle de ce
option à écrire. le '?' peut être séparé du nom de l'option par zéro ou plus
personnages. le '?' ne sera nécessaire que pour les options à valeur booléenne. booléen
les options peuvent recevoir des valeurs sous la forme set option pour les activer ou set aucuneoption tourner
les enlever; les options de chaîne et numériques peuvent être assignées par le formulaire set option=Plus-value. Tout
les caractères dans les chaînes peuvent être inclus tels quels en les précédant avec un
s'échapper . Plusieurs options peuvent être définies ou répertoriées par une seule commande set
en spécifiant plusieurs arguments, chacun séparé du suivant par un ou plusieurs
caractères.

See Modifier Options in ex pour plus de détails sur les options spécifiques.

Courant en ligne: Inchangé.

Courant colonne: Inchangé.

coquillage
Synopsis:
merde [aune]

Appelez le programme nommé dans le coquille option d'édition avec le seul argument -i (interactif
mode). L'édition doit reprendre à la sortie du programme.

Courant en ligne: Inchangé.

Courant colonne: Inchangé.

Identifier
Synopsis:
donc[Urcan à] filet

Lire et exécuter ex commandes de filet. Les lignes du fichier qui sont des lignes vides doivent être
ignoré.

Courant en ligne: Tel que spécifié pour l'individu ex les commandes.

Courant colonne: Tel que spécifié pour l'individu ex les commandes.

Représentant(e) suppléant(e)
Synopsis:
[2adresse] s[remplacer][/modèle/remplacer/[Options][compter][drapeaux]]
[2adresse] &[Options][compter][drapeaux]]
[2adresse] ~[Options][compter][drapeaux]]

Remplacer la première instance du motif modèle par la corde remplacer sur chaque spécifié
ligne. (Voir Un coupage régulier Expressions in ex ainsi que après extraction String in ex.) Tout non alphabétique,
non- délimiteur autre que , '|', , ou des guillemets doubles peuvent être utilisés
au lieu de '/'. les caractères peuvent être utilisés pour échapper les délimiteurs,
caractères et autres caractères spéciaux.

Le délimiteur de fin peut être omis de modèle ou de remplacer à la fin de la commande
ligne. Si les deux modèle ainsi que remplacer ne sont pas spécifiés ou sont vides (par exemple, "//") et de
dernier s commande doit être répétée. Si seulement modèle n'est pas spécifié ou est vide, le dernier
l'expression régulière utilisée dans l'éditeur doit être utilisée comme modèle. Si seulement remplacer n'est pas
spécifié ou est vide, le motif doit être remplacé par rien. Si l'ensemble
le modèle de remplacement est '%', le dernier motif de remplacement d'un s commande doit être utilisée.

Saisie d'un dans remplacer (ce qui nécessite un échappement dans ex mode
et une fuite ‐V en ouvert ou vi mode) doit diviser la ligne à ce point,
créer une nouvelle ligne dans le tampon d'édition. le seront jetés.

If Options comprend la lettre 'g' (de défis), toutes les instances non superposées du modèle
dans la ligne doit être remplacé.

If Options comprend la lettre 'c' (confirmer), puis avant chaque remplacement, la ligne doit
etre ecrit; la ligne écrite doit refléter toutes les substitutions précédentes. Sur ce qui suit
ligne, caractères doivent être écrits sous les caractères de la ligne qui sont
avant la modèle à remplacer, et '^' caractères écrits sous les caractères
inclus dans le modèle être remplacé. le ex l'utilitaire doit alors attendre une réponse de
l'utilisateur. Une réponse affirmative entraînera la substitution, tandis que toute autre
l'entrée ne fera pas la substitution. Une réponse affirmative consistera en une ligne
avec la réponse affirmative (telle que définie par les paramètres régionaux actuels) au début de la
ligne. Cette ligne fera l'objet d'un montage de la même manière que le ex ligne de commande.

En cas d'interruption (voir rubrique EVENEMENTS ASYNCHRONES), toute modification confirmée par le
user doit être conservé dans le tampon d'édition après l'interruption.

Si la direction de recherche mémorisée n'est pas définie, le s commande doit le définir sur forward.

Dans le deuxième Synopsis, le & commande doit répéter la substitution précédente, comme si la &
commande ont été remplacés par :

s/modèle/remplacer/

De modèle ainsi que remplacer sont tels que spécifiés dans le précédent s, &ou ~ commander.

Dans le troisième Synopsis, le ~ commande doit répéter la substitution précédente, comme si la '~'
ont été remplacés par :

s/modèle/remplacer/

De modèle doit être la dernière expression régulière spécifiée à l'éditeur, et remplacer doit
provenir du remplacement précédent (y compris & ainsi que ~) commande.

Ces commandes seront affectées par le LC_MESSAGES variable d'environnement.

Courant en ligne: défini sur la dernière ligne dans laquelle une substitution s'est produite, ou, inchangé s'il n'y en a pas
substitution s'est produite.

Courant colonne: défini sur non- .

Suspendre
Synopsis:
su[passer][!]
st[op][!]

Autoriser le contrôle à revenir au processus d'appel ; ex se suspendra comme s'il avait
reçu le signal SIGTSTP. La suspension ne doit se produire que si le contrôle des tâches est activé dans
le shell appelant (voir la description de set −m).

Ces commandes seront affectées par le écriture automatique ainsi que écrire options d'édition.

Le courant susp caractère (voir Sty) équivaut à la suspendre commander.

Jour
Synopsis:
ta[g][!] chaîne de balise

Les résultats ne sont pas spécifiés si le format d'un fichier de balises n'est pas celui spécifié par le balises c
utilitaire (voir balises c) la description.

La Étiquette la commande doit rechercher chaîne de balise dans les fichiers de balises référencés par le Étiquette éditer
option, dans l'ordre où ils sont spécifiés, jusqu'à ce qu'une référence à chaîne de balise est trouvé. Des dossiers
seront recherchés du début à la fin. Si aucune référence n'est trouvée, ce sera une erreur
et un message d'erreur à cet effet doit être écrit. Si la référence n'est pas trouvée, ou si
une erreur se produit lors du traitement d'un fichier mentionné dans le Étiquette option d'édition, ce sera une
erreur, et un message d'erreur doit être écrit à la première occurrence d'une telle erreur.

Sinon, si le fichier de balises contenait un motif, le motif doit être traité comme un
expression utilisée dans l'éditeur ; par exemple, aux fins de la s commander.

Si la chaîne de balise se trouve dans un fichier avec un nom différent du chemin d'accès actuel, définissez le
chemin d'accès actuel au nom de ce fichier et remplace le contenu du tampon d'édition
avec le contenu de ce fichier. Dans ce cas, si non '!' est ajouté au nom de la commande,
et que le tampon d'édition a été modifié depuis la dernière écriture complète, ce sera une erreur,
sauf si le fichier est écrit avec succès comme spécifié par le écriture automatique option.

Cette commande sera affectée par le écriture automatique, Étiquette, longueur de baliseet écrire éditer
options.

Courant en ligne: Si le fichier de balises contenait un numéro de ligne, définissez ce numéro de ligne. Si la
le numéro de ligne est supérieur à la dernière ligne du tampon d'édition, un message d'erreur doit être
écrit et la ligne actuelle doit être définie comme spécifié pour le éditer commander.

Si le fichier de balises contenait un modèle, définissez la première occurrence du modèle dans le
déposer. Si aucun modèle correspondant n'est trouvé, un message d'erreur doit être écrit et le
ligne doit être définie comme spécifié pour le éditer commander.

Courant colonne: Si le fichier de balises contenait une référence de numéro de ligne et que ce numéro de ligne
n'était pas plus grand que la dernière ligne du tampon d'édition, ou si le fichier de balises contenait un
modèle et ce modèle a été trouvé, défini sur non- . Sinon, réglez comme spécifié pour
le éditer commander.

Non abrégé
Synopsis:
una[bbrev] lhs

If lhs n'est pas une entrée dans la liste actuelle des abréviations (voir Abréger), ce sera
une erreur. Sinon, supprimez lhs de la liste des abréviations.

Courant en ligne: Inchangé.

Courant colonne: Inchangé.

annuler
Synopsis:
u[ndo]

Inverser les modifications apportées par la dernière commande qui a modifié le contenu de l'édition
tampon, y compris défaire. A cet effet, le de défis, v, ouvertet visuel commandes, et
les commandes résultant des exécutions de tampon et des extensions de caractères mappés, sont considérées
commandes uniques.

Si aucune action pouvant être annulée n'a précédé la défaire commande, ce sera une erreur.

Si la défaire commande restaure les lignes qui ont été marquées, la marque doit également être restaurée
sauf s'il a été réinitialisé suite à la suppression des lignes.

Courant en ligne:

1. Si des lignes sont ajoutées ou modifiées dans le fichier, réglez sur la première ligne ajoutée ou modifiée.

2. Définissez la ligne avant la première ligne supprimée, si elle existe.

3. Réglez sur 1 si le tampon d'édition n'est pas vide.

4. Mettre à zéro.

Courant colonne: défini sur non- .

Annuler le mappage
Synopsis:
euh[ap][!] lhs

If '!' est ajouté au nom de la commande, et si lhs n'est pas une entrée dans la liste de texte
définitions de carte de mode d'entrée, il doit s'agir d'une erreur. Sinon, supprimez lhs de la liste des
définitions de carte de mode de saisie de texte.

Sinon '!' est ajouté au nom de la commande, et si lhs n'est pas une entrée dans la liste des
définitions de mappe en mode commande, ce doit être une erreur. Sinon, supprimez lhs de la liste des
définitions de carte de mode de commande.

Courant en ligne: Inchangé.

Courant colonne: Inchangé.

Version
Synopsis:
ve[résolution]

Rédigez un message contenant les informations de version pour l'éditeur. Le format du message
n'est pas spécifié.

Courant en ligne: Inchangé.

Courant colonne: Inchangé.

Visuel
Synopsis:
[1adresse] vi[normal][type][compter][drapeaux]

If ex est actuellement en mode ouvert ou visuel, le synopsis et le comportement de la commande visuelle
sera le même que le éditer commande, comme spécifié par Modifier.

Sinon, cette commande n'a pas besoin d'être prise en charge sur les terminaux en mode bloc ou les terminaux avec
capacités insuffisantes. Si l'entrée standard, la sortie standard ou l'erreur standard ne sont pas
périphériques terminaux, les résultats ne sont pas spécifiés.

If compter est spécifié, la valeur de fenêtre l'option d'édition doit être définie sur compter (comme
décrit dans fenêtre). Si la '^' caractère de type a également été spécifié, le fenêtre éditer
L'option doit être définie avant d'être utilisée par le caractère de type.

Entrez en mode visuel. Si type n'est pas spécifié, ce sera comme si un type of '+' était
spécifié. Les type entraînera les effets suivants :

+ Place le début de la ligne spécifiée en haut de l'écran.

- Placer la fin de la ligne spécifiée en bas de l'écran.

. Place le début de la ligne spécifiée au milieu de l'affichage.

^ Si la ligne spécifiée est inférieure ou égale à la valeur du fenêtre options d'édition,
mettre la ligne à 1 ; sinon, décrémenter la ligne de la valeur du fenêtre éditer
option moins 1. Placez le début de cette ligne aussi près du bas de la
lignes affichées que possible, tout en affichant la valeur de la fenêtre éditer
option nombre de lignes.

Courant en ligne: défini sur la ligne spécifiée.

Courant colonne: défini sur non- .

Écrire
Synopsis:
[2adresse] w[rite][!][>>][filet]
[2adresse] w[rite][!][filet]
[2adresse] wq[!][>>][filet]

Si aucune ligne n'est spécifiée, les lignes seront par défaut le fichier entier.

La commande wq sera équivalent à un écrire commande suivie d'un quitter commander; wq !
équivaudra à écrire! suivie par quitter. Dans les deux cas, si le écrire commander
échoue, le quitter ne sera pas tenté.

Si le nom de la commande n'est pas suivi d'un ou plusieurs personnages ou filet n'est pas
précédé d'un '!' personnage, le écrire sera dans un dossier.

1. Si le >> argument est spécifié et que le fichier existe déjà, les lignes doivent être
ajouté au fichier au lieu de remplacer son contenu. Si la >> l'argument est
spécifié et que le fichier n'existe pas déjà, il n'est pas spécifié si l'écriture
procédera comme si le >> argument n'a pas été spécifié ou si l'écriture doit échouer.

2. Si le lecture seulement l'option d'édition est définie (voir lecture seulement) et de écrire échouera.

3. Si filet est spécifié, et n'est pas le chemin d'accès actuel, et le fichier existe, le écrire
échouera.

4. Si filet n'est pas spécifié, le nom de chemin actuel doit être utilisé. S'il n'y a pas de courant
chemin d'accès, le écrire la commande échouera.

5. Si le chemin d'accès actuel est utilisé et que le chemin d'accès actuel a été modifié par le filet
or lire commandes, et le fichier existe, le écrire échouera. Si la écrire is
succès, suite écrires ne doit pas échouer pour cette raison (à moins que le courant
le nom du chemin est à nouveau modifié).

6. Si tout le tampon d'édition n'est pas en cours d'écriture et que le fichier à écrire existe, le
écrire échouera.

Pour les règles 1., 2., 3. et 5., le écrire peut être forcé en ajoutant le caractère '!' à
le nom de la commande.

Pour les règles 2., 3. et 5., le écrire peut être forcé en réglant écrire possibilité d'édition.

Des tests supplémentaires définis par la mise en œuvre peuvent écrire échouer.

Si le tampon d'édition est vide, un fichier sans aucun contenu doit être écrit.

Un message d'information doit être rédigé indiquant le nombre de lignes et d'octets écrits.

Sinon, si la commande est suivie d'un ou plusieurs caractères, et le fichier est
précédé par '!', le reste de la ligne après le '!' devrait avoir '%', '#'et '!'
caractères développés comme décrit dans Command Gamme Analyse in ex.

La ex l'utilitaire doit alors passer deux arguments au programme nommé par le coquille éditer
option; le premier sera -c et le second sera les arguments développés à la écrire
commande en tant qu'argument unique. Les lignes spécifiées doivent être écrites sur l'entrée standard
de la commande. L'erreur standard et la sortie standard du programme, le cas échéant, doivent être
écrit comme décrit pour le impression commander. Si le dernier caractère de cette sortie n'est pas un
, une doit être écrit à la fin de la sortie.

La signification particulière de la '!' après l' écrire la commande peut être annulée en échappant
avec un personnage.

Courant en ligne: Inchangé.

Courant colonne: Inchangé.

Écrire ainsi que Sortie
Synopsis:
[2adresse] x[it][!][filet]

Si le tampon d'édition n'a pas été modifié depuis la dernière écrire, quitter doit être
équivalent à la quitter commande, ou si un '!' est ajouté au nom de la commande, pour quitter!.

Dans le cas contraire, quitter sera équivalent à la wq commande, ou si un '!' est annexé au
nom de la commande, à wq !.

Courant en ligne: Inchangé.

Courant colonne: Inchangé.

ricain
Synopsis:
[2adresse] ya[nk][tampon][compter]

Copiez les lignes spécifiées dans le tampon spécifié (par défaut, le tampon sans nom), qui
deviendra un tampon en mode ligne.

Courant en ligne: Inchangé.

Courant colonne: Inchangé.

Adapter Vitrine
Synopsis:
[1adresse] z[!][type ][compter][drapeaux]

Si aucune ligne n'est spécifiée, la ligne courante sera la ligne par défaut ; si type est omis comme
bien, la valeur de la ligne actuelle doit d'abord être incrémentée de 1. Si l'incrémentation de la valeur actuelle
ligne le ferait être supérieur à la dernière ligne du tampon d'édition, il doit s'agir d'un
Erreur.

S'il y a caractères entre les type argument et le précédent z nom de la commande
ou en option '!' caractère, ce sera une erreur.

If compter est spécifié, la valeur de fenêtre l'option d'édition doit être définie sur compter (comme
décrit dans fenêtre). Si compter est omis, il sera par défaut égal à 2 fois la valeur de
volute option d'édition, ou si ! a été spécifié, le nombre de lignes dans l'affichage moins 1.

If type est omis, alors compter les lignes commençant par la ligne spécifiée doivent être écrites.
Dans le cas contraire, compter lignes commençant par la ligne spécifiée par le type l'argument doit être
écrit.

La type argument changera les lignes à écrire. Les valeurs possibles de type sont tels que
suit:

− La ligne spécifiée doit être décrémentée de la valeur suivante :

(((numéro of ``−'' personnages) x compter) −1)

Si le calcul aboutit à un nombre inférieur à 1, il s'agira d'une erreur. Écrivez
lignes du tampon d'édition, en commençant par la nouvelle valeur de ligne, jusqu'à compter lignes ou
la dernière ligne du tampon d'édition a été écrite.

+ La ligne spécifiée doit être incrémentée de la valeur suivante :

(((numéro of ``+'' personnages) -1) x compter) +1

Si le calcul aboutit à un nombre supérieur à la dernière ligne de la modification
tampon, ce sera une erreur. Écrivez des lignes à partir du tampon d'édition, en commençant par le nouveau
valeur de la ligne, jusqu'à compter lignes ou la dernière ligne du tampon d'édition a été
écrit.

=,. Si plus d'un seul '.' or '=' est spécifié, ce sera une erreur. Ce qui suit
des mesures doivent être prises :

1. Si compter est nul, rien ne doit être écrit.

2. Écrivez autant de N lignes avant la ligne courante dans le tampon d'édition comme
exister. Si compter or '!' a été précisé, N doit être:

(compter −1) /2

Dans le cas contraire, N doit être:

(compter -3) /2

If N est un nombre inférieur à 3, aucune ligne ne doit être écrite.

3. Si '=' a été spécifié comme caractère de type, écrivez une ligne composée du
plus petit du nombre de colonnes dans l'affichage divisé par deux, ou 40 '−'
caractères.

4. Ecrivez la ligne courante.

5. Répétez l'étape 3.

6. Écrivez autant de N lignes après la ligne courante dans le tampon d'édition comme existent.
N doit être défini comme à l'étape 2. Si N est un nombre inférieur à 3, aucune ligne ne doit être
écrit. Si compter est inférieur à 3, aucune ligne ne doit être écrite.

^ La ligne spécifiée doit être décrémentée de la valeur suivante :

(((numéro of ``^'' personnages) + 1) x compter) −1

Si le calcul aboutit à un nombre inférieur à 1, il s'agira d'une erreur. Écrivez
lignes du tampon d'édition, en commençant par la nouvelle valeur de ligne, jusqu'à compter lignes ou
la dernière ligne du tampon d'édition a été écrite.

Courant en ligne: défini sur la dernière ligne écrite, sauf si le type est =, auquel cas, réglez sur
la ligne spécifiée.

Courant colonne: défini sur non- .

Échapper
Synopsis:
! commander
[addr]! commander

Le contenu de la ligne après le '!' devrait avoir '%', '#'et '!' caractères développés
comme décrit dans Command Gamme Analyse in ex. Si l'expansion provoque le texte de la ligne
changer, il sera réaffiché, précédé d'un seul '!' caractère.

La ex l'utilitaire doit exécuter le programme nommé par le coquille option d'édition. Il passera deux
arguments au programme ; le premier sera -c, et le second doit être le développé
arguments à la ! commande en tant qu'argument unique.

Si aucune ligne n'est spécifiée, l'entrée standard, la sortie standard et l'erreur standard du
programme doit être réglé sur l'entrée standard, la sortie standard et l'erreur standard du ex
programme lorsqu'il a été appelé. De plus, un message d'avertissement doit être écrit si la modification
tampon a été modifié depuis la dernière écriture complète, et le prévenir l'option d'édition est définie.

Si des lignes sont spécifiées, elles doivent être transmises au programme en tant qu'entrée standard, et le
la sortie standard et l'erreur standard du programme doivent remplacer ces lignes dans l'édition
amortir. Chaque ligne de la sortie du programme (délimitée par les personnages ou la fin
de la sortie si elle n'est pas immédiatement précédée d'un ), doit être une ligne distincte
dans le tampon d'édition. Toute occurrence de et paires dans la sortie
sera traité comme un célibataire personnages. Les lignes spécifiées doivent être copiées dans
le tampon sans nom avant qu'ils ne soient remplacés, et le tampon sans nom deviendra une ligne-
tampon de mode.

Si dans ex mode, un seul '!' caractère doit être écrit lorsque le programme se termine.

Cette commande sera affectée par le coquille ainsi que prévenir options d'édition. Si aucune ligne n'est
spécifié, cette commande doit être affectée par le écriture automatique ainsi que écrire options d'édition. Si
lignes sont spécifiées, cette commande sera affectée par le impression automatique possibilité d'édition.

Courant en ligne:

1. Si aucune ligne n'est spécifiée, inchangé.

2. Sinon, réglez sur la dernière ligne lue, si des lignes sont lues.

3. Sinon, définissez la ligne avant la première ligne des lignes spécifiées, si cette ligne
existe.

4. Sinon, définissez la première ligne du tampon d'édition si le tampon d'édition n'est pas vide.

5. Sinon, réglez sur zéro.

Courant colonne: Si aucune ligne n'est spécifiée, inchangé. Sinon, réglez sur non- .

Shift Gauche
Synopsis:
[2adresse] <[<...][compter][drapeaux]

Déplace les lignes spécifiées au début de la ligne ; le nombre de positions de colonne à
décalé doit être le nombre de caractères de commande multiplié par la valeur de largeur de décalage éditer
option. Uniquement en tête les caractères doivent être supprimés ou remplacés par d'autres
personnages en décalage; les autres caractères ne seront pas affectés.

Les lignes à décaler doivent être copiées dans le tampon sans nom, qui devient une ligne-
tampon de mode.

Cette commande sera affectée par le impression automatique possibilité d'édition.

Courant en ligne: défini sur la dernière ligne des lignes spécifiées.

Courant colonne: défini sur non- .

Shift Droite
Synopsis:
[2adresse] >[> ...][compter][drapeaux]

Décaler les lignes spécifiées loin du début de la ligne ; le nombre de positions de colonne
à décaler doit être le nombre de caractères de commande multiplié par la valeur de la largeur de décalage
option d'édition. Le changement doit être accompli en ajoutant caractères comme préfixe de
la ligne ou le changement d'en-tête personnages dans d'autres personnages. Lignes vides
ne sera pas changé.

Les lignes à décaler doivent être copiées dans le tampon sans nom, qui devient une ligne-
tampon de mode.

Cette commande sera affectée par le impression automatique possibilité d'édition.

Courant en ligne: défini sur la dernière ligne des lignes spécifiées.

Courant colonne: défini sur non- .

-RÉ
Synopsis:
-RÉ

Écrivez le suivant n lignes, où n est le minimum des valeurs de volute option d'édition et
le nombre de lignes après la ligne courante dans le tampon d'édition. Si la ligne courante est la
dernière ligne du tampon d'édition, ce sera une erreur.

Courant en ligne: défini sur la dernière ligne écrite.

Courant colonne: défini sur non- .

Écrire Gamme Numéro
Synopsis:
[1adresse] = [drapeaux]

If en ligne n'est pas spécifié, la valeur par défaut sera la dernière ligne du tampon d'édition. Écrivez le
numéro de ligne de la ligne spécifiée.

Courant en ligne: Inchangé.

Courant colonne: Inchangé.

Exécution
Synopsis:
[2adresse] @ tampon
[2adresse] * tampon

Si aucun tampon n'est spécifié ou est spécifié comme '@' or '*', le dernier buffer exécuté sera
utilisé. Si aucun tampon précédent n'a été exécuté, ce sera une erreur.

Pour chaque ligne spécifiée par les adresses, définissez la ligne actuelle ('.') à la valeur spécifiée
ligne, et exécutez le contenu de la ligne nommée tampon (tels qu'ils étaient à l'époque @ commander
a été exécuté) comme ex commandes. Pour chaque ligne d'un tampon en mode ligne, et tous sauf le dernier
ligne d'un tampon en mode caractère, la ex l'analyseur de commande doit se comporter comme si la ligne était
terminé par un .

Si une erreur survient au cours de ce processus ou si une ligne spécifiée par les adresses ne
existent lorsque la ligne actuelle serait définie sur elle, ou plus d'une seule ligne a été spécifiée
par les adresses, et le contenu du tampon d'édition est remplacé (par exemple, par le ex
:modifier commande) un message d'erreur doit être écrit, et plus aucune commande résultant de la
l'exécution de cette commande sera traitée.

Courant en ligne: Tel que spécifié pour l'individu ex les commandes.

Courant colonne: Tel que spécifié pour l'individu ex les commandes.

Un coupage régulier Expressions in ex
La ex L'utilitaire doit prendre en charge les expressions régulières qui sont un sur-ensemble de l'expression régulière de base.
les expressions décrites dans le volume Base Definitions de POSIX.1‐2008, Section 9.3, Basic
Un coupage régulier Expressions. Une expression régulière nulle ("//") est équivalent au dernier
expression régulière rencontrée.

Les expressions régulières peuvent être utilisées dans les adresses pour spécifier des lignes et, dans certaines commandes (par
par exemple, le remplacer commande), pour spécifier les portions d'une ligne à remplacer.

Les constructions suivantes peuvent être utilisées pour améliorer les expressions régulières de base :

\< Correspond au début d'un mot. (Voir la définition de mot au début de
Command Descriptions in ex.)

\> Correspond à la fin d'un mot.

~ Faites correspondre la pièce de rechange du dernier remplacer commander. le ('~')
caractère peut être échappé dans une expression régulière pour devenir un caractère normal avec
aucune signification particulière. le seront jetés.

Lorsque l'option de l'éditeur la magie n'est pas défini, les seuls caractères ayant une signification particulière doivent
be '^' au début d'un motif, «$» à la fin d'un motif, et . le
caractères '.', '*', '['et '~' doivent être traités comme des caractères ordinaires à moins qu'ils ne soient précédés
par un ; lorsqu'il est précédé d'un ils retrouveront leur signification particulière,
ou dans le cas de , être traité comme un seul . personnages
utilisé pour échapper d'autres caractères doit être ignoré.

après extraction String in ex
Le personnage '&' ('\&' si l'option de l'éditeur la magie n'est pas défini) dans la chaîne de remplacement
représente le texte correspondant au modèle à remplacer. Le personnage '~' ('\~' if
la magie n'est pas réglé) doit être remplacé par la pièce de rechange de l'ancien remplacer
commander. La séquence '\n', Où n est un entier, doit être remplacé par le texte correspondant
par l'expression de référence arrière correspondante. Si la référence arrière correspondante
l'expression ne correspond pas, alors les caractères '\n' doit être remplacé par la chaîne vide.

Les cordes '\l', '\u', '\L'et '\U' peut être utilisé pour modifier la casse des éléments dans le
chaîne de remplacement (à l'aide de la '\&' or "\"chiffre). La chaîne '\l' ('\u') doit
provoquer la conversion du caractère qui suit en minuscule (majuscule). La chaîne '\L'
('\U') doit entraîner la conversion en minuscules de tous les caractères qui le suivent
(majuscules) tels qu'ils sont insérés par la substitution jusqu'à la chaîne '\e' or '\E'ou de la
fin de la chaîne de remplacement, est rencontrée.

Sinon, tout caractère suivant un doit être traité comme ce littéral
caractère, et la fuite seront jetés.

Un exemple de conversion de cas avec le s la commande est la suivante :

:p
La cat assis on le tapis.
:s/\<.at\>/\u&/gp
La Cathy Samedi on le Tapis.
:s/S\(.*\)M/S\U\1\eM/p
La Cathy SAM ON LES Tapis.

Modifier Options in ex
La ex L'utilitaire a un certain nombre d'options qui modifient son comportement. Ces options ont
paramètres par défaut, qui peuvent être modifiés à l'aide du set commander.

Les options sont booléennes sauf indication contraire.

indentation automatique, ai
[Défaut unset]

If indentation automatique est défini, chaque ligne en mode d'entrée doit être indentée (en utilisant d'abord autant de
caractères que possible, tel que déterminé par l'option de l'éditeur tabulation, puis en utilisant
caractères) à aligner sur une autre ligne, comme suit :

1. Si vous êtes en mode ouvert ou visuel et que la saisie de texte fait partie d'une commande orientée ligne (voir
la DESCRIPTION ÉTENDUE dans vi), alignez-vous sur la première colonne.

2. Sinon, en mode ouvert ou visuel, l'indentation de chaque ligne doit être définie comme
suit:

une. Si une ligne a été précédemment insérée dans le cadre de cette commande, elle doit être définie sur
indentation de la dernière ligne insérée par défaut, ou comme spécifié autrement pour
la caractère ‐D dans Entrée Mode Commandes in vi.

b. Sinon, il doit être défini sur l'indentation de la ligne courante précédente, si
quelconque; sinon, à la première colonne.

3. Pour le ex a, iet c commandes, l'indentation de chaque ligne doit être définie comme suit :

une. Si une ligne a été précédemment insérée dans le cadre de cette commande, elle doit être définie sur
indentation de la dernière ligne insérée par défaut, ou comme spécifié autrement pour
le eof caractère Faites défiler.

b. Sinon, si la commande est la ex a commande, il doit être défini sur la ligne
ajouté après, le cas échéant ; sinon à la première colonne.

c. Sinon, si la commande est la ex i commande, il doit être défini sur la ligne
inséré avant, le cas échéant ; sinon à la première colonne.

ré. Sinon, si la commande est la ex c commande, il doit être défini sur l'indentation
de la ligne remplacée.

impression automatique, ap
[Défaut set]

If impression automatique est défini, la ligne actuelle doit être écrite après chaque ex commande qui modifie
le contenu du tampon d'édition actuel, et après chaque Étiquette commande dont la balise
le modèle de recherche a été trouvé ou le numéro de la ligne d'accroche était valide, sauf si :

1. La commande a été exécutée en mode ouvert ou visuel.

2. La commande a été exécutée dans le cadre d'un de défis or v commande ou @ exécution du tampon.

3. La commande était la forme de la lire commande qui lit un fichier dans le tampon d'édition.

4. La commande était la ajouter, Changeou insérer commander.

5. La commande n'a pas été terminée par un .

6. La ligne courante doit être écrite par un drapeau spécifié à la commande ; par example,
effacer # doit écrire la ligne actuelle comme spécifié pour le modificateur de drapeau dans le effacer
commande, et non comme spécifié par la impression automatique possibilité d'édition.

écriture automatique, aw
[Défaut unset]

If écriture automatique est défini et le tampon d'édition a été modifié depuis sa dernière
écrit dans n'importe quel fichier, le contenu du tampon d'édition doit être écrit comme si le ex écrire
commande avait été spécifiée sans arguments, avant chaque commande affectée par le
écriture automatique l'option d'édition est exécutée. Ajout du caractère '!' au nom de commande de n'importe quel
des ex commandes sauf '!' empêchera l'écriture. Si l'écriture échoue, ce sera un
erreur et la commande ne sera pas exécutée.

embellir, bf
[Défaut unset]

If embellir est défini, tous les caractères non imprimables, autres que , , et
feed> caractères, doivent être supprimés du texte lu à partir des fichiers.

annuaire, dir
[Défaut défini par l'implémentation]

La valeur de cette option spécifie le répertoire dans lequel le tampon de l'éditeur doit être
mis. Si ce répertoire n'est pas accessible en écriture par l'utilisateur, l'éditeur doit quitter.

compatible, ed
[Défaut unset]

Provoque la présence de g ainsi que c suffixes sur les commandes de remplacement à mémoriser, et
basculé en répétant les suffixes.

cloches d'erreur, eb
[Défaut unset]

Si l'éditeur est dans ex mode, et le terminal ne prend pas en charge un mode hors concours (tel que
vidéo inverse), et cloches d'erreur est défini, les messages d'erreur doivent être précédés d'une alerte
Terminal.

exrc
[Défaut unset]

If exrc est réglé, ex doit accéder à n'importe quel .exrc fichier dans le répertoire courant, comme décrit dans
Initialisation in ex ainsi que vi. Si exrc n'est pas défini, ex doit ignorer tout .exrc déposer dans le
répertoire courant lors de l'initialisation, sauf si le répertoire courant est celui nommé par le
ACCUEIL variable d'environnement.

ignorer la casse, ic
[Défaut unset]

If ignorer la casse est défini, les caractères qui ont des représentations majuscules et minuscules doivent
faire considérer ces représentations comme équivalentes aux fins de l'expression régulière
Comparaison.

La ignorer la casse l'option d'édition doit affecter toutes les expressions régulières mémorisées ; par example,
désactiver le ignorer la casse l'option d'édition doit entraîner une vi n commande pour rechercher
la dernière expression régulière de base en respectant la casse.

liste
[Défaut unset]

If liste est défini, modifiez les lignes de tampon écrites dans ex mode de commande doit être écrit comme
spécifié pour le impression commande avec le l drapeau spécifié. En mode ouvert ou visuel, chaque
la ligne de tampon d'édition doit être affichée comme spécifié pour la ex impression commande avec le l drapeau
spécifié. En mode de saisie de texte ouvert ou visuel, lorsque le curseur ne repose sur aucun
caractère dans la ligne, il doit reposer sur le «$» marquer la fin de la ligne.

la magie
[Défaut set]

If la magie est défini, modifier l'interprétation des caractères dans les expressions régulières et
substitution chaînes de remplacement (voir Un coupage régulier Expressions in ex ainsi que après extraction String in
ex).

message
[Défaut set]

If message est défini, l'autorisation pour les autres d'utiliser le écrire or parler commandes pour écrire
le terminal doit être allumé en mode ouvert ou visuel. La commande au niveau du shell message
n prévaudra sur tout réglage du ex message option; c'est-à-dire si message y était
émis avant le démarrage de l'éditeur (ou dans un échappement shell), tels que :

:!message y

le message option ex doit supprimer les messages entrants, mais le message l'option ne doit pas
activer les messages entrants si message n a été publiée.

nombre, nu
[Défaut unset]

If nombre est défini, modifiez les lignes de tampon écrites dans ex mode de commande doit être écrit avec
numéros de ligne, dans le format spécifié par le impression commande avec le # drapeau spécifié. Dans
ex mode de saisie de texte, chaque ligne sera précédée du numéro de ligne qu'elle aura dans le
fichier.

En mode ouvert ou visuel, chaque ligne de tampon d'édition doit être affichée avec une ligne précédente
numéro, dans le format spécifié par le ex impression commande avec le # drapeau spécifié. Cette
le numéro de ligne ne doit pas être considéré comme faisant partie de la ligne aux fins de l'évaluation de la
colonne actuelle ; c'est-à-dire que la position de colonne 1 doit être la première position de colonne après le
format spécifié par le impression commander.

paragraphes, pour
[Par défaut dans les paramètres régionaux POSIX IPLPPPQPP LIpplpipbp]

La paragraphes l'option d'édition doit définir des limites de paragraphe supplémentaires pour les
commandes du mode visuel. le paragraphes l'option d'édition peut être définie sur une chaîne de caractères
composé de zéro ou plusieurs paires de caractères. Ce serait une erreur de le mettre à un impair
nombre de caractères.

rapide
[Défaut set]

If rapide est réglé, ex l'entrée du mode de commande doit être demandée avec un (':'); lorsque
non défini, aucune invite ne doit être écrite.

lecture seulement
[Défaut sur le lien texte]

Si la lecture seulement l'option d'édition est définie, le mode lecture seule doit être activé (voir Écrire). La
lecture seulement l'option d'édition doit être initialisée pour être définie si l'une des conditions suivantes est remplie
vrai:

* L'option de ligne de commande −R a été spécifiée.

* Effectuer des actions équivalentes à la accès() fonction appelée avec ce qui suit
arguments indique que le fichier n'a pas l'autorisation d'écriture :

1. Le chemin d'accès actuel est utilisé comme chemin argument.

2. La constante W_OK est utilisé comme à la mode argument.

La lecture seulement l'option d'édition peut être initialisée pour être définie pour d'autres, définies par l'implémentation
les raisons. le lecture seulement l'option d'édition ne doit pas être initialisée pour être désactivée en fonction d'un
privilèges de l'utilisateur ou du processus. le lecture seulement l'option d'édition doit être réinitialisée chaque
moment où le contenu du tampon d'édition est remplacé (par exemple, par un éditer or next
commande) sauf si l'utilisateur l'a défini explicitement, auquel cas il doit rester défini jusqu'à ce que
l'utilisateur l'annule explicitement. Une fois désarmé, il doit être réinitialisé à chaque fois que
le contenu du tampon d'édition est remplacé.

redessiner
[Défaut unset]

L'éditeur simule un terminal intelligent sur un terminal muet. (Comme cela est susceptible de
nécessite une grande quantité de sortie vers le terminal, il n'est utile qu'à une transmission élevée
vitesses.)

remap
[Défaut set]

If remap est défini, la traduction de carte doit permettre des cartes définies en termes d'autres cartes ;
la traduction se poursuivra jusqu'à l'obtention d'un produit final. Si non défini, une seule étape
la traduction doit être faite.

rapport
[Par défaut 5]

La valeur de cette rapport l'option d'édition spécifie le nombre de lignes ajoutées, copiées,
supprimé ou modifié dans le tampon d'édition entraînera l'écriture d'un message d'information
à l'utilisateur. Les conditions suivantes doivent provoquer un message d'information. Le message
doit contenir le nombre de lignes ajoutées, copiées, supprimées ou modifiées, mais est autrement
non spécifié.

* Un ex or vi commande de l'éditeur, autre que ouvert, défaireou visuel, qui modifie au moins
la valeur du rapport modifier le nombre d'options de lignes, et qui ne fait pas partie d'un ex
de défis or v commande, ou ex or vi tampon d'exécution, doit provoquer une information
message à rédiger.

* Un ex coup sec or vi y or Y commande, qui copie au moins la valeur de la rapport éditer
option plus 1 nombre de lignes, et qui ne fait pas partie d'un ex de défis or v commande, ou
ex or vi l'exécution de la mémoire tampon, doit entraîner l'écriture d'un message d'information.

* Un ex de défis, v, ouvert, défaireou visuel commande ou ex or vi exécution du tampon, qui ajoute
ou supprime un total d'au moins la valeur de la rapport modifier l'option nombre de lignes,
et qui ne fait pas partie d'un ex de défis or v commande, ou ex or vi exécution du tampon,
entraînera l'écriture d'un message d'information. (Par exemple, si 3 lignes étaient
ajoutées et 8 lignes supprimées lors d'une ex visuel commande, 5 serait le nombre comparé
contre l' rapport option d'édition une fois la commande terminée.)

faire défiler, scr
[Par défaut (nombre de lignes à l'écran −1)/2]

La valeur de l' volute l'option d'édition doit déterminer le nombre de lignes défilées par le ex
-D et z commandes. Pour le vi -D et ‐U commandes, il doit être
le nombre initial de lignes à faire défiler lorsqu'aucune précédente -D ou ‐U commande
a été exécuté.

les sections
[Par défaut dans les paramètres régionaux POSIX NHSHH HUnhsh]

La les sections l'option d'édition doit définir des limites de section supplémentaires pour l'ouverture et
commandes du mode visuel. le les sections l'option d'édition peut être définie sur une chaîne de caractères composée
de zéro ou plusieurs paires de caractères ; ce serait une erreur de le mettre à un nombre impair de
caractères.

coquille, sh
[Valeur par défaut de la variable d'environnement SHELL]

La valeur de cette option doit être une chaîne. Le défaut est prélevé sur le SHELL
variable d'environnement. Si la SHELL variable d'environnement est nulle ou vide, la sh (voir sh)
utilitaire doit être la valeur par défaut.

largeur de décalage, sw
[Par défaut 8]

La valeur de cette option doit donner la largeur en colonnes d'un niveau d'indentation utilisé
lors de l'auto-indentation et par les commandes shift (< ainsi que >).

match-spectacle, sm
[Défaut unset]

La fonctionnalité décrite pour le match de spectacle l'option d'édition n'a pas besoin d'être prise en charge sur le bloc-
des terminaux en mode ou des terminaux aux capacités insuffisantes.

If match de spectacle est activé, en mode ouvert ou visuel, lorsqu'un ')' or '}' est tapé, si la correspondance
'(' or '{' est actuellement visible à l'écran, le '(' or '{' sera signalé
déplacer le curseur à son emplacement pendant une durée indéterminée.

mode d'affichage
[Défaut unset]

If mode d'affichage est défini, en mode ouvert ou visuel, le mode actuel dans lequel se trouve l'éditeur doit
être affiché sur la dernière ligne de l'écran. Le mode de commande et le mode de saisie de texte doivent être
différencié; d'autres modes non spécifiés et des informations définies par la mise en œuvre peuvent être
affiché.

ouverture lente
[Défaut unset]

If ouverture lente est défini pendant les modes de saisie de texte ouvert et visuel, l'éditeur ne doit pas mettre à jour
parties de l'affichage autres que celles des colonnes de ligne d'affichage qui affichent les caractères
saisie par l'utilisateur (voir Entrée Mode Commandes in vi).

tabulation, ts
[Par défaut 8]

La valeur de cette option d'édition doit spécifier la limite de colonne utilisée par un dans le
affichage (voir impression automatique, ap ainsi que Entrée Mode Commandes in vi).

longueur de balise, tl
[Zéro par défaut]

La valeur de cette option d'édition doit spécifier le nombre maximal de caractères qui sont
considéré comme significatif dans le nom de balise spécifié par l'utilisateur et dans le nom de balise des balises
déposer. Si la valeur est zéro, tous les caractères des deux noms d'étiquette doivent être significatifs.

étiquettes
[Défaut sur le lien texte]

La valeur de cette option d'édition doit être une chaîne de -chemins délimités des fichiers
utilisé par le Étiquette commander. La valeur par défaut n'est pas spécifiée.

terme
[Valeur par défaut de la variable d'environnement TERME]

La valeur de cette option d'édition doit être une chaîne. Le défaut est prélevé sur le TERME
variables dans l'environnement. Si la TERME variable d'environnement est vide ou nulle, la
la valeur par défaut n'est pas spécifiée. L'éditeur doit utiliser la valeur de cette option d'édition pour déterminer
le type de dispositif d'affichage.

Les résultats ne sont pas spécifiés si l'utilisateur modifie la valeur de l'option d'édition de terme après
initialisation de l'éditeur.

laconique
[Défaut unset]

If laconique est défini, les messages d'erreur peuvent être moins détaillés. Cependant, à l'exception de cette mise en garde,
les messages d'erreur ne sont pas spécifiés. De plus, tous les messages d'erreur n'ont pas besoin d'être modifiés pour
différents paramètres de cette option.

prévenir
[Défaut set]

If prévenir est défini et le contenu du tampon d'édition a été modifié depuis qu'il a été
dernier écrit complètement, l'éditeur doit écrire un message d'avertissement avant certains !
commandes (voir Échapper).

fenêtre
[Défaut sur le lien texte]

Une valeur utilisée en mode ouvert et visuel, par le -Bande ‐F commandes, et, dans
mode visuel, pour spécifier le nombre de lignes affichées lorsque l'écran est repeint.

Si la -w l'option de ligne de commande n'est pas spécifiée, la valeur par défaut doit être définie sur
valeur de la LIGNES variable d'environnement. Si la LIGNES la variable d'environnement est vide ou
null, la valeur par défaut sera le nombre de lignes dans l'affichage moins 1.

Réglage fenêtre modifier l'option à zéro ou à une valeur supérieure au nombre de lignes dans
l'affichage moins 1 (soit explicitement, soit en fonction du -w option ou le LIGNES sûr, heureux et sain
variable) entraînera la fenêtre option d'édition à définir sur le nombre de lignes dans le
afficher moins 1.

Le débit en bauds de la ligne terminale peut changer la valeur par défaut dans une mise en œuvre définie
manière.

marge d'emballage, wm
[Par défaut 0]

Si la valeur de cette option d'édition est zéro, elle n'aura aucun effet.

Si ce n'est pas dans les paramètres régionaux POSIX, l'effet de cette option d'édition est défini par l'implémentation.

Sinon, il doit spécifier un nombre de colonnes à partir de la marge de fin du terminal.

Pendant les modes de saisie de texte ouvert et visuel, pour chaque caractère pour lequel une partie du
caractère est affiché dans une colonne inférieure à marge d'enveloppement colonnes de la fin
marge de la ligne d'affichage, l'éditeur doit se comporter comme suit :

1. Si le personnage déclenchant cet événement est un , lui et tous ceux qui précèdent immédiatement
caractères sur la ligne courante saisis lors de l'exécution de la
commande de saisie de texte, doit être ignorée et l'éditeur doit se comporter comme si l'utilisateur avait
entré un seul plutôt. De plus, si le prochain caractère saisi par l'utilisateur est
une , il doit également être jeté.

2. Sinon, s'il y a un ou plusieurs caractères sur la ligne courante immédiatement
précédant le dernier groupe de non- caractères qui ont été saisis pendant
l'exécution de la commande de saisie de texte en cours, la les personnages doivent être
remplacé comme si l'utilisateur avait entré un seul plutôt.

Si la indentation automatique l'option d'édition est définie et les événements décrits en 1. ou 2. sont exécutés,
quelconque les caractères situés au niveau ou après le curseur dans la ligne courante doivent être ignorés.

La marge finale doit être déterminée par le système ou annulée par l'utilisateur, comme
décrit pour COLONNES dans la section VARIABLES D'ENVIRONNEMENT et le volume Définitions de base
de POSIX.1‐2008, Chapitre 8, Environment Variables.

analyse d'enveloppement, ws
[Défaut set]

If numérisation enveloppante est défini, recherche (le ex / or ? adresses, ou mode ouvert et visuel /, ?, N,
ainsi que n commandes) doit envelopper le début ou la fin du tampon d'édition ; lorsqu'il n'est pas activé,
les recherches doivent s'arrêter au début ou à la fin du tampon d'édition.

écrire n'importe quoi, wa
[Défaut unset]

If écrire est défini, certaines des vérifications effectuées lors de l'exécution de la ex écrire commandes
doit être inhibé, comme décrit dans l'option de l'éditeur écriture automatique.

EXIT STATUT


Les valeurs de sortie suivantes doivent être renvoyées :

0 Achèvement réussi.

>0 Une erreur s'est produite.

CONSÉQUENCES OF LES ERREURS


Lorsqu'une erreur est rencontrée et que l'entrée standard n'est pas un fichier de périphérique terminal, ex
ne doit pas écrire le fichier ni revenir en mode de commande ou de saisie de texte, et doit se terminer par
un état de sortie non nul.

Sinon, lorsqu'une erreur irrécupérable est rencontrée, elle doit être équivalente à un SIGHUP
événement asynchrone.

Sinon, lorsqu'une erreur est rencontrée, l'éditeur doit se comporter comme spécifié dans Command
Gamme Analyse in ex.

La Abonnement les sections informatif.

INSCRIPTION UTILISATION


Si un signal SIGSEGV est reçu alors que ex est en train d'enregistrer un fichier, le fichier n'est peut-être pas
enregistré avec succès.

La next La commande peut accepter plus d'un fichier, donc une utilisation telle que :

next 'ls [abc]*`

est valable; ce ne serait pas valable pour éditer or lire commandes, par exemple, parce qu'elles
attendez-vous à un seul fichier et des résultats non spécifiés se produisent.

EXEMPLES


Aucun.

RAISONNEMENT


La ex/vi La spécification est basée sur la pratique historique trouvée dans les 4 BSD et System
V implémentations de ex ainsi que vi.

A limité éditeur (à la fois l'historique rouge utilité et modifications de ex) étaient
considéré et rejeté pour inclusion. Aucune des deux options n'offrait le niveau de sécurité qui
les utilisateurs peuvent s'attendre.

Il est reconnu que ex le mode visuel et les fonctionnalités associées seraient difficiles, sinon
impossible, à mettre en oeuvre de manière satisfaisante sur un terminal en mode bloc, ou un terminal sans
toute forme d'adressage de curseur ; il n'est donc pas obligatoire que ces caractéristiques
devrait fonctionner sur tous les terminaux. Il est toutefois prévu qu'un ex la mise en oeuvre
devrait fournir l'ensemble complet de fonctionnalités sur tous les terminaux capables de les prendre en charge.

Options
La -c remplacement pour +commander a été inspiré par le -e option de sed. Historiquement, tout
ces commandes (voir éditer ainsi que next ainsi) ont été exécutés à partir de la dernière ligne de l'édition
amortir. Cela signifiait, par exemple, que "+/motif" échouerait à moins que numérisation enveloppante option
a été mis en. POSIX.1‐2008 exige la conformité à la pratique historique. le +commander option est
n'est plus spécifié par POSIX.1‐2008 mais peut être présent dans certaines implémentations.
Historiquement, certaines implémentations limitaient la ex commandes qui pourraient être répertoriées comme faisant partie
des arguments de la ligne de commande. Par souci de cohérence, POSIX.1‐2008 ne permet pas ces
restrictions.

Dans les implémentations historiques de l'éditeur, le -R option (et le lecture seulement option d'édition)
seulement empêché l'écrasement des fichiers ; l'ajout aux fichiers était toujours autorisé, le mappage
lâchement dans le csh nul variable. Certaines implémentations, cependant, n'ont pas suivi
cette sémantique, et lecture seulement ne permet pas non plus d'ajouter. POSIX.1‐2008 suit la
dernière pratique, estimant qu'il s'agit d'un sens plus évident et intuitif de lecture seulement.

La -s l'option supprime tous les commentaires interactifs des utilisateurs et est utile pour l'édition de scripts
dans les travaux par lots. La liste des effets spécifiques est une pratique historique. Le type de borne
``incapable de supporter les modes ouverts et visuels'' a été historiquement nommé ``stupide''.

La -t l'option était nécessaire parce que le balises c apparaît dans POSIX.1‐2008 et l'utilitaire
l'option est disponible dans toutes les implémentations historiques de ex.

Historiquement, le ex ainsi que vi les services publics ont accepté un -x option, qui a fait le cryptage basé sur
l'algorithme trouvé dans l'historique crypte utilitaire. Le -x l'option de cryptage, et l'option
associé crypte utilité, ont été omis car l'algorithme utilisé n'était pas spécifiable et
les lois de contrôle des exportations de certains pays rendent difficile l'exportation
La technologie. De plus, il n'offrait pas historiquement le niveau de sécurité que les utilisateurs
pourrait s'attendre.

Standard Entrée
Une condition de fin de fichier n'est pas équivalente à un caractère de fin de fichier. Une fin de
caractère de fichier, ‐D, est historiquement un ex commander.

Il n'y avait pas de longueur de ligne maximale dans les implémentations historiques de ex. Plus précisément, comme il
a été analysé en morceaux, les adresses avaient une longueur maximale différente de celle des noms de fichiers.
De plus, la taille maximale du tampon de ligne a été déclarée comme BUFSIZ, qui était de longueurs différentes
sur différents systèmes. Cette version a sélectionné la valeur de {LINE_MAX} pour imposer un prix raisonnable
restriction sur l'utilisation portable de ex et pour aider les rédacteurs de suites de tests dans leur développement de
des tests réalistes qui exercent cette limite.

Entrée Fichiers
C'était une décision explicite des développeurs de standards qu'un être ajouté à n'importe quel
fichier manquant. On croyait que cette caractéristique de ex ainsi que vi a été invoqué par les utilisateurs dans
afin de créer des fichiers texte sans fin plus transportable. Il est reconnu que
cela nécessitera une option ou une extension spécifiée par l'utilisateur pour les implémentations qui permettent ex
ainsi que vi modifier des fichiers de type autre que texte si ces fichiers ne sont pas autrement identifiés par
le système. Il a été convenu que la possibilité d'éditer des fichiers de type arbitraire peut être utile,
mais il n'a pas été jugé nécessaire d'exiger qu'un ex or vi la mise en œuvre soit requise
pour gérer des fichiers autres que des fichiers texte.

Le paragraphe de la section FICHIERS D'ENTREE, ``Par défaut, ...'', est destiné à fermer un
problème de sécurité de longue date dans ex ainsi que vi; celle de la ``modeline'' ou ``modelines''
option d'édition. Cette fonctionnalité permet à n'importe quelle ligne dans les cinq premières ou dernières lignes du fichier
contenant les chaînes "ex:" or "vi :" (et, apparemment, "ei :" or "vx :") être une ligne
contenant les commandes de l'éditeur, et ex interprète tout le texte jusqu'au suivant ':' ou
comme une commande. Considérez les conséquences, par exemple, d'un utilisateur peu méfiant utilisant ex or
vi en tant qu'éditeur lors de la réponse à un message électronique dans lequel une ligne telle que :

ex:! rm −rf :

apparaît dans les lignes de signature. Les développeurs standard croyaient fermement qu'un éditeur
ne doit pas par défaut interpréter les lignes d'un fichier. Les vendeurs sont fortement invités à supprimer
cette fonctionnalité à partir de leurs implémentations de ex ainsi que vi.

asynchrones Événements
L'intention de la phrase ``écriture complète'' est que le tampon d'édition entier soit écrit
à un stockage stable. La note concernant les fichiers temporaires est destinée aux implémentations qui
utiliser des fichiers temporaires pour sauvegarder les tampons d'édition non nommés par l'utilisateur.

Historiquement, SIGQUIT était ignoré par ex, mais était l'équivalent de la Q commande en visuel
mode; c'est-à-dire qu'il a quitté le mode visuel et est entré ex mode. POSIX.1‐2008 permet, mais ne
pas besoin, ce comportement. Historiquement, SIGINT était souvent utilisé par vi utilisateurs à résilier
mode de saisie de texte ( ‐C est souvent plus facile à saisir que ). Quelques implémentations
of vi ont alerté le terminal de cet événement, et certains ne l'ont pas fait. POSIX.1‐2008 exige que
SIGINT se comporte de la même manière que , et que le terminal ne soit pas alerté.

Historiquement, la suspension du ex l'éditeur en mode de saisie de texte était similaire à SIGINT, comme
les lignes terminées ont été conservées, mais toute ligne partielle a été supprimée et l'éditeur est revenu à
mode de commande. POSIX.1‐2008 est muet sur ce problème ; mises en œuvre sont encouragées à
suivre la pratique historique, si possible.

Historiquement, le vi l'éditeur n'a pas traité SIGTSTP comme un événement asynchrone, et il a été
donc impossible de suspendre l'éditeur en mode saisie de texte visuel. Il y a deux grands
raisons à cela. Le premier est que SIGTSTP est un signal de diffusion sur les systèmes UNIX, et le
chaîne d'événements où la coquille execs une application qui ensuite execs vi généralement causé
confusion pour l'état terminal si SIGTSTP a été livré au groupe de processus dans le
manière par défaut. La seconde était que la plupart des implémentations d'UNIX les courses le paquet a fait
pas gérer SIGTSTP en toute sécurité, et la réception de SIGTSTP au mauvais moment les ferait
s'écraser. POSIX.1‐2008 est muet sur ce problème ; mises en œuvre sont encouragées à traiter
suspension en tant qu'événement asynchrone si possible.

Historiquement, les modifications apportées au tampon d'édition avant que SIGINT n'interrompe une opération
ont été retenus ; c'est-à-dire que n'importe où de zéro à toutes les lignes à modifier pourrait avoir
été modifié au moment où le SIGINT est arrivé. Ces changements n'ont pas été écartés par le
arrivée de SIGINT. POSIX.1‐2008 permet ce comportement, notant que le défaire la commande est
nécessaire pour pouvoir annuler ces commandes partiellement terminées.

L'action entreprise pour les signaux autres que SIGINT, SIGCONT, SIGHUP et SIGTERM est
non spécifié car certaines implémentations tentent de sauvegarder le tampon d'édition dans un état utile
lorsque d'autres signaux sont reçus.

Standard Erreur
Pour ex/vi, les messages de diagnostic sont les messages signalés à la suite d'une tentative infructueuse
invoquer ex or vi, telles que des options non valides ou des ressources insuffisantes, ou un
condition de résiliation. Les messages de diagnostic ne doivent pas être confondus avec les messages d'erreur
générées par des commandes utilisateur inappropriées ou illégales.

Initialisation in ex ainsi que vi
Si une ex commande (autre que cd, chdirou la source) a un argument de nom de fichier, un ou les deux
les noms de chemin alternatif et actuel seront définis. De manière informelle, ils sont définis comme suit :

1. Si le ex commande est celle qui remplace le contenu du tampon d'édition, et elle
réussit, le chemin d'accès actuel sera défini sur l'argument du nom de fichier (le premier
argument de nom de fichier dans le cas de next commande) et le nom de chemin alternatif sera
défini sur le chemin d'accès actuel précédent, s'il y en avait un.

2. Dans le cas des formulaires de lecture/écriture de fichiers du lire ainsi que écrire commandes, s'il y a
aucun chemin d'accès actuel, le chemin d'accès actuel sera défini sur l'argument du nom de fichier.

3. Sinon, le nom de chemin alternatif sera défini sur l'argument du nom de fichier.

Par exemple, :modifier foo ainsi que :se remettre foo, en cas de succès, définissez le chemin d'accès actuel et,
s'il y avait un chemin d'accès actuel précédent, le chemin d'accès alternatif. Les commandes :écrivez,
!commanderet :modifier ne définissez ni les noms de chemin actuels ni alternatifs. Si la :modifier foo
Si la commande échouait pour une raison quelconque, le chemin d'accès alternatif serait défini. le lire ainsi que
écrire les commandes définissent le chemin d'accès alternatif à leur filet argument, à moins que le courant
pathname n'est pas défini, auquel cas ils définissent le chemin d'accès actuel sur leur filet arguments.
Le nom de chemin alternatif n'a pas été historiquement défini par le :la source commander. POSIX.1‐2008
exige la conformité à la pratique historique. Implémentations ajoutant des commandes qui prennent
Les noms de fichiers en tant qu'arguments sont encouragés à définir le chemin d'accès alternatif comme décrit ici.

Historiquement, ex ainsi que vi lis le .exrc déposer dans le $ ACCUEIL répertoire deux fois, si l'éditeur
a été exécuté dans le $ ACCUEIL annuaire. POSIX.1‐2008 interdit ce comportement.

Historiquement, le 4 BSD ex ainsi que vi lis le $ ACCUEIL et local .exrc fichiers s'ils appartenaient
par le véritable ID de l'utilisateur, ou le sourceany l'option a été définie, indépendamment des autres
considérations. C'était un problème de sécurité car il est possible de mettre UNIX normal
commandes système à l'intérieur d'un .exrc déposer. POSIX.1‐2008 ne spécifie pas le sourceany option,
et les implémentations historiques sont encouragées à le supprimer.

La .exrc les fichiers doivent appartenir au véritable ID de l'utilisateur et ne peuvent être écrits par personne d'autre
que le propriétaire. L'exception des privilèges appropriés vise à permettre aux utilisateurs de
acquérir des privilèges spéciaux, mais continuer à utiliser le .exrc fichiers dans leurs répertoires personnels.

System V version 3.2 et versions ultérieures vi les implémentations ont ajouté l'option [non]exrc. Le comportement
est-ce local .exrc les fichiers sont en lecture seule si le exrc option est définie. La valeur par défaut pour le
exrc l'option était désactivée, donc par défaut, local .exrc les fichiers n'ont pas été lus. Le problème c'était
destiné à résoudre était que System V permettait aux utilisateurs de donner des fichiers, il n'y a donc pas
test de propriété ou d'écriture possible pour s'assurer que le fichier est sûr. C'est encore un
problème de sécurité sur les systèmes où les utilisateurs peuvent donner des fichiers, mais il n'y a rien
supplémentaire que POSIX.1‐2008 peut faire. L'exception définie par l'implémentation est destinée à
permettre aux groupes d'avoir des .exrc fichiers partagés par les utilisateurs, en créant des pseudo-utilisateurs
posséder les fichiers partagés.

POSIX.1‐2008 ne mentionne pas l'ensemble du système ex ainsi que vi fichiers de démarrage. alors qu'ils existent dans
plusieurs implémentations de ex ainsi que vi, ils ne sont présents dans aucune implémentation
considéré comme une pratique historique par POSIX.1‐2008. Implémentations qui ont de tels fichiers
ne devez les utiliser que s'ils appartiennent au véritable ID utilisateur ou à un utilisateur approprié (par
exemple, root sur les systèmes UNIX) et s'ils ne sont accessibles en écriture par aucun utilisateur autre que leur
propriétaire. Les fichiers de démarrage à l'échelle du système doivent être lus avant la QUITTER variable, $HOME/.exrc,
ou local .exrc les dossiers sont évalués.

Historiquement, tout ex la commande peut être entrée dans le QUITTER variable ou le .exrc fichier,
bien que ceux nécessitant que le tampon d'édition contiennent déjà des lignes de texte généralement
a provoqué la chute des implémentations historiques de l'éditeur core. POSIX.1‐2008 exige que
tous ex la commande soit autorisée dans le QUITTER variable et .exrc fichiers, pour la simplicité de
spécification et cohérence, bien que beaucoup d'entre eux échoueront évidemment sous de nombreux
circonstances.

L'initialisation du contenu du tampon d'édition utilise la phrase ``l'effet doit
être'' à l'égard de divers ex commandes. L'intention de cette phrase est que le tampon d'édition
le contenu chargé pendant la phase d'initialisation ne soit pas perdu ; c'est-à-dire charger la modification
tampon doit échouer si le .exrc fichier lu dans le contenu d'un fichier et n'a pas
écrire ensuite le tampon d'édition. Une intention supplémentaire de cette phrase est de préciser que
la ligne et la colonne actuelles initiales sont définies comme spécifié pour l'individu ex les commandes.

Historiquement, le -t l'option se comportait comme si la recherche de balises était une +commander; c'est-à-dire que c'était
exécuté à partir de la dernière ligne du fichier spécifié par la balise. Cela a abouti à la recherche
échouant si le modèle était un modèle de recherche vers l'avant et que le numérisation enveloppante l'option d'édition n'était pas
ensemble. POSIX.1‐2008 n'autorise pas ce comportement, nécessitant que la recherche de la balise
modèle soit exécuté sur l'ensemble du fichier et, s'il n'est pas trouvé, que la ligne actuelle soit définie
à un emplacement plus raisonnable dans le fichier.

Historiquement, le tampon d'édition vide présenté pour édition lorsqu'un fichier n'était pas spécifié par
l'utilisateur était anonyme. Ceci est autorisé par POSIX.1‐2008 ; cependant, les implémentations sont
encouragés à fournir aux utilisateurs un nom de fichier temporaire pour ce tampon car cela leur permet
l'utilisation de ex commandes qui utilisent le chemin d'accès actuel pendant les sessions d'édition temporaires.

Historiquement, le fichier spécifié à l'aide de la -t l'option ne faisait pas partie de l'argument actuel
liste. Cette pratique est autorisée par POSIX.1‐2008 ; cependant, les implémentations sont encouragées
pour inclure son nom dans la liste d'arguments actuelle par souci de cohérence.

Historiquement, le -c la commande n'était généralement pas exécutée jusqu'à ce qu'un fichier existe déjà
a été édité. POSIX.1‐2008 exige la conformité à cette pratique historique. Commandes qui
pourrait causer le -c commande à exécuter comprend le ex commandes éditer, next, récupérer,
rembobineret Étiquette, et le vi commandes ‐^ et ‐]. Historiquement, la lecture d'un
fichier dans un tampon d'édition n'a pas causé le -c commande à exécuter (même si cela peut
définir le chemin d'accès actuel) à l'exception qu'il a causé le -c commande d'être
exécuté si : l'éditeur était dans ex mode, le tampon d'édition n'avait pas de chemin d'accès actuel, l'édition
tampon était vide et aucune commande de lecture n'avait encore été tentée. Pour la cohérence et
simplicité de spécification, POSIX.1‐2008 ne permet pas ce comportement.

Historiquement, le -r l'option était la même qu'une session d'édition normale s'il n'y avait pas de récupération
informations disponibles pour le dossier. Cela permettait aux utilisateurs d'entrer :

vi -r *.c

et récupérer tous les fichiers qui étaient récupérables. Dans certaines implémentations, la récupération était
tenté uniquement sur le premier fichier nommé, et le fichier n'a pas été entré dans l'argument
liste; dans d'autres, une récupération a été tentée pour chaque fichier nommé. De plus, certains éléments historiques
implémentations ignorées -r if -t a été spécifié ou n'a pas pris en charge la ligne de commande filet
disputes avec le -t option. Pour la cohérence et la simplicité des spécifications,
POSIX.1‐2008 interdit ces cas particuliers et exige que la récupération soit tentée le
première fois que chaque fichier est édité.

Historiquement, vi initialisé le ` ainsi que ' marques, mais ex n'a pas. Cela signifiait que si le
première commande dans ex mode était visuel ou si un ex commande a été exécutée en premier (par exemple,
vi +10 filet), vi a été saisi sans que les marques aient été initialisées. Parce que la norme
les développeurs pensaient que les marques étaient généralement utiles, et pour la cohérence et la simplicité
de spécification, POSIX.1‐2008 exige qu'ils soient toujours initialisés s'ils sont ouverts ou
mode visuel, ou si en ex mode et le tampon d'édition n'est pas vide. Ne pas l'initialiser dans ex
le mode si le tampon d'édition est vide est une pratique historique ; cependant, il a toujours été
possibilité de définir (et d'utiliser) des marques dans des tampons d'édition vides en mode d'édition ouvert et visuel
sessions.

Adressage
Historiquement, ex ainsi que vi accepté les formulaires d'adressage supplémentaires '\/' ainsi que '\?'. Ils étaient
équivalente à "//" ainsi que "???", respectivement. Ils ne sont pas requis par POSIX.1‐2008, principalement
parce que personne ne peut se rappeler s'ils ont jamais fait quelque chose de différent historiquement.

Historiquement, ex ainsi que vi autorisé une adresse de zéro pour plusieurs commandes, et autorisé
le % adresse dans des fichiers vides pour les autres. Pour des raisons de cohérence, POSIX.1‐2008 nécessite une prise en charge
pour le premier dans les quelques commandes où cela a du sens, et l'interdit autrement. Dans
ajout, car POSIX.1‐2008 exige que % être logiquement équivalent à "1,$"est assez proche de celle
également pris en charge là où cela a du sens et interdit dans le cas contraire.

Historiquement, le % l'adresse ne pouvait pas être suivie d'autres adresses. Pour la cohérence
et la simplicité de spécification, POSIX.1‐2008 exige que des adresses supplémentaires soient
prise en charge.

Tous les éléments suivants sont valides adresses:

+++ Trois lignes après la ligne courante.

/re/− Une ligne avant la prochaine occurrence de re.

−2 Deux lignes avant la ligne courante.

3 −−−− 2 Ligne un (notez l'adresse négative intermédiaire).

1 2 3 Ligne six.

N'importe quel nombre d'adresses peut être fourni aux commandes prenant des adresses ; par exemple,
"1,2,3,4,5p" imprime les lignes 4 et 5, car deux est le plus grand nombre d'adresses valides
accepté par le impression commander. Ceci, en combinaison avec le délimiteur,
permet aux utilisateurs de créer des commandes basées sur des modèles ordonnés dans le fichier. Par exemple, le
commander 3;/foo/;+2imprimer affichera la première ligne après la ligne 3 qui contient le motif
foo, plus les deux lignes suivantes. Notez que l'adresse 3; doit être évalué avant d'être
rejeté car l'origine de la recherche pour le /toto/ la commande en dépend.

Historiquement, des valeurs pouvaient être ajoutées aux adresses en les incluant après une ou plusieurs
personnages; par exemple, 3 - 5p écrit la septième ligne du fichier, et /toto/ 5
était le même que /foo/+5. Cependant, seules des valeurs absolues ont pu être ajoutées ; par exemple,
5 /toto/ était une erreur. POSIX.1‐2008 exige la conformité à la pratique historique. Adresse
les décalages sont spécifiés séparément des adresses car ils pouvaient historiquement être
fournies aux commandes de recherche en mode visuel.

Historiquement, toutes les adresses manquantes étaient définies par défaut sur la ligne actuelle. Cela était vrai pour
avant et arrière -adresses délimitées, et pour la fin -délimité
adresses. Pour des raisons de cohérence, POSIX.1‐2008 l'exige pour diriger adresses comme
Hé bien.

Historiquement, ex ainsi que vi accepté le '^' caractère à la fois comme adresse et comme décalage de drapeau
pour les commandes. Dans les deux cas, il était identique au '−' personnage. POSIX.1‐2008 ne
exiger ou interdire ce comportement.

Historiquement, les améliorations apportées aux expressions régulières de base pouvaient être utilisées pour l'adressage ;
par exemple, '~', '\<'et '\>'. POSIX.1‐2008 exige la conformité à l'historique
entraine toi; c'est-à-dire que l'utilisation des expressions régulières est cohérente et que les expressions régulières
les améliorations d'expression soient prises en charge partout où des expressions régulières sont utilisées.

Command Gamme Analyse in ex
Historique ex l'analyse des commandes était encore plus complexe que celle décrite ici. POSIX.1‐2008
nécessite le sous-ensemble de l'analyse de commande que les développeurs standard croyaient être
documentés et que les utilisateurs pourraient raisonnablement s'attendre à utiliser de manière portable, et
qui était historiquement cohérent entre les implémentations. (La fonctionnalité ignorée est
obscur, au mieux.) Les implémentations historiques nécessiteront des changements afin de se conformer
avec POSIX.1‐2008 ; cependant, les utilisateurs ne devraient pas remarquer ces changements. Plus
de la complexité dans ex l'analyse consiste à gérer trois cas de terminaison particuliers :

1. le !, de défis, v, et les versions de filtre du lire ainsi que écrire les commandes sont délimitées
par caractères (ils peuvent contenir personnages habituellement
tuyaux obus).

2. le ex, éditer, nextet visuel en mode ouvert et visuel, les commandes prennent toutes ex commandes,
contenant éventuellement personnages, comme leurs premiers arguments.

3. le s La commande prend une expression régulière comme premier argument et utilise la
caractères de délimitation pour délimiter la commande.

Historiquement, personnages dans le +commander argument de la ex, éditer, next,
viet visuel commandes, et dans le modèle ainsi que remplacement les parties de la s commande, a fait
pas délimiter la commande, et dans les cas de filtre pour lire ainsi que écrire, et le !, de défis,
ainsi que v commandes, ils n'ont pas du tout délimité la commande. Par exemple, ce qui suit
les commandes sont toutes valides :

:modifier +25 | s/abc/ABC/fichier.c
:s/ | /TUYAU/
:lire !épeler % | en colonne
:global/motif/p | je
:s/a/b/ | s/c/d | ensemble

Historiquement, vide ou lignes remplies dans .exrc fichiers et la sourced fichiers (ainsi que
QUITTER variables et ex les scripts de commande) étaient traités comme des commandes par défaut ; C'est, impression
commandes. POSIX.1‐2008 exige spécifiquement qu'ils soient ignorés lorsqu'ils sont rencontrés dans
.exrc ainsi que la sourced pour éliminer une source courante d'erreur de nouvel utilisateur.

Historiquement, ex commandes avec plusieurs adjacentes (ou -séparées) lignes verticales
ont été traités bizarrement lorsqu'ils ont été exécutés à partir de ex mode. Par exemple, la commande ||| <carriage-
retour>, lorsque le curseur était sur la ligne 1, affichait les lignes 2, 3 et 5 du fichier. Dans
De plus, la commande | n'afficherait que la ligne après la ligne suivante, au lieu de la
deux lignes suivantes. Le premier fonctionnait plus logiquement lorsqu'il était exécuté à partir de vi mode, et affiché
lignes 2, 3 et 4. POSIX.1‐2008 nécessite le vi comportement; c'est-à-dire un seul défaut
incrément de numéro de commande et de ligne pour chaque séparateur de commande, et fin
caractères après les séparateurs sont supprimés.

Historiquement, ex autorisé un seul supplément en tant que personnage de commande principal ; pour
Par exemple, :g/motif/:p était une commande valide. POSIX.1‐2008 généralise cela pour exiger que
n'importe quel nombre de têtes les personnages soient dépouillés.

Historiquement, tout préfixe du effacer la commande pouvait être suivie sans intervenir
caractères par un caractère drapeau car dans la commande d p, p est interprété comme le
tampon p. POSIX.1‐2008 exige la conformité à la pratique historique.

Historiquement, le k la commande pouvait être suivie du nom de la marque sans intervenir
personnages. POSIX.1‐2008 exige la conformité à la pratique historique.

Historiquement, le s la commande peut être immédiatement suivie de caractères de drapeau et d'option ;
par exemple, s/e/E/|s|sgc3p était une commande valide. Cependant, les personnages du drapeau ne pouvaient pas supporter
seule; par exemple, les commandes sp ainsi que s l échouerait, tandis que la commande s'il vous plaît ainsi que s gl
réussirait. (Évidemment, le '#' le caractère de drapeau a été utilisé comme caractère de délimitation s'il
suivi la commande.) Un autre problème était que les caractères d'option devaient précéder le drapeau
caractères même lorsque la commande a été entièrement spécifiée ; par exemple, la commande s/e/E/pg
échouerait, tandis que la commande s/e/E/gp réussirait. POSIX.1‐2008 exige la conformité à
pratique historique.

Historiquement, le premier nom de commande qui avait un préfixe correspondant à l'entrée de l'utilisateur
était la commande exécutée ; par exemple, ve, veret Vers tous ont exécuté le version commander.
Les commandes étaient dans un ordre spécifique, cependant, de sorte que a appariés ajouter, Pas abréger.
POSIX.1‐2008 exige la conformité à la pratique historique. La restriction à la commande
l'ordre de recherche des implémentations avec des extensions est d'éviter l'ajout de commandes telles que
que les préfixes historiques ne fonctionneraient pas de manière portable.

Implémentations historiques de ex ainsi que vi n'a pas correctement géré plusieurs ex commandes,
séparé par caractères, qui sont entrés ou sortis du mode visuel ou de l'éditeur.
Parce que les implémentations de vi existent qui ne présentent pas ce mode de défaillance, POSIX.1‐2008
ne le permet pas.

L'exigence que les noms de commande alphabétiques se composent de tous les caractères alphabétiques suivants
caractères jusqu'au prochain caractère non alphabétique signifie que les noms de commande alphabétiques
doivent être séparés de leurs arguments par un ou plusieurs caractères non alphabétiques, normalement
une ou '!' caractère, sauf indication contraire pour les exceptions, le effacer, ket s
les commandes.

Historiquement, l'exécution répétée des ex défaut impression commandes ( -RÉ, eof,
, ) effaçait tout caractère d'invite et affichait les lignes suivantes
sans faire défiler le terminal ; c'est-à-dire juste en dessous de toutes les lignes précédemment affichées.
Cela a fourni une présentation plus claire des lignes dans le fichier pour l'utilisateur. POSIX.1‐2008
ne nécessite pas ce comportement car il peut être impossible dans certaines situations ; cependant,
les implémentations sont fortement encouragées à fournir cette sémantique si possible.

Historiquement, il était possible de changer de fichier au milieu d'une commande, et d'avoir le
reste de la commande exécutée dans le nouveau fichier ; par exemple:

:modifier +25 fichier.c | s/abc/ABC/ | 1

était une commande valide et la substitution a été tentée dans le fichier nouvellement modifié.
POSIX.1‐2008 exige la conformité à la pratique historique. Les commandes suivantes sont
des exemples qui exercent la ex analyseur :

echo 'foo | bar' > fichier1 ; echo 'foo/bar' > fichier2 ;
vi
:modifier +1 | s/|/TUYAU/ | w file1 | e file2 | 1 | s/\//SLASH/ | wq

Historiquement, il n'y avait aucune protection dans les implémentations d'éditeurs pour éviter ex de défis, v, @,
or * commandes modifiant les tampons d'édition pendant l'exécution de leurs commandes associées. Parce que
cela entraînerait presque invariablement une défaillance catastrophique de l'éditeur, et
implémentations existent qui présentent ces problèmes, POSIX.1‐2008 exige que le changement
le tampon d'édition pendant un de défis or v commande, ou lors d'une @ or * commande pour laquelle il y a
sera plus d'une seule exécution, être une erreur. Implémentations prenant en charge plusieurs
tampons d'édition simultanément sont fortement encouragés à appliquer la même sémantique à
basculer entre les tampons également.

La ex la citation de commande requise par POSIX.1-2008 est un sur-ensemble de la citation dans l'historique
implémentations de l'éditeur. Par exemple, il n'était pas historiquement possible d'échapper à un
dans un nom de fichier ; par exemple, :modifier foo\\\ barre signalerait que trop de noms de fichiers
avait été entré pour la commande d'édition, et il n'y avait aucune méthode pour échapper à un dans
le premier argument d'un éditer, ex, nextou visuel commande du tout. POSIX.1‐2008 étend
pratique historique, exigeant que le comportement de citation soit rendu cohérent dans tous ex
commandes, à l'exception des Localisation, démapper, abrégeret abréger commandes, qui
historiquement utilisé ‐V au lieu de caractères à citer. Pour ceux
quatre commandes, POSIX.1‐2008 exige la conformité à la pratique historique.

Barre oblique inverse entre guillemets ex est non intuitif. -les échappements sont ignorés à moins qu'ils
échapper un caractère spécial ; par exemple, lors de l'exécution filet développement d'arguments, le
un magnifique "\\%" équivaut à '\%', ne pas "\actuel chemin d'accès>". Cela peut prêter à confusion pour
utilisateurs parce que est généralement l'un des caractères qui provoque l'expansion du shell
être exécuté, et donc les règles de cotation du shell doivent être prises en considération.
Généralement, les guillemets ne sont pris en compte que s'ils échappent à un caractère spécial, et
un caractère guillemet doit être fourni pour chaque couche d'analyse pour laquelle le caractère est
spécial. Comme autre exemple, un seul est nécessaire pour la '\l' séquence
dans les modèles de remplacement de substitution, parce que le caractère 'l' n'est spécial à personne
couche d'analyse au-dessus.

‐V entre guillemets ex est légèrement différent des guillemets antislash. Dans les quatre
commandes où ‐V entre guillemets s'applique (abréger, abréger, Localisationet démapper), quelconque
caractère peut être échappé par un ‐V s'il aurait une signification particulière ou non.
POSIX.1‐2008 exige la conformité à la pratique historique.

Les implémentations historiques de l'éditeur ne nécessitaient pas de délimiteurs dans le caractère
classes à échapper; par exemple, la commande :s/[/]// sur la chaîne "xxx/aaa" pourra
supprimer le '/' de la chaîne. POSIX.1‐2008 interdit cette pratique historique pour
cohérence et parce qu'il impose une lourde charge sur les implémentations en exigeant que
la connaissance des expressions régulières soit intégrée à l'analyseur de l'éditeur.

Historiquement, citant personnages dans ex les commandes étaient traitées de manière incohérente. Dans
la plupart des cas, le caractère a toujours mis fin à la commande, indépendamment de tout
caractère d'échappement précédent, car les personnages n'ont pas échappé
caractères pour la plupart ex commandes. Cependant, certains ex commandes (par exemple, s, Localisationet
abréviation) permis caractères à échapper (bien que dans le cas de Localisation
ainsi que abréviation, ‐Les caractères V leur ont échappé au lieu de personnages).
Cela était vrai non seulement dans la ligne de commande, mais aussi .exrc ainsi que la sourcefichiers d. Par exemple,
la commande:

Localisation = fou bar

réussirait, même s'il était parfois difficile d'obtenir ‐V et l'inséré
passé à la ex analyseur. Pour la cohérence et la simplicité des spécifications,
POSIX.1‐2008 exige qu'il soit possible d'échapper personnages dans ex commandes à
tout le temps, en utilisant caractères pour la plupart ex commandes et en utilisant ‐V
caractères pour le Localisation ainsi que abréviation commandes. Par exemple, la commande
impressionliste doit être analysé comme la commande unique impressionliste.
Bien que cela diffère de la pratique historique, les développeurs de POSIX.1‐2008 pensaient qu'il était peu probable
que tout script ou utilisateur dépendait du comportement historique.

Historiquement, une erreur dans une commande spécifiée à l'aide de la -c l'option n'a pas causé le reste
des -c commandes à rejeter. POSIX.1‐2008 l'interdit par souci de cohérence avec
clés mappées, les @, de défis, la sourceet v commandes, le QUITTER variable d'environnement, et
le .exrc fichiers.

Entrée Montage in ex
L'une des utilisations courantes de l'historique ex l'éditeur utilise des connexions réseau lentes.
Les éditeurs qui s'exécutent en mode canonique peuvent nécessiter beaucoup moins de trafic vers et depuis, et beaucoup moins
traitement sur la machine hôte, ainsi que la prise en charge plus facile des terminaux en mode bloc.
Pour ces raisons, POSIX.1‐2008 exige que ex être implémenté à l'aide d'une entrée en mode canonique
traitement, comme cela se faisait historiquement.

POSIX.1‐2008 ne nécessite pas les 4 caractères historiques d'édition d'entrée BSD ``word erase''
ou ``littéral suivant''. Pour cette raison, il n'est pas précisé comment ils sont traités par ex,
bien qu'ils doivent avoir l'effet requis. Les implémentations qui les résolvent après la
la ligne a été terminée à l'aide d'un ou caractère ‐M, et les implémentations qui
s'appuient sur le support terminal du système sous-jacent pour ce traitement, sont tous deux conformes.
Les implémentations sont fortement invitées à utiliser la fonctionnalité système sous-jacente, le cas échéant
possible, pour la compatibilité avec d'autres interfaces de saisie de texte du système.

Historiquement, lorsque le eof caractère a été utilisé pour décrémenter le indentation automatique niveau, le
curseur déplacé pour afficher la nouvelle fin de la indentation automatique caractères, mais n'a pas déplacé le
curseur sur une nouvelle ligne, ni n'a effacé le -D caractère de la ligne.
POSIX.1‐2008 ne précise pas que le curseur reste sur la même ligne ou que le reste de
la ligne est effacée ; cependant, les implémentations sont fortement encouragées à fournir le meilleur
interface utilisateur possible ; autrement dit, le curseur doit rester sur la même ligne et tout
Le caractère ‐D sur la ligne doit être effacé.

POSIX.1‐2008 ne nécessite pas le caractère historique d'édition d'entrée 4 BSD ``reprint'',
traditionnellement -R, qui réaffichait l'entrée actuelle de l'utilisateur. Pour ça
raison, et parce que la fonctionnalité ne peut pas être implémentée après que la ligne a été
terminé par l'utilisateur, POSIX.1‐2008 n'impose aucune exigence concernant cette fonctionnalité.
Les implémentations sont fortement invitées à rendre cette fonctionnalité historique disponible, si
de qualité.

Historiquement, ‐Q n'a pas exécuté de fonction suivante littérale dans ex, comme il l'a fait dans vi.
POSIX.1‐2008 exige la conformité à la pratique historique pour éviter de casser l'historique. ex
scripts et .exrc fichiers.

eof
Si le eof caractère modifie immédiatement le indentation automatique caractères dans l'invite est
laissé non spécifié afin que les implémentations puissent se conformer en présence de systèmes qui ne
ne prend pas en charge cette fonctionnalité. Les implémentations sont encouragées à modifier la ligne et
réaffichez-le immédiatement, si possible.

La spécification du traitement des eof le caractère diffère de la pratique historique
seulement dans ce eof les caractères ne sont pas ignorés s'ils suivent des caractères normaux dans le texte
contribution. Historiquement, ils ont toujours été jetés.

Command Descriptions in ex
Historiquement, plusieurs commandes (par exemple, de défis, v, visuel, s, écrire, wq, coup sec, !, <,
>, &et ~) étaient exécutables dans des fichiers vides (c'est-à-dire que la ou les adresses par défaut étaient 0), ou
adresses explicites autorisées de 0 (par exemple, 0 était une adresse valide ou 0,0 était une adresse valide
intervalle). Les adresses de 0, ou l'exécution de la commande dans un fichier vide, n'ont de sens que pour
des commandes qui ajoutent un nouveau texte au tampon d'édition ou des commandes d'écriture (parce que les utilisateurs peuvent souhaiter
écrire des fichiers vides). POSIX.1‐2008 requiert ce comportement pour de telles commandes et l'interdit
sinon, pour la cohérence et la simplicité des spécifications.

Un compte à un ex la commande a été historiquement corrigée pour ne pas être supérieure à la dernière
ligne dans un fichier ; par exemple, dans un fichier de cinq lignes, la commande 1,6 impression échouerait, mais le
commander 1impression300 réussirait. POSIX.1‐2008 exige la conformité à la pratique historique.

Historiquement, l'utilisation des drapeaux dans ex les commandes peuvent être obscures. Historique général
la pratique était telle que décrite par POSIX.1‐2008, mais il y avait quelques cas particuliers. Pour
exemple, le liste, nombreet impression les commandes ont ignoré les décalages d'adresse de fin ; pour
Par exemple, 3p ++++# afficherait la ligne 3, et 3 serait la ligne courante après l'exécution
de la commande. le ouvert ainsi que visuel les commandes ignoraient à la fois les décalages de fin et les
drapeaux à la traîne. En outre, les drapeaux spécifiés au ouvert ainsi que visuel les commandes interagissaient mal
les liste modifier l'option, et la définir puis la désactiver pendant l'ouverture/le visuel
séance entraînerait vi pour arrêter d'afficher les lignes dans le format spécifié. Pour la cohérence
et la simplicité de spécification, POSIX.1‐2008 n'autorise aucune de ces exceptions à
la règle générale.

POSIX.1‐2008 utilise le mot copier à plusieurs endroits lors de discussions sur les tampons. Ce n'est pas
censé impliquer la mise en œuvre.

Historiquement, ex les utilisateurs ne pouvaient pas spécifier de tampons numériques en raison de l'ambiguïté
causerait; par exemple, dans la commande 3 effacer 2, on ne sait pas si 2 est un tampon
nom ou un compter. POSIX.1‐2008 exige la conformité à la pratique historique par défaut, mais
n'exclut pas les extensions.

Historiquement, le contenu du tampon sans nom était fréquemment supprimé après les commandes
cela ne l'affectait pas explicitement; par exemple, lors de l'utilisation de éditer commande pour basculer
des dossiers. Pour des raisons de cohérence et de simplicité de spécification, POSIX.1‐2008 ne le permet pas.
comportement.

La ex historiquement, l'utilitaire n'avait pas accès aux tampons numériques et, en outre,
suppression de lignes dans ex n'a pas modifié leur contenu. Par exemple, si, après avoir fait une suppression
in vi, l'utilisateur est passé à ex, a effectué une autre suppression, puis est revenu à vi,
le contenu des tampons numériques n'aurait pas changé. POSIX.1‐2008 exige la conformité
à la pratique historique. Les tampons numériques sont décrits dans le ex utilité afin de
limiter la description des tampons à un seul emplacement dans POSIX.1‐2008.

Les métacaractères qui déclenchent l'expansion du shell dans filet les arguments correspondent à l'historique
pratique, tout comme la méthode d'expansion du shell. Les implémentations souhaitant fournir
les utilisateurs ayant la possibilité de modifier l'ensemble de métacaractères sont encouragés à fournir un
coquille méta option d'édition de chaîne.

Historiquement, ex commandes exécutées depuis vi a rafraîchi l'écran quand il n'a pas strictement
besoin de le faire ; par exemple, :!Date > / dev / null ne nécessite pas d'actualisation de l'écran car
la sortie de l'UNIX données commande ne nécessite qu'une seule ligne de l'écran.
POSIX.1‐2008 exige que l'écran soit rafraîchi s'il a été écrasé, mais rend
aucune exigence quant à la manière dont une mise en œuvre devrait effectuer cette détermination.
Les implémentations peuvent demander et rafraîchir l'écran malgré tout.

Abréger
La pratique historique était que les caractères entrés dans le cadre d'une abréviation
remplacement ont fait l'objet de Localisation extensions, les match de spectacle option d'édition, plus loin
expansions d'abréviations, et ainsi de suite ; c'est-à-dire qu'ils ont été logiquement poussés sur le terminal
file d'attente d'entrée, et n'étaient pas un simple remplacement. POSIX.1‐2008 exige la conformité à
pratique historique. La pratique historique était que chaque fois qu'un caractère non verbal (qui avait
pas été échappé par un ‐V) a été saisi après un caractère de mot, vi vérifierait
abréviations. La vérification était basée sur le type de caractère saisi avant le mot
caractère du couple mot/non-mot qui a déclenché la vérification. Le mot caractère du
paire mot/non-mot qui a déclenché la vérification et tous les caractères saisis avant le déclencheur
paire qui étaient de ce type ont été inclus dans le chèque, à l'exception de
caractères, qui délimitaient toujours l'abréviation.

Cela signifie que, pour que l'abréviation fonctionne, le lhs doit se terminer par un caractère de mot,
il ne peut y avoir de transitions de caractères verbaux vers des caractères non verbaux (ou vice vice versa) autre que
entre le dernier et l'avant-dernier caractère du lhs, et il ne peut y avoir
personnages dans le lhs. De plus, en raison des règles de citations historiques, il était
impossible d'entrer un littéral ‐V dans le lhs. POSIX.1‐2008 exige la conformité
à la pratique historique. Les implémentations historiques n'informaient pas les utilisateurs lorsque les abréviations
qui ne pourraient jamais être utilisés ont été saisis ; mises en œuvre sont fortement encouragées à le faire.

Par exemple, les abréviations suivantes fonctionneront :

:un B (p REMPLACER
:un B p REMPLACER
:un B ((p REMPLACER

Les abréviations suivantes ne fonctionneront pas :

:un B ( REMPLACER
:un B (pp REMPLACER

La pratique historique est que les mots sur le vi la ligne de commande du côlon ont fait l'objet de
expansion des abréviations, y compris les arguments de la abrégé (et plus intéressant) le
non abrégé commander. Parce qu'il y a des implémentations qui ne font pas d'expansion d'abréviation
pour le premier argument de ces commandes, cela est autorisé, mais pas obligatoire, par
POSIX.1‐2008. Cependant, la séquence suivante :

:un B foo barre
:un B foo baz

a donné lieu à l'ajout d'une abréviation de "baz" pour la corde "bar" dans l'historique
ex/vi, et la séquence :

:un B foo1 barre
:un B foo2 barre
: non abrégé foo2

supprimé l'abréviation "foo1", Pas "foo2". Ces comportements ne sont pas autorisés par
POSIX.1‐2008 car ils violent clairement les attentes de l'utilisateur.

C'était une pratique historique qui -V, pas , les caractères doivent être interprétés comme
échapper les caractères suivants dans le abréger commander. POSIX.1‐2008 nécessite
conformité à la pratique historique; cependant, il convient de noter qu'une abréviation
contenant un ne fonctionnera jamais.

Ajouter
Historiquement, tout texte suivant un séparateur de commandes après un ajouter,
Changeou insérer La commande est devenue une partie du texte d'insertion. Par exemple, dans la commande :

:g/motif/append|truc1

une ligne contenant le texte "truc1" serait ajouté à chaque motif de correspondance de ligne. Ce
était également historiquement valide pour entrer :

:append|truc1
trucs2
.

et le texte sur ex la ligne de commande serait ajoutée avec le texte inséré après
ce. Il y avait un bogue historique, cependant, que l'utilisateur devait entrer deux terminaisons
lignes (les '.' lignes) pour terminer le mode de saisie de texte dans ce cas. POSIX.1‐2008 nécessite
conformité à la pratique historique, mais rejette le besoin historique de plusieurs
lignes terminales.

Modifier
Voir la JUSTIFICATION pour le ajouter commander. Pratique historique pour le positionnement du curseur après
la commande change quand aucun texte n'est entré, est comme décrit dans POSIX.1‐2008. Cependant, un
L'implémentation du système V est connue pour avoir été modifiée de telle sorte que le curseur est positionné
sur la première adresse spécifiée, et non sur la ligne avant la première adresse. POSIX.1‐2008
interdit cette modification pour des raisons de cohérence.

Historiquement, le Change la commande ne supportait pas les arguments de tampon, bien que certains
les implémentations permettent la spécification d'un tampon facultatif. Ce comportement n'est ni
requis ni interdit par POSIX.1‐2008.

Modifier Annuaire
Une extension courante dans ex implémentations est d'utiliser les éléments d'un chemin cd modifier l'option comme
répertoires de préfixes pour chemin arguments à chdir qui sont des chemins d'accès relatifs et qui ne
avons '.' or ".." comme leur première composante. Éléments dans le chemin cd option d'édition sont
-séparé. La valeur initiale de la chemin cd l'option d'édition est la valeur du shell
CDPATH variables d'environnement. Cette fonctionnalité n'était pas incluse dans POSIX.1‐2008 car elle
n'existent dans aucune des implémentations considérées comme une pratique historique.

Copier
Implémentations historiques de ex copies autorisées sur les lignes à l'intérieur de la plage spécifiée ;
par exemple, :2,5copie3 était une commande valide. POSIX.1‐2008 exige la conformité à
pratique historique.

Supprimer
POSIX.1‐2008 nécessite la prise en charge de l'analyse historique d'un effacer commande suivie de
drapeaux, sans aucune intervention personnages. Par exemple:

1dp Supprime la première ligne et imprime la ligne qui était la deuxième.

1delep Pour ce qui est de 1dp.

1d Supprime la première ligne, l'enregistrant dans le tampon p.

1d p1l (Pee-one-ell.) Supprime la première ligne, l'enregistrant dans le tampon p, et énumérant la ligne
c'était la deuxième.

Modifier
Historiquement, tout ex la commande peut être saisie en tant que +commander argument à la éditer commander,
bien que certains (par exemple, insérer ainsi que ajouter) étaient connus pour confondre
implémentations. Pour la cohérence et la simplicité des spécifications, POSIX.1‐2008 nécessite
que toute commande soit prise en charge comme argument de la éditer commander.

Historiquement, l'argument de commande était exécuté avec la ligne actuelle définie sur la dernière ligne
du dossier, que le éditer la commande a été exécutée à partir du mode visuel ou non.
POSIX.1‐2008 exige la conformité à la pratique historique.

Historiquement, le +commander spécifié à la éditer ainsi que next commandes a été délimité par le
première , et il n'y avait aucun moyen de les citer. Pour des raisons de cohérence, POSIX.1‐2008 nécessite
que d'habitude ex une barre oblique inverse doit être fournie.

Historiquement, en précisant le +commander l'argument de la commande d'édition nécessitait un nom de fichier pour
être spécifié également ; par exemple, :modifier +100 échouerait toujours. Pour la cohérence et
simplicité de spécification, POSIX.1‐2008 ne permet pas à cet usage d'échouer pour cela.
raison.

Historiquement, seule la position du curseur du dernier fichier édité était mémorisée par le
éditeur. POSIX.1‐2008 exige que cela soit pris en charge ; cependant, les implémentations sont
autorisé à mémoriser et à restaurer la position du curseur pour tout fichier précédemment édité.

Déposez votre dernière attestation
Les versions historiques du ex éditeur filet la commande affiche une ligne actuelle et le nombre de
lignes dans le tampon d'édition de 0 lorsque le fichier était vide, tandis que le vi Commande ‐G
affiche une ligne courante et un nombre de lignes dans le tampon d'édition de 1 dans le même
situation. POSIX.1‐2008 ne permet pas cette divergence, exigeant à la place qu'un message
s'affiche indiquant que le fichier est vide.

Global
Le fonctionnement en deux passes du de défis ainsi que v commandes n'est pas destiné à impliquer
mise en œuvre, seul le résultat requis de l'opération.

La ligne et la colonne actuelles sont définies comme spécifié pour l'individu ex commandes. Cette
l'exigence est cumulative ; c'est-à-dire que la ligne et la colonne actuelles doivent suivre tous les
commandes exécutées par le de défis or v les commandes.

insérer
Voir la JUSTIFICATION pour le ajouter commander.

Historiquement, insérer ne peut pas être utilisé avec une adresse de zéro ; c'est-à-dire pas lorsque la modification
tampon était vide. POSIX.1‐2008 exige que cette commande se comporte de manière cohérente avec le
ajouter commander.

S'inscrire
L'action du rejoindre la commande relative aux caractères spéciaux n'est définie que pour
les paramètres régionaux POSIX car la quantité correcte d'espace blanc après un point varie ; dans
En japonais aucun n'est requis, en français un seul espace, et ainsi de suite.

Liste
La production historique de la liste commande était potentiellement ambiguë. Le standard
les développeurs pensaient qu'il était plus important de corriger cela que de respecter les règles historiques
pratique, et POSIX.1‐2008 requiert une sortie sans ambiguïté.

Carte
Historiquement, les cartes du mode commande ne s'appliquaient qu'aux noms de commande ; par exemple, si le
caractère 'X' a été mappé sur 'ou', la commande fx recherché le 'X' personnage, pas le
'ou' personnage. POSIX.1‐2008 requiert ce comportement. Historiquement, entrer ‐V comme
le premier caractère d'un vi la commande était une erreur. Plusieurs implémentations ont étendu
la sémantique de vi tel que ‐V signifie que le caractère de commande suivant est
non cartographié. Ceci est autorisé, mais pas obligatoire, par POSIX.1‐2008. Quoi qu'il en soit, en utilisant
‐V pour échapper le deuxième caractère ou le caractère suivant dans une séquence de caractères qui pourraient
correspondre à un Localisation commande, ou tout caractère en mode de saisie de texte, est une pratique historique, et
empêche les clés saisies de correspondre à une carte. POSIX.1‐2008 exige la conformité à
pratique historique.

Les implémentations historiques permettaient d'utiliser les chiffres comme Localisation commander lhs, mais alors
ignoré la carte. POSIX.1‐2008 exige que les chiffres mappés ne soient pas ignorés.

La mise en œuvre historique de la Localisation la commande n'a pas permis Localisation commandes qui étaient
plus d'un seul caractère si le premier caractère était imprimable. Ce comportement
est autorisé, mais pas obligatoire, par POSIX.1‐2008.

Historiquement, les caractères mappés étaient remappés à moins que le remap l'option d'édition n'a pas été définie, ou
le préfixe des caractères mappés correspondait aux caractères de mappage ; par exemple, dans le
Localisation:

:carte ab ABCD

les personnages "un B" ont été utilisés tels quels et n'ont pas été remappés, mais les caractères "CD" ont été
cartographié le cas échéant. Cela peut provoquer des boucles infinies dans le vi mécanismes de cartographie.
POSIX.1‐2008 exige la conformité à la pratique historique, et que de telles boucles soient
Interruptible.

Les cartes de saisie de texte avaient les mêmes problèmes avec l'expansion de la lhs pour le ex carte! ainsi que démapper !
commande comme l'a fait le ex abréger ainsi que abréger commandes. Voir la JUSTIFICATION pour le ex
abréger commander. POSIX.1‐2008 nécessite une modification similaire de certaines pratiques historiques
pour le Localisation ainsi que démapper commandes, comme décrit pour le abréger ainsi que abréger les commandes.

Historiquement, Localisations qui étaient des sous-ensembles d'autres Localisations se sont comportés différemment selon les
ordre dans lequel ils ont été définis. Par exemple:

:carte! ab court
:carte! abc Long

traduirait toujours les caractères "un B" à "court", quelle que soit la vitesse à laquelle
caractères "abc" ont été saisis. Si l'ordre d'entrée a été inversé :

:carte! abc Long
:carte! ab court

les personnages "un B" entraînerait une pause de l'éditeur, attendant la fin 'c'
caractère, et les caractères peuvent ne jamais être mappés à "court". Pour la cohérence et
simplicité de spécification, POSIX.1‐2008 exige que la correspondance la plus courte soit utilisée du tout
fois.

Le temps que l'éditeur passe à attendre que les personnages terminent le lhs is
non spécifié parce que les capacités de synchronisation des systèmes sont souvent inexactes et variables, et
cela peut dépendre d'autres facteurs tels que la vitesse de la connexion. Le temps devrait être
assez longtemps pour que l'utilisateur puisse terminer la séquence, mais pas assez longtemps pour
l'utilisateur doit attendre. Certaines implémentations de vi ont ajouté un temps clé option, qui
permet aux utilisateurs de définir le nombre de 0,1 secondes pendant lesquelles l'éditeur attend la fin
personnages. Étant donné que la fonction de terminal mappée et les touches de curseur ont tendance à commencer par un
caractère, et est la fin clé vi mode de saisie de texte, Localisationcommence par
les caractères sont généralement exemptés de cette période de temporisation, ou, au moins ont expiré
différemment.

Marquez
Historiquement, les utilisateurs pouvaient définir explicitement les marques de ``contexte précédent''. Dans
de plus, le ex commandes '' ainsi que '` et par vi commandes '', ``, `'et '` tous mentionnés
la même marque. De plus, les marques de contexte précédentes n'étaient pas définies si la commande, avec
auquel l'adresse définissant la marque était associée, a échoué. POSIX.1‐2008 nécessite
conformité à la pratique historique. Historiquement, si les lignes marquées étaient supprimées, la marque
a également été supprimé, mais réapparaîtrait si la modification était annulée. POSIX.1‐2008 nécessite
conformité à la pratique historique.

La description des événements spéciaux qui ont marqué le ` ainsi que ' marque correspond à l'historique
entraine toi. Par exemple, historiquement la commande /un B/ n'a pas fixé le ` ainsi que ' marques, mais
la commande /a/,/b/supprimer fait.

Suivant
Historiquement, tout ex la commande peut être saisie en tant que +commander argument à la next commander,
bien que certains (par exemple, insérer ainsi que ajouter) étaient connus pour confondre
implémentations. POSIX.1‐2008 exige que toute commande soit autorisée et qu'elle se comporte comme
spécifié. Les next La commande peut accepter plus d'un fichier, donc une utilisation telle que :

next 'ls [abc] `

est valable; il n'a pas besoin d'être valide pour le éditer or lire commandes, par exemple, parce qu'elles
attendez-vous à un seul nom de fichier.

Historiquement, le next la commande s'est comportée différemment de la :rembobiner commande en ce qu'il
ignoré le drapeau de force si le écriture automatique drapeau a été mis. Par souci de cohérence, POSIX.1‐2008 ne
ne permet pas ce comportement.

Historiquement, le next commande positionne le curseur comme si le fichier n'avait jamais été édité
avant, peu importe. POSIX.1‐2008 n'autorise pas ce comportement, par souci de cohérence avec
éditer commander.

Les implémentations voulant fournir une contrepartie au next commande qui a modifié le
fichier précédent ont utilisé la commande précédent], qui ne prend pas filet dispute. POSIX.1‐2008
ne nécessite pas cette commande.

Ouvert
Historiquement, le ouvert la commande échouerait si le ouvert l'option d'édition n'a pas été définie.
POSIX.1‐2008 ne mentionne pas le ouvert option d'édition et ne nécessite pas ce comportement.
Certaines implémentations historiques ne permettent pas d'entrer en mode ouvert à partir du mode ouvert ou visuel,
seulement de ex mode. Pour des raisons de cohérence, POSIX.1‐2008 n'autorise pas ce comportement.

Historiquement, entrer en mode ouvert à partir de la ligne de commande (c'est-à-dire, vi +ouvert) a entraîné
comportements anormaux; par exemple, le ex déposer et set commandes, et le vi commander
-G n'a pas fonctionné. Pour des raisons de cohérence, POSIX.1‐2008 n'autorise pas ce comportement.

Historiquement, le ouvert commande uniquement autorisée '/' caractères à utiliser pour la recherche
délimiteur de motif. Par souci de cohérence, POSIX.1‐2008 exige que les délimiteurs de recherche utilisés
par The s, de défiset v les commandes soient également acceptées.

Préserver
La préserver la commande ne fait pas historiquement que le fichier est considéré comme non modifié pour
aux fins des futures commandes susceptibles de quitter l'éditeur. POSIX.1‐2008 nécessite
conformité à la pratique historique.

La documentation historique indiquait que le courrier n'était pas envoyé à l'utilisateur lorsque la conservation était
réalisé; cependant, les implémentations historiques ont envoyé du courrier dans ce cas. POSIX.1‐2008
nécessite la conformité aux implémentations historiques.

Imprimé
L'écriture de NUL par le impression La commande n'est pas spécifiée comme un cas particulier car la
les développeurs standard ne voulaient pas exiger ex pour prendre en charge les caractères NUL. Historiquement,
les caractères ont été affichés à l'aide des mappages standard ARPA, qui sont les suivants :

1. Les caractères imprimables sont laissés seuls.

2. Les caractères de contrôle inférieurs à \177 sont représentés par '^' suivi du caractère
décalé de la '@' caractère dans la carte ASCII ; par exemple, \007 est représenté par
'^G'.

3. \177 est représenté par '^' suivie par '?'.

L'affichage des caractères ayant leur huitième bit défini était moins standard. Existant
les implémentations utilisent hexadécimal (0x00), octal (\000) et un affichage méta-bit. (Le dernier
octets affichés dont le huitième bit était défini comme les deux caractères "M−" suivi par le
affichage à sept bits comme décrit ci-dessus.) Ce dernier a probablement la meilleure prétention à
pratique historique parce qu'il a été utilisé pour la -v option de 4 BSD et 4 dérivés de BSD
versions de la cat utilitaire depuis 1980.

Aucun format d'affichage spécifique n'est requis par POSIX.1‐2008.

La dépendance explicite au jeu de caractères ASCII a été évitée dans la mesure du possible, d'où la
utilisation de l'expression une ``séquence multi-caractères définie par la mise en œuvre'' pour l'affichage
de caractères non imprimables de préférence à l'utilisation historique de, par exemple, "^je"
pour le . Les implémentations sont encouragées à se conformer à la pratique historique dans le
l'absence de toute raison valable de diverger.

Historiquement, tout ex commandes commençant par la lettre 'p' peut être saisi à l'aide
versions en majuscules des commandes ; par exemple, Impression], Préserver]et Mettre] étaient tous
noms de commande valides. POSIX.1‐2008 autorise, mais n'impose pas, cette pratique historique
car les formes majuscules des commandes sont utilisées par certaines implémentations à d'autres fins.

mettre
Historiquement, un ex mettre commande, exécutée à partir du mode ouvert ou visuel, était la même que la
mode ouvert ou visuel P commande, si le tampon a été nommé et a été coupé en mode caractère, et
Le même que p commande si le tampon a été nommé et coupé en mode ligne. Si le sans nom
tampon était la source du texte, la ligne entière à partir de laquelle le texte a été extrait était
d'habitude mettre, et le tampon était géré comme en mode ligne, mais il était possible d'obtenir
comportement extrêmement anormal. De plus, en utilisant le Q commande pour basculer dans ex mode, et
puis faire un mettre entraînait souvent des erreurs, telles que l'ajout de texte qui était
sans rapport avec le contenu (supposé) du tampon. Pour la cohérence et la simplicité de
spécification, POSIX.1‐2008 n'autorise pas ces comportements. Tous ex mettre les commandes sont
nécessaire pour fonctionner en mode ligne, et le contenu des tampons n'est pas modifié par
changer le mode de l'éditeur.

Lire
Historiquement, un ex lire commande exécutée depuis le mode ouvert ou visuel, exécutée dans un vide
fichier, a laissé une ligne vide comme première ligne du fichier. Pour la cohérence et la simplicité de
spécification, POSIX.1‐2008 ne permet pas ce comportement. Historiquement, un lire en plein air
ou le mode visuel d'un programme a laissé le curseur à la dernière ligne lue, pas à la première. Pour
cohérence, POSIX.1‐2008 ne permet pas ce comportement.

Implémentations historiques de ex n'ont pas pu annuler lire commandes qui lisent à partir du
sortie d'un programme. Pour des raisons de cohérence, POSIX.1‐2008 n'autorise pas ce comportement.

Historiquement, le ex ainsi que vi message après un succès lire or écrire commande spécifiée
``caractères'', pas ``octets''. POSIX.1‐2008 exige que le nombre d'octets soit
affiché, pas le nombre de caractères, car cela peut être difficile en multi-octets
implémentations pour déterminer le nombre de caractères lus. Les implémentations sont encouragées
pour clarifier le message affiché à l'utilisateur.

Historiquement, les lectures n'étaient pas autorisées sur des fichiers autres que de type régulier, sauf que FIFO
les fichiers pouvaient être lus (probablement uniquement parce qu'ils n'existaient pas lorsque ex ainsi que vi ont été
écrit à l'origine). Parce que l'historique ex évalué lis! ainsi que lire ! de manière équivalente,
il ne peut y avoir aucun moyen facultatif de forcer la lecture. POSIX.1‐2008 permet, mais pas
exiger, ce comportement.

Récupérer
Certaines implémentations historiques de l'éditeur permettaient aux utilisateurs de récupérer le tampon d'édition
contenu d'une session d'édition précédente, puis quittez sans enregistrer ce contenu (ou
les rejetant explicitement). L'intention de POSIX.1‐2008 en exigeant que le tampon d'édition
être traité comme déjà modifié est d'éviter cette erreur de l'utilisateur.

Rembobiner
Les implémentations historiques ont pris en charge le rembobiner commande lorsque l'utilisateur éditait la
premier fichier de la liste ; c'est-à-dire le fichier que le rembobiner commande modifierait. POSIX.1‐2008
exige la conformité à la pratique historique.

Représentant(e) suppléant(e)
Historiquement, ex accepté un r option à la s commander. L'effet de la r l'option était de
utiliser la dernière expression régulière utilisée dans n'importe quelle commande comme modèle, identique à ~
commander. le r L'option n'est pas requise par POSIX.1‐2008. Historiquement, le c ainsi que g Options
ont été basculés ; par exemple, la commande :s/abc/def/ était le même que s/abc/def/ccccgggg.
Pour des raisons de simplicité de spécification, POSIX.1‐2008 n'autorise pas ce comportement.

La commande tilde est souvent utilisée pour remplacer le dernier RE de recherche. Par exemple, dans le
séquence:

s/rouge/bleu/
/vert
~

le ~ commande est équivalente à :

s/vert/bleu/

Historiquement, ex accepté tous les formulaires suivants :

s/abc/def/
s/abc/déf
s/abc/
s/abc

POSIX.1‐2008 exige la conformité à cette pratique historique.

La s la commande suppose que le '^' caractère n'occupe qu'une seule colonne dans le
affichage. Une grande partie de la ex ainsi que vi spécification suppose que le n'occupe qu'un
une seule colonne à l'écran. Il n'y a pas de jeux de caractères connus pour lesquels ce n'est pas
vrai.

Historiquement, la position finale de la colonne pour les commandes de substitution était basée sur les précédentes
mouvements de colonne ; une recherche d'un motif suivi d'une substitution quitterait la colonne
position inchangée, alors qu'une commande 0 suivie d'une substitution changerait la colonne
position au premier non- . Pour la cohérence et la simplicité des spécifications,
POSIX.1‐2008 exige que la position finale de la colonne soit toujours définie sur la première
non- .

Ensemble
Les implémentations historiques ont réaffiché toutes les options pour chaque occurrence du TOUTE
mot-clé. POSIX.1‐2008 permet, mais n'impose pas, ce comportement.

Jour
Aucune exigence n'est faite quant à l'endroit où ex ainsi que vi doit rechercher le fichier référencé par la balise
entrée. La pratique historique a été de chercher le chemin trouvé dans le étiquettes fichier, basé sur
le répertoire courant. Une extension utile trouvée dans certaines implémentations est de regarder en fonction
sur le répertoire contenant le fichier de balises contenant également l'entrée. Aucune exigence n'est
déterminer quelle référence pour la balise dans le fichier de balises est utilisée. C'est délibéré, en
afin d'autoriser des extensions telles que plusieurs entrées dans un fichier de balises pour une balise.

Étant donné que les utilisateurs spécifient souvent de nombreux fichiers de balises différents, dont certains n'ont pas besoin d'être pertinents
ou exister à un moment donné, POSIX.1‐2008 exige que les messages d'erreur concernant le problème
les fichiers de balises ne s'affichent que si la balise demandée n'est pas trouvée, puis une seule fois pour
chaque fois que le Étiquette l'option d'édition est modifiée.

L'exigence que le tampon d'édition courant ne soit pas modifié n'est nécessaire que si le fichier
indiqué par l'entrée de balise n'est pas le même que le fichier actuel (tel que défini par le
nom du chemin). Historiquement, le fichier était rechargé si le nom du fichier avait changé, ainsi
comme si le nom du fichier était différent du chemin d'accès actuel. Pour la cohérence et la simplicité
de spécification, POSIX.1‐2008 ne permet pas ce comportement, nécessitant que le nom soit
le seul facteur dans la décision.

Historiquement, vi n'a recherché que des balises dans le fichier actuel du curseur actuel au
fin du fichier, et donc, si le numérisation enveloppante l'option n'a pas été définie, les balises apparaissant avant
le curseur actuel n'a pas été trouvé. POSIX.1‐2008 considère cela comme un bogue, et les implémentations
sont tenus de rechercher la première occurrence dans le fichier, peu importe.

annuler
La défaire description utilise délibérément le mot ``modifié''. le défaire la commande n'est pas
destiné à annuler les commandes qui remplacent le contenu du tampon d'édition, telles que éditer,
next, Étiquetteou récupérer.

Positionnement du curseur après le défaire la commande était incohérente dans l'historique vi, quelquefois
tentative de restauration de la position d'origine du curseur (de défis, défaireet v commandes), et
parfois, en présence de cartes, placer le curseur sur la dernière ligne ajoutée ou modifiée
à la place du premier. POSIX.1‐2008 nécessite un comportement simplifié pour la cohérence et
simplicité de spécification.

Version
La version la commande ne peut pas être spécifiée avec précision car il n'y a pas de
définition de ce que les informations de version doivent contenir. Les implémentations sont encouragées
faire quelque chose de raisonnablement intelligent.

Écrire
Historiquement, le ex ainsi que vi message après un succès lire or écrire commande spécifiée
``caractères'', pas ``octets''. POSIX.1‐2008 exige que le nombre d'octets soit
affiché, pas le nombre de caractères car cela peut être difficile en multi-octets
implémentations pour déterminer le nombre de caractères écrits. Les implémentations sont
encouragés à clarifier le message affiché à l'utilisateur.

Les tests définis par l'implémentation sont autorisés afin que les implémentations puissent effectuer des
chèques; par exemple, pour les verrous ou les heures de modification des fichiers.

Historiquement, la tentative d'ajout à un fichier inexistant provoquait une erreur. Il a été laissé
non spécifié dans POSIX.1‐2008 pour permettre aux implémentations de laisser écrire réussir, de sorte que
la sémantique d'ajout est similaire à celle de l'historique csh.

Historique vi autorisés à écrire des tampons d'édition vides. Cependant, depuis la manière vi eu
autour de la gestion des fichiers `` vides '' était de toujours avoir une ligne dans le tampon d'édition, non
quoi qu'il en soit, il les écrivait sous forme de fichiers d'une seule ligne vide. POSIX.1‐2008 ne permet pas
Ce comportement.

Historiquement, ex a restauré la sortie standard et l'erreur standard à leurs valeurs à partir du moment où ex
a été appelé, avant que les écritures dans les programmes ne soient effectuées. Cela pourrait perturber le terminal
configuration ainsi qu'un problème de sécurité pour certains terminaux. POSIX.1‐2008 ne
permettre cela, exigeant que la sortie du programme soit capturée et affichée comme si par le ex
impression commander.

Adapter Vitrine
Historiquement, le nombre de lignes était défini sur la valeur de volute option si le type
le caractère était la fin du fichier. Cette fonctionnalité a été interrompue sur la plupart des implémentations historiques pendant longtemps
il y a, cependant, et n'est documenté nulle part. Pour cette raison, POSIX.1‐2008 est résolument
silencieux.

Historiquement, le z la commande était -sensible et z + ainsi que z - fait des choses différentes
que z+ ainsi que z− parce que le type ne pouvait pas être distingué d'un drapeau. (Les commandes z .
ainsi que z = étaient historiquement invalides.) POSIX.1‐2008 exige la conformité à cet historique
entraine toi.

Historiquement, le z la commande était plus loin -sensible en ce que le compter pourrait ne pas être
-délimité ; par exemple, les commandes z= 5 ainsi que z− 5 étaient également invalides. Parce que le
compter n'est pas ambigu en ce qui concerne le caractère de type ou les drapeaux, ce n'est pas
autorisé par POSIX.1‐2008.

Échapper
Historiquement, ex les commandes de filtrage ne lisent que la sortie standard des commandes, laissant
l'erreur standard apparaît sur le terminal comme d'habitude. le vi utilitaire, cependant, lisez les deux
sortie standard et erreur standard. POSIX.1‐2008 requiert ce dernier comportement pour les deux ex
ainsi que vi, pour la cohérence.

Shift Gauche ainsi que Shift Droite
Historiquement, il était possible d'ajouter des caractères de décalage pour augmenter l'effet de la
commander; par exemple, << en retrait (ou >>> en retrait) les lignes 3 niveaux d'indentation
au lieu de la valeur par défaut 1. POSIX.1‐2008 exige la conformité à la pratique historique.

-RÉ
Historiquement, le La commande ‐D effaçait l'invite, fournissant à l'utilisateur une
présentation ininterrompue des lignes du tampon d'édition. Ceci n'est pas requis par POSIX.1‐2008 ;
les implémentations sont encouragées à le fournir si possible. Historiquement, le -RÉ
commande a pris, puis ignoré, un compter. POSIX.1‐2008 ne permet pas ce comportement.

Écrire Gamme Numéro
Historiquement, le ex = commande, lorsqu'elle est exécutée dans ex mode dans un tampon d'édition vide, signalé
0, et du mode ouvert ou visuel, signalé 1. Pour la cohérence et la simplicité de
spécification, POSIX.1‐2008 ne permet pas ce comportement.

Exécution
Historiquement, ex n'a pas correctement géré l'inclusion des commandes de saisie de texte (c'est-à-dire,
ajouter, inséreret Change) dans les tampons exécutés. POSIX.1‐2008 ne le permet pas
exclusion pour cohérence.

Historiquement, le contenu logique du tampon en cours d'exécution ne changeait pas si le
le tampon lui-même a été modifié par les commandes en cours d'exécution ; c'est-à-dire que l'exécution du tampon a fait
ne prend pas en charge le code auto-modifiable. POSIX.1‐2008 exige la conformité à la pratique historique.

Historiquement, le @ commande a pris une gamme de lignes, et le @ tampon a été exécuté une fois par
ligne, avec la ligne courante ('.') défini sur chaque ligne spécifiée. POSIX.1‐2008 nécessite
conformité à la pratique historique.

Certaines implémentations historiques ne remarquaient pas si des erreurs se produisaient lors de l'exécution du tampon.
Ceci, associé à la possibilité de spécifier une plage de lignes pour le ex @ commande, le rend
trivial de les faire tomber core. POSIX.1‐2008 exige que les implémentations s'arrêtent
exécution du tampon si une erreur se produit, si la ligne spécifiée n'existe pas ou si le
le contenu du tampon d'édition lui-même est remplacé (par exemple, le tampon exécute la ex
:modifier commander).

Un coupage régulier Expressions in ex
La pratique historique veut que les personnages de la partie de remplacement du dernier s commander-
c'est-à-dire ceux mis en correspondance en saisissant un '~' dans l'expression régulière - n'étaient pas plus loin
développé par le moteur d'expressions régulières. Ainsi, si les caractères contenaient la chaîne
"une.," ils correspondraient 'une' suivie par ".," ne le comptant pas 'une' suivi de n'importe quel caractère.
POSIX.1‐2008 exige la conformité à la pratique historique.

Modifier Options in ex
Les paragraphes suivants décrivent le comportement historique de certaines options d'édition qui ont été
pas, pour quelque raison que ce soit, inclus dans POSIX.1‐2008. Les implémentations sont fortement
encouragés à n'utiliser ces noms que si la fonctionnalité décrite ici est entièrement prise en charge.

prolongé La prolongé l'option d'édition a été utilisée dans certaines implémentations de vi pour apporter
expressions régulières étendues au lieu des expressions régulières de base Cette option
a été omis de POSIX.1‐2008 car ce n'est pas une pratique historique répandue.

flash La flash l'option d'édition faisait historiquement clignoter l'écran au lieu de biper
sur erreur. Cette option a été omise de POSIX.1‐2008 car elle ne se trouve pas dans
quelques implémentations historiques.

onglets durs La onglets durs l'option d'édition définissait historiquement le nombre de colonnes entre
paramètres de l'onglet matériel. Cette option a été omise de POSIX.1‐2008 car elle était
considéré comme n'étant généralement plus utile.

ligne de modèle La ligne de modèle (parfois nommé modèles) option d'édition causée historiquement ex or
vi pour lire les cinq premières et dernières lignes du fichier pour les commandes de l'éditeur. Ce
l'option est un problème de sécurité, et les fournisseurs sont fortement encouragés à le supprimer
à partir d'implémentations historiques.

ouvert La ouvert l'option d'édition interdisait historiquement la ex ouvert ainsi que visuel les commandes.
Cette option d'édition a été omise car ces commandes sont requises par
POSIX.1-2008.

optimiser La optimiser l'option d'édition accélérait historiquement le débit de texte en définissant le
terminal pour ne pas faire automatique caractères lors de l'impression de plus
plus d'une ligne logique de sortie. Cette option a été omise de POSIX.1‐2008
car il était destiné aux terminaux sans curseurs adressables, qui sont
rarement, voire jamais, encore utilisé.

règle La règle l'option d'édition a été utilisée dans certaines implémentations de vi présenter un
règle de ligne/colonne actuelle pour l'utilisateur. Cette option a été omise de POSIX.1‐2008
parce que ce n'est pas une pratique historique répandue.

sourceany La sourceany option d'édition causée historiquement ex or vi pour sourcer les fichiers de démarrage
qui appartenaient à des utilisateurs autres que l'utilisateur exécutant l'éditeur. Cette option est
un problème de sécurité, et les vendeurs sont fortement encouragés à le supprimer de leur
mises en œuvre.

temps mort La temps mort l'option d'édition activait historiquement la fonctionnalité (maintenant standard) de seulement
attendre une courte période avant de renvoyer les clés qui pourraient faire partie d'une macro.
Cette fonctionnalité a été omise de POSIX.1‐2008 car son comportement est maintenant standard,
il n'est pas très utile et il a été rarement documenté.

verbeux La verbeux l'option d'édition a été utilisée dans certaines implémentations de vi provoquer vi
pour générer des messages d'erreur pour les erreurs courantes ; par exemple, tenter de déplacer le
curseur au-delà du début ou de la fin de la ligne au lieu d'alerter uniquement le
écran. (L'historique vi a seulement alerté le terminal et n'a présenté aucun message
pour de telles erreurs. L'option de l'éditeur historique laconique n'a pas choisi quand
présenter des messages d'erreur, il n'a fait que rendre plus ou moins les messages d'erreur existants
verbeux.) Cette option a été omise de POSIX.1‐2008 car elle n'est pas répandue
pratique historique; cependant, les exécutants sont encouragés à l'utiliser s'ils le souhaitent
pour fournir des messages d'erreur aux utilisateurs naïfs.

enveloppant La enveloppant l'option d'édition a été utilisée dans certaines implémentations de vi spécifier
une marge automatique mesurée à partir de la marge de gauche au lieu de la droite
marge. Ceci est utile lorsque plusieurs tailles d'écran sont utilisées pour modifier un
un seul fichier. Cette option a été omise de POSIX.1‐2008 car elle n'est pas
pratique historique répandue; cependant, les exécutants sont encouragés à l'utiliser
s'ils ajoutent cette fonctionnalité.

indentation automatique, ai
Historiquement, la commande 0a n'a pas fait d'auto-indentation, quel que soit le courant
l'indentation de la ligne 1. POSIX.1‐2008 exige que toute indentation présente à la ligne 1 soit
utilisé.

impression automatique, ap
Historiquement, le impression automatique l'option d'édition n'était pas complètement cohérente ou basée uniquement sur
modifications du tampon d'édition. Les exceptions étaient les lire commande (lors de la lecture à partir d'un
fichier, mais pas à partir d'un filtre), le ajouter, Change, insérer, de défiset v commandes, toutes
qui n'ont pas été touchés par impression automatique, et le Étiquette commande, qui a été affectée par
impression automatique. POSIX.1‐2008 exige la conformité à la pratique historique.

Historiquement, le impression automatique option appliquée uniquement à la dernière de plusieurs commandes saisies
en utilisant délimiteurs ; par exemple, effacer a été affecté par impression automatique,
mais supprimer|version n'était pas. POSIX.1‐2008 exige la conformité à l'historique
entraine toi.

écriture automatique, aw
L'ajout du '!' caractère au ex next commande pour éviter d'effectuer une écriture automatique
n'était pas pris en charge dans les implémentations historiques. POSIX.1‐2008 exige que le comportement
correspondre à l'autre ex commandes de cohérence.

ignorer la casse, ic
Les implémentations historiques de la correspondance insensible à la casse (le ignorer la casse option d'édition) plomb
à des situations contre-intuitives lorsque des caractères majuscules étaient utilisés dans des expressions de plage.
Historiquement, le processus était le suivant :

1. Prenez une ligne de texte dans le tampon d'édition.

2. Convertissez les majuscules en minuscules dans la ligne de texte.

3. Convertir les majuscules en minuscules dans les expressions régulières, sauf dans la classe de caractères
cahier des charges.

4. Associez les expressions régulières au texte.

Cela signifierait qu'avec ignorer la casse en effet, le texte :

La cat assis on le tapis

correspondrait à

/^le/

mais pas par :

/^[A−Z]il/

Par souci de cohérence avec d'autres commandes implémentant des expressions régulières, POSIX.1‐2008 ne
ne permet pas ce comportement.

paragraphes, pour
La norme ISO POSIX‐2:1993 a fait la valeur par défaut paragraphes ainsi que les sections modifier les options
définis par l'implémentation, arguant qu'ils étaient historiquement orientés vers le système UNIX trof
formateur de texte, et un ``utilisateur portable'' pourrait utiliser le {, }, [[, ]], (et ) commandes dans
mode ouvert ou visuel et faites en sorte que le curseur s'arrête à des endroits inattendus. POSIX.1‐2008 spécifie
leurs valeurs dans les paramètres régionaux POSIX car le regroupement inhabituel (ils ne fonctionnent que lorsqu'ils sont regroupés
en deux caractères à la fois) signifie qu'ils ne peuvent pas être utilisés à des fins générales
mouvement, peu importe.

lecture seulement
Les implémentations sont encouragées à fournir les meilleures informations possibles à l'utilisateur quant à
le statut en lecture seule du fichier, à l'exception du fait qu'ils ne doivent pas prendre en compte le
privilèges spéciaux actuels du processus. Cela offre aux utilisateurs un filet de sécurité car
ils doivent forcer l'écrasement des fichiers en lecture seule, même lors de l'exécution avec des
Privilèges.

La lecture seulement la spécification des options d'édition est largement conforme à la pratique historique. Le seul
la différence est que les implémentations historiques n'ont pas remarqué que l'utilisateur avait défini le
lecture seulement option d'édition dans les cas où le fichier était déjà marqué en lecture seule pour une raison quelconque,
et réinitialiserait donc le lecture seulement modifier l'option la prochaine fois que le contenu de
le tampon d'édition a été remplacé. Ce comportement est interdit par POSIX.1‐2008.

rapport
L'exigence selon laquelle les lignes copiées dans un tampon interagissent différemment des lignes supprimées est
pratique historique. Par exemple, si le rapport l'option d'édition est définie sur 3, supprimant 3 lignes
entraînera la rédaction d'un rapport, mais 4 lignes doivent être copiées avant qu'un rapport ne soit rédigé.

L'exigence selon laquelle le ex de défis, v, ouvert, défaireet visuel les commandes présentent des rapports
en fonction du nombre total de lignes ajoutées ou supprimées lors de l'exécution de la commande, et que
commandes exécutées par le de défis ainsi que v les commandes ne présentent pas de rapports, est historique
entraine toi. POSIX.1‐2008 étend la pratique historique en exigeant que l'exécution du tampon soit
traités de la même manière. Les raisons en sont doubles. Historiquement, seul le rapport du
dernière commande exécutée à partir du tampon serait vue par l'utilisateur, car chaque nouveau rapport serait
écraser le dernier. De plus, les développeurs standard pensaient que l'exécution du tampon
avait plus en commun avec de défis ainsi que v commandes qu'avec d'autres ex commandes, et
doivent se comporter de la même manière, pour des raisons de cohérence et de simplicité de spécification.

match-spectacle, sm
La durée pendant laquelle le curseur passe sur le caractère correspondant n'est pas spécifiée car le
les capacités de synchronisation des systèmes sont souvent inexactes et variables. Le temps devrait être long
assez pour que l'utilisateur s'en aperçoive, mais pas assez longtemps pour que l'utilisateur devienne ennuyé. Quelque
implémentations de vi ont ajouté un temps de match option qui permet aux utilisateurs de définir le nombre
d'intervalles de 0,1 seconde, le curseur s'arrête sur le caractère correspondant.

mode d'affichage
La mode d'affichage option a été utilisée dans certaines implémentations historiques de ex ainsi que vi à
afficher le mode d'édition actuel en mode ouvert ou visuel. Les modes d'édition ont
généralement inclus ``command'' et ``input'', et parfois d'autres modes tels que
``remplacer'' et ``modifier''. La chaîne était généralement affichée sur la ligne inférieure du
écran dans le coin le plus à droite. De plus, un précédent '*' caractère souvent désigné
si le contenu du tampon d'édition a été modifié. Ce dernier écran a
fait parfois partie de la mode d'affichage option, et parfois basée sur une autre option. Ce
l'option n'était pas disponible dans l'implémentation historique 4 BSD de vi, mais était considéré comme
généralement utile, en particulier pour les utilisateurs novices, et est requis par POSIX.1‐2008.

La smd raccourci pour le mode d'affichage l'option n'était pas présente dans tous les historiques
implémentations de l'éditeur. POSIX.1‐2008 l'exige, par souci de cohérence.

Toutes les implémentations historiques de l'éditeur n'affichaient pas une chaîne de mode pour le mode commande,
différencier le mode de commande du mode de saisie de texte par l'absence d'une chaîne de mode.
POSIX.1‐2008 autorise ce comportement par souci de cohérence avec la pratique historique, mais
les implémentations sont encouragées à fournir une chaîne d'affichage pour les deux modes.

ouverture lente
Historiquement, le ouverture lente l'option était automatiquement définie si le débit en bauds du terminal était inférieur
supérieur à 1200 bauds, ou si le débit en bauds était de 1200 bauds et que redessiner l'option n'a pas été définie. le
ouverture lente option a eu deux effets. Tout d'abord, lors de l'insertion de caractères au milieu d'une ligne,
les caractères après le curseur ne seraient pas poussés vers l'avant, mais sembleraient être écrasés.
Deuxièmement, lors de la création d'une nouvelle ligne de texte, les lignes après la ligne actuelle ne seraient pas
défile vers le bas, mais semble être écrasé. Dans les deux cas, fin du mode de saisie de texte
entraînerait le rafraîchissement de l'écran pour correspondre au contenu réel du tampon d'édition.
Enfin, les terminaux suffisamment intelligents amenaient l'éditeur à ignorer les
ouverture lente option. POSIX.1‐2008 autorise la plupart des comportements historiques, étendant
pratique d'exiger ouverture lente comportements si l'option d'édition est définie par l'utilisateur.

étiquettes
Le chemin par défaut pour les fichiers de balises n'est pas spécifié car les implémentations peuvent avoir leur propre
étiquettes implémentations qui ne correspondent pas aux implémentations historiques. Le défaut étiquettes
la valeur de l'option devrait probablement au moins inclure le fichier ./Mots clés.

terme
Implémentations historiques de ex ainsi que vi ignoré les modifications apportées au terme option d'édition après le
les informations initiales du terminal ont été chargées. Ceci est autorisé par POSIX.1‐2008 ; cependant,
mises en œuvre sont encouragées à permettre à l'utilisateur de modifier son type de terminal à tout moment.
le temps.

laconique
Historiquement, le laconique l'option d'édition fournissait éventuellement une erreur plus courte et moins descriptive
message, pour certains messages d'erreur. Ceci est autorisé, mais pas obligatoire, par POSIX.1‐2008.
Historiquement, les erreurs de mode visuel les plus courantes (par exemple, essayer de déplacer le curseur au-delà
la fin d'une ligne) n'a pas entraîné de message d'erreur, mais a simplement alerté le terminal.
Les implémentations souhaitant fournir des messages aux utilisateurs novices sont invitées à le faire en fonction de
le éditer option verbeux, et pas laconique.

fenêtre
Dans les implémentations historiques, la valeur par défaut pour le fenêtre l'option d'édition était basée sur
débit en bauds comme suit :

1. Si le débit en bauds était inférieur à 1200, le éditer option w300 définir la valeur de la fenêtre ; pour
exemple, la ligne :

set w300=12

définirait l'option de fenêtre sur 12 si le débit en bauds était inférieur à 1200.

2. Si le débit en bauds était égal à 1200, le éditer option w1200 définir la valeur de la fenêtre.

3. Si le débit en bauds était supérieur à 1200, le éditer option w9600 définir la valeur de la fenêtre.

La w300, w1200et w9600 les options n'apparaissent pas dans POSIX.1‐2008 à cause de leur
dépend de débits en bauds spécifiques.

Dans les implémentations historiques, la taille de la fenêtre affichée par diverses commandes était
liées, mais pas nécessairement identiques, à la fenêtre option d'édition. Par exemple, la taille
de la fenêtre a été fixé par le ex commander visuel 10, mais cela n'a pas changé la valeur de
fenêtre option d'édition. Cependant, changer la valeur de fenêtre l'option d'édition a changé le
nombre de lignes affichées lorsque l'écran a été repeint. POSIX.1‐2008 ne
permettre ce comportement dans un souci de cohérence et de simplicité de spécification, et
exige que toutes les commandes qui modifient le nombre de lignes affichées le fassent en
fixer la valeur de la fenêtre possibilité d'édition.

marge d'emballage, wm
Historiquement, le marge d'enveloppement l'option n'affectait pas les cartes insérant des caractères qui avaient également
associé compters ; par exemple :carte K 5aABC DEF. Malheureusement, il est largement utilisé
cartes qui dépendent de ce comportement. Pour la cohérence et la simplicité des spécifications,
POSIX.1‐2008 ne permet pas ce comportement.

Historiquement, marge d'enveloppement a été calculé en utilisant la largeur d'affichage de la colonne de tous les caractères
sur l'écran. Par exemple, une implémentation utilisant "^je" représenter personnages
lorsque le liste l'option d'édition a été définie, où '^' ainsi que 'JE' chacun occupait une seule colonne sur le
l'écran, calculerait le marge d'enveloppement basé sur une valeur de 2 pour chaque . le nombre
l'option d'édition a également modifié la longueur effective de la ligne. POSIX.1‐2008
exige la conformité à la pratique historique.

Les versions antérieures de cette norme autorisaient les implémentations avec des octets autres que huit
bits, mais cela a été modifié dans cette version.

FUTUR DIRECTIONS


Aucun.

Utilisez exposix en ligne en utilisant les services onworks.net


Serveurs et postes de travail gratuits

Télécharger des applications Windows et Linux

  • 1
    Phaser
    Phaser
    Phaser est un open rapide, gratuit et amusant
    framework de jeu source HTML5 qui offre
    Rendu WebGL et Canvas à travers
    navigateurs Web de bureau et mobiles. Jeux
    peut être co...
    Télécharger Phaser
  • 2
    Moteur VASSAL
    Moteur VASSAL
    VASSAL est un moteur de jeu pour créer
    versions électroniques de la carte traditionnelle
    et jeux de cartes. Il fournit un soutien pour
    rendu et interaction des pièces de jeu,
    et...
    Télécharger le moteur VASSAL
  • 3
    OpenPDF - Fork d'iText
    OpenPDF - Fork d'iText
    OpenPDF est une bibliothèque Java pour créer
    et l'édition de fichiers PDF avec une licence LGPL et
    Licence open source MPL. OpenPDF est le
    LGPL/MPL open source successeur d'iText,
    un ...
    Télécharger OpenPDF - Fork d'iText
  • 4
    SAGA SIG
    SAGA SIG
    SAGA - Système d'automatisation
    Analyses géoscientifiques - est un
    Logiciel de système d'information (SIG) avec
    immenses capacités pour les géodonnées
    traitement et an...
    Télécharger le SIG SAGA
  • 5
    Boîte à outils pour Java/JTOOpen
    Boîte à outils pour Java/JTOOpen
    IBM Toolbox for Java / JTOpen est un
    bibliothèque de classes Java prenant en charge
    programmation client/serveur et internet
    modèles vers un système exécutant OS/400,
    i5/OS, ou...
    Télécharger Toolbox pour Java/JTOpen
  • 6
    D3.js
    D3.js
    D3.js (ou D3 pour les documents pilotés par les données)
    est une bibliothèque JavaScript qui vous permet
    produire des données dynamiques et interactives
    visualisations dans les navigateurs Web. Avec D3
    toi...
    Télécharger D3.js
  • Plus "

Commandes Linux

Ad