EnglezăFrancezăSpaniolă

Ad


Favicon OnWorks

exposix - Online în cloud

Rulați exposix în furnizorul de găzduire gratuit OnWorks prin Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS

Aceasta este comanda exposix care poate fi rulată în furnizorul de găzduire gratuit OnWorks folosind una dintre multiplele noastre stații de lucru online gratuite, cum ar fi Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS

PROGRAM:

NUME


ex — editor de text

REZUMAT


ex [−rR] [−s|−v] [−c comandă] [−t etichetă] [−w mărimea] [fişier...]

DESCRIERE


ex utility este un editor de text orientat pe linii. Există alte două moduri ale editorului—
deschis și vizual — în care este disponibilă editarea orientată pe ecran. Acest lucru este descris mai mult
pe deplin de către ex deschide și vizual comenzi și în vi.

Dacă un operand este '-', rezultatele sunt nespecificate.

Această secțiune folosește termenul edita tampon pentru a descrie actualul text de lucru. Fără specific
implementarea este implicată de acest termen. Toate modificările de editare sunt efectuate la editare
tampon și nicio modificare a acestuia nu va afecta niciun fișier până când o comandă a editorului scrie
fișier.

Anumite terminale nu au toate capabilitățile necesare pentru a susține completa ex
definiție, cum ar fi comenzile de editare pe ecran complet (vizual mod or deschide mod). Când
aceste comenzi nu pot fi acceptate pe astfel de terminale, această condiție nu va produce un
mesaj de eroare, cum ar fi „nu este o comandă a editorului” sau raportați o eroare de sintaxă. The
implementarea poate fie să accepte comenzile și să producă rezultate pe ecran care sunt
rezultatul unei încercări nereușite de a îndeplini cerințele acestui volum de
POSIX.1‐2008 sau raportați o eroare care descrie deficiența legată de terminal.

OPŢIUNI


ex utilitatea trebuie să se conformeze volumului Definiții de bază din POSIX.1-2008, Secțiune 12.2,
Utilitate Sintaxă Instrucțiuni, cu excepția utilizării nespecificate a '-', și asta „+” poate fi
recunoscut ca delimitator de opțiuni precum și '-'.

Următoarele opțiuni vor fi acceptate:

−c comandă
Specificați o comandă inițială pentru a fi executată în primul buffer de editare încărcat din
un fișier existent (vezi secțiunea DESCRIERE EXTINSĂ). Implementările pot
susține mai mult de un singur −c opțiune. În astfel de implementări, este specificat
comenzile vor fi executate în ordinea specificată pe linia de comandă.

−r Recuperați fișierele denumite (consultați secțiunea DESCRIERE EXTINSĂ). Recuperare
informațiile pentru un fișier vor fi salvate în timpul unei erori de editor sau de sistem (pentru
exemplu, când editorul este terminat de un semnal pe care editorul îl poate capta),
sau după folosirea unui ex păstra comanda.

A prăbușire în acest context este o defecţiune neaşteptată a sistemului sau utilitarului care
necesită repornirea sistemului sau a utilitarului eșuat. O blocare a sistemului implică asta
orice utilitare care rulează în acel moment se blochează. În cazul unui editor sau al unui sistem
blocare, numărul de modificări ale memoriei tampon de editare (de la cea mai recentă păstra
comanda) care va fi recuperat este nespecificat.

Daca nu fişier operanzii sunt dați și −t opțiunea nu este specificată, toate celelalte
opțiuni, EXINIT variabilă și orice .exrc fișierele vor fi ignorate; o lista de
toate fișierele recuperabile disponibile utilizatorului care invocă trebuie scrise, iar
editorul va ieși în mod normal fără acțiuni suplimentare.

−R set numai în citire opțiunea de editare.

−s Pregăti ex pentru utilizarea în lot, luând următoarele acțiuni:

* Suprimați solicitările de scriere și mesajele informaționale (dar nu de diagnosticare).

* Ignorați valoarea lui TERMEN și orice tip de terminal implicit de implementare și
să presupunem că terminalul este un tip incapabil să accepte moduri deschise sau vizuale;
a se vedea vizual comanda si descrierea vi.

* Suprimați utilizarea EXINIT variabila de mediu si citirea oricarei
.exrc fişier; consultați secțiunea DESCRIERE EXTINSĂ.

* Suprimați autoindentarea, ignorând valoarea lui autoindentare opțiunea de editare.

−t etichetă
Editați fișierul care conține fișierul specificat etichetă; vedea ctag-uri. Caracteristicile etichetelor
reprezentată de −t etichetă si etichetă comanda este opțională. Ar trebui sa fie
furnizate pe orice sistem care oferă și o implementare conformă a ctag-uri;
în caz contrar, folosirea −t produce rezultate nedefinite. Pe orice sistem, așa va fi
o eroare pentru a specifica mai mult de un singur −t opțiune.

−v Începeți în modul vizual (vezi vi).

−w mărimea Setați valoarea lui fereastră opțiunea editorului pentru mărimea.

OPERANDE


Următorul operand va fi suportat:

fişier O cale a unui fișier de editat.

Stdin


Intrarea standard constă dintr-o serie de comenzi și text de introducere, așa cum este descris în
secțiunea DESCRIERE EXTINSĂ. Implementarea poate limita fiecare linie de intrare standard la
o lungime de {LINE_MAX}.

Dacă intrarea standard nu este un dispozitiv terminal, va fi ca și cum −s opțiunea fusese
specificat.

Dacă o citire de la intrarea standard returnează o eroare sau dacă editorul detectează o sfârșit de
condiția fișierului de la intrarea standard, va fi echivalent cu un SIGHUP asincron
eveniment.

INTRARE DOSARE


Fișierele de intrare vor fi fișiere text sau fișiere care ar fi fișiere text, cu excepția unui fișier incomplet
ultima linie care nu este mai lungă de {LINE_MAX}−1 octeți și nu conține NUL
personaje. În mod implicit, orice ultima linie incompletă va fi tratată ca și cum ar avea un final
. Editarea altor forme de fișiere poate fi permisă opțional de ex
implementări.

.exrc fișierele și fișierele sursă vor fi fișiere text constând din ex comenzi; vezi
secțiunea DESCRIERE EXTINSĂ.

În mod implicit, editorul va citi liniile din fișierele de editat fără interpretare
oricare dintre aceste linii ca orice formă de comandă a editorului.

MEDIUL VARIABILE


Următoarele variabile de mediu vor afecta execuția ex:

COLOANE Ignorați dimensiunea orizontală a ecranului selectată de sistem. Consultați definițiile de bază
volumul POSIX.1‐2008, Capitol 8, Mediu inconjurator Variabile pentru valori valabile şi
rezultă când este nesetat sau nul.

EXINIT Stabiliți o listă de ex comenzi care sunt executate la pornirea editorului. Vezi
Secțiunea DESCRIERE EXTINSĂ pentru mai multe detalii despre faza de inițializare.

ACASA Determinați o cale a unui director care va fi căutat pentru un editor de start-
sus numit .exrc; consultați secțiunea DESCRIERE EXTINSĂ.

LIMBA Furnizați o valoare implicită pentru variabilele de internaționalizare care sunt nesetate sau
nul. (A se vedea volumul Definiții de bază din POSIX.1‐2008, Secțiune 8.2,
Internaționalizare Variabile pentru prioritatea internaţionalizării
variabile utilizate pentru a determina valorile categoriilor locale.)

LC_ALL Dacă este setată la o valoare șir nevid, suprascrieți valorile tuturor celorlalte
variabile de internaţionalizare.

LC_COLLATE
Determinați locația pentru comportamentul intervalelor, claselor de echivalență și multi-
caractere care colecționează elemente în cadrul expresiilor regulate.

LC_CTYPE Determinați locația pentru interpretarea secvențelor de octeți de date text
ca caractere (de exemplu, caractere pe un singur octet, spre deosebire de caractere pe mai mulți octeți în
argumente și fișiere de intrare), comportamentul claselor de caractere în cadrul obișnuit
expresii, clasificarea caracterelor ca litere mari sau mici,
conversia majusculelor a literelor și detectarea limitelor cuvintelor.

LC_MESSAGES
Determinați locația care ar trebui utilizată pentru a afecta formatul și conținutul
mesaje de diagnostic scrise la eroare standard.

LINII Ignorați dimensiunea ecranului vertical selectată de sistem, utilizată ca număr de linii
într-un ecran plin și dimensiunea ecranului vertical în modul vizual. Vezi baza
Volumul definițiilor POSIX.1‐2008, Capitol 8, Mediu inconjurator Variabile pentru valabil
valori și rezultate atunci când este nesetat sau nul.

NLSPATH Determinați locația cataloagelor de mesaje pentru procesarea LC_MESSAGES.

PATH Determinați calea de căutare pentru comanda shell specificată în ex editor
comenzi !, coajă, citit, și scrie, și comanda mod deschis și vizual !; vedea
descrierea căutării și execuției comenzii în Secțiune 2.9.1.1, Comandă
Caută și Execuție.

COAJĂ Determinați interpretul de linie de comandă preferat pentru utilizare ca valoare implicită a
il coajă opțiunea de editare.

TERMEN Determinați numele tipului de terminal. Dacă această variabilă este nesetată sau nulă, an
se va utiliza un tip de terminal implicit nespecificat.

ASINCRON EVENIMENTE


Următorul termen este folosit în această și următoarele secțiuni pentru a specifica comanda și
acțiuni de eveniment asincron:

Completă scrie
O scriere completă este o scriere a întregului conținut al bufferului de editare într-un fișier
de alt tip decât un dispozitiv terminal sau salvarea buffer-ului de editare cauzată
de către utilizatorul care execută ex păstra comanda. Scrierea conținutului editării
tampon într-un fișier temporar care va fi eliminat la ieșirea editorului, nu
fi considerată o scriere completă.

La primirea semnalelor trebuie luate următoarele acțiuni:

SIGINT Dacă intrarea standard nu este un dispozitiv terminal, ex nu trebuie să scrie fișierul sau
reveni la modul de comandă sau de introducere a textului și va ieși cu o ieșire diferită de zero
stare.

În caz contrar, dacă executați o comandă în modul de introducere a textului deschisă sau vizuală, ex în primire
de SIGINT se va comporta identic cu primirea acestuia caracter.

In caz contrar:

1. Dacă se execută un ex comandă modul de introducere a textului, toate liniile de introducere care au fost
introduse complet vor fi rezolvate în tamponul de editare și orice parțial
linia introdusă va fi eliminată.

2. Dacă există o comandă în curs de execuție, aceasta va fi anulată și un mesaj
afișat. Dacă nu se specifică altfel de către ex or vi descrieri de comenzi,
nu este specificat dacă apar linii modificate de comanda de execuție
modificate, sau așa cum au fost înainte de a fi modificate de comanda de execuție, în
tamponul.

Dacă comanda în execuție curentă a fost o comandă de mișcare, aceasta este asociată
comanda va fi renunțată.

3. Dacă se află în modul de comandă deschis sau vizual, terminalul este alertat.

4. Editorul va reveni apoi la modul de comandă.

SIGCONT Ecranul va fi reîmprospătat dacă se află în modul deschis sau vizual.

SIGHUP Dacă tamponul de editare a fost modificat de la ultima scriere completă, ex trebuie
încercați să salvați tamponul de editare, astfel încât să poată fi recuperat ulterior utilizând −r
sau opțiunea ex recupera comanda. Editorul nu trebuie să scrie fișierul sau să returneze
la modul de comandă sau de introducere a textului și se va termina cu o stare de ieșire diferită de zero.

SIGTERM Consultați SIGHUP.

Acțiunea luată pentru toate celelalte semnale este nespecificată.

Stdout


Ieșirea standard va fi folosită numai pentru scrierea solicitărilor către utilizator, pentru informare
mesaje și pentru scrierea liniilor din fișier.

Stderr


Eroarea standard va fi utilizată numai pentru mesajele de diagnosticare.

REZULTATE DOSARE


Ieșirea din ex vor fi fișiere text.

EXTENDED DESCRIERE


Doar ex modul editorului este descris în această secțiune. Vedea vi pentru editare suplimentară
capabilități disponibile în ex.

Când apare o eroare, ex va scrie un mesaj. Dacă terminalul acceptă un mod standout
(cum ar fi video invers), mesajul va fi scris în modul standout. Dacă terminalul
nu acceptă un mod standout și opțiunea de editare clopote de eroare este setat, o acțiune de alertă
va precede mesajul de eroare.

În mod implicit, ex va porni în modul de comandă, care va fi indicat prin a : prompt; vedea
il prompt comanda. Modul de introducere a textului poate fi introdus de către adăuga, insera, Sau Schimbare
comenzi; se poate ieși (și reintroduce modul de comandă) tastând a ('.') singur
la începutul unei linii.

Inițializarea in ex și vi
Următoarele simboluri sunt utilizate în această secțiune și în următoarele secțiuni pentru a specifica locațiile din
editați tamponul:

alterna și curent nume de căi
Două căi, numite curent și alterna, sunt întreținute de editor. Orice ex
comenzile care preiau nume de fișiere drept argumente le vor seta după cum urmează:

1. Dacă a fişier argumentul este specificat la ex edita, ex, Sau recupera comenzi, sau dacă
an ex etichetă comanda înlocuiește conținutul buffer-ului de editare.

A. Dacă comanda înlocuiește conținutul buffer-ului de editare, curentul
calea va fi setat la fişier argument sau fișierul indicat de etichetă,
iar numele de cale alternativă va fi setat la valoarea anterioară a curentului
nume cale.

b. În caz contrar, calea alternativă va fi setată la fişier a susținut.

2. Dacă a fişier argumentul este specificat la ex următor comanda:

A. Dacă comanda înlocuiește conținutul buffer-ului de editare, curentul
calea va fi setat la primul fişier argument și calea alternativă
va fi setat la valoarea anterioară a căii curente.

3. Dacă a fişier argumentul este specificat la ex fişier comanda, calea curentă
va fi setat la fişier argument, iar calea alternativă va fi setată la
valoarea anterioară a căii curente.

4. Dacă a fişier argumentul este specificat la ex citit și scrie comenzi (adică când
citirea sau scrierea unui fișier și nu în programul numit de coajă edita
opțiune), sau a fişier argumentul este specificat la ex xit comanda:

A. Dacă calea curentă nu are nicio valoare, calea curentă va fi setată la
il fişier a susținut.

b. În caz contrar, calea alternativă va fi setată la fişier a susținut.

Dacă calea alternativă este setată la valoarea anterioară a căii curente când
calea curentă nu avea valoare anterioară, atunci calea alternativă va avea
nici o valoare ca urmare.

curent linie
Linia tamponului de editare la care face referire cursor. Descrierea fiecărei comenzi
specifică linia curentă după ce comanda a fost executată, ca curent linie
valoare. Când tamponul de editare nu conține linii, linia curentă va fi zero; vedea
adresare in ex.

curent coloană
Coloana curentă a liniei de afișare ocupată de cursor. (Coloanele vor fi
numerotate începând cu 1.) Fiecare descriere a comenzii specifică coloana curentă
după ce comanda a fost executată, ca curent coloană valoare. Această coloană este o
ideal coloană care este reținută de-a lungul vieții editorului. Afișajul propriu-zis
coloana liniei pe care se sprijină cursorul poate fi diferită de coloana curentă;
vezi discuția despre poziționarea cursorului în Comandă Descrieri in vi.

set la non-
O descriere pentru o valoare de coloană curentă, ceea ce înseamnă că coloana curentă va fi
setați la ultima coloană de linie de afișare pe care este afișată orice parte a primei
non- a liniei. Dacă linia nu are non- non- personaje,
coloana curentă va fi setată la ultima coloană a liniei de afișare pe care se află
a afișat orice parte din ultimul non- caracterul din rând. Dacă linia este
gol, coloana curentă va fi setată pe poziția 1 a coloanei.

Lungimea liniilor din memoria tampon de editare poate fi limitată la {LINE_MAX} octeți. În deschis și
modul vizual, lungimea liniilor din bufferul de editare poate fi limitată la numărul de
caractere care se vor încadra pe afișaj. Dacă oricare dintre limite este depășită în timpul editării, an
va fi scris mesajul de eroare. Dacă oricare dintre limite este depășită de o linie citită dintr-un fișier,
va fi scris un mesaj de eroare și sesiunea de editare poate fi încheiată.

Dacă editorul nu mai rulează din orice alt motiv decât o comandă de utilizator, și editarea
tamponul a fost modificat de la ultima scriere completă, va fi echivalent cu un SIGHUP
eveniment asincron. Dacă sistemul se blochează, acesta va fi echivalent cu un SIGHUP asincron
eveniment.

În timpul inițializării (înainte ca primul fișier să fie copiat în tamponul de editare sau în orice utilizator
comenzile de la terminal sunt procesate) vor avea loc următoarele:

1. Dacă variabila de mediu EXINIT este setat, editorul va executa ex comenzi
cuprinse în acea variabilă.

2. Dacă EXINIT variabila nu este setată și toate următoarele sunt adevărate:

A. The ACASA variabila de mediu nu este nulă și nu este goală.

b. Fișierul .exrc în directorul la care face referire ACASA variabilă de mediu:

i. Există

ii. Este deținut de același ID de utilizator ca și ID-ul de utilizator real al procesului sau
procesul are privilegii adecvate

iii. Nu poate fi scris de nimeni altul decât de proprietar

editorul va executa ex comenzile conținute în acel fișier.

3. Dacă și numai dacă toate următoarele sunt adevărate:

A. Directorul curent nu este referit de către ACASA variabilă de mediu.

b. O comandă în EXINIT variabilă de mediu sau o comandă din .exrc de fișier în
director la care face referire ACASA variabila de mediu setează opțiunea editorului
exrc.

c. The .exrc fișier în directorul curent:

i. Există

ii. Este deținut de același ID de utilizator ca ID-ul de utilizator real al procesului sau de unul dintre
un set de ID-uri de utilizator definite de implementare

iii. Nu poate fi scris de nimeni altul decât de proprietar

editorul va încerca să execute ex comenzile conținute în acel fișier.

Linii în orice .exrc fișierele care sunt linii goale vor fi ignorate. Dacă există .exrc fisierul exista,
dar nu este citit din motive de proprietate sau permisiune, va fi o eroare.

După EXINIT variabilă și orice .exrc fișierele sunt procesate, primul fișier specificat de
utilizatorul va fi editat, după cum urmează:

1. Dacă utilizatorul a specificat −t opțiunea, efectul va fi ca și cum ex etichetă comanda a fost
introdus cu argumentul specificat, cu excepția faptului că procesarea etichetelor o face
nu are ca rezultat un fișier de editat, efectul va fi așa cum este descris la pasul 3. de mai jos.

2. În caz contrar, dacă utilizatorul a specificat vreo linie de comandă fişier argumente, efectul va fi
de parcă ex edita comanda a fost introdusă cu primul dintre aceste argumente ca fiind fişier
a susținut.

3. În caz contrar, efectul va fi ca și cum ex edita comanda a fost introdusă cu a
nume de fișier inexistent ca acesta fişier argument. Nu se specifică dacă această acțiune va trebui
setați calea curentă. Într-o implementare în care această acțiune nu stabilește
calea curentă, orice comandă a editorului care utilizează calea curentă va eșua până la an
comanda editor setează calea curentă.

În cazul în care −r a fost specificată opțiunea, prima dată un fișier din lista inițială de argumente sau a
fișierul specificat de −t opțiunea este editată, dacă informațiile de recuperare au fost anterior
salvate despre aceasta, acele informații vor fi recuperate și editorul se va comporta ca și cum ar fi
conținutul buffer-ului de editare a fost deja modificat. Dacă există mai multe cazuri de
fișierul care urmează să fie recuperat, cel mai recent salvat va fi recuperat și an
mesaj informativ că există versiuni anterioare ale fișierului care pot fi recuperate
va fi scris. Dacă nu sunt disponibile informații de recuperare despre un fișier, o informație
mesajul în acest sens va fi scris, iar editarea va continua ca de obicei.

În cazul în care −c a fost specificată opțiunea, prima dată când un fișier care există deja (inclusiv un
fișier care ar putea să nu existe, dar pentru care sunt disponibile informații de recuperare, atunci când −r
este specificată opțiunea) înlocuiește sau inițializează conținutul buffer-ului de editare, curentul
linia va fi setată la ultima linie a tamponului de editare, coloana curentă va fi setată la
non- , si ex comenzile specificate cu −c optiunea va fi executata. In acest
caz, linia curentă și coloana curentă nu trebuie setate așa cum este descris pentru comandă
asociat cu înlocuirea sau inițializarea conținutului tamponului de editare. Cu toate acestea, dacă
il −t opțiune sau a etichetă comanda este asociată cu această acțiune, the −c comenzi de opțiuni
va fi executată și apoi se va efectua deplasarea către etichetă.

Lista de argumente curentă va fi setată inițial la numele fișierelor specificate de utilizator
linia de comandă. Dacă nu sunt specificate nume de fișiere de către utilizator, lista de argumente curente
va fi goală. Dacă −t a fost specificată opțiunea, nu este specificat dacă vreun nume de fișier
rezultate din procesarea etichetelor vor fi adăugate listei de argumente curente. În cazul
unde numele fișierului este adăugat ca prefix la lista de argumente curente, argumentul curent
referința la listă va fi setată la acel nume de fișier. În cazul în care numele fișierului nu este adăugat
ca prefix la lista de argumente curentă, referința la lista de argumente curentă va trebui
logic să fie localizat înaintea primului nume de fișier specificat pe linia de comandă (pentru
exemplu, un ulterior ex următor comanda va edita primul nume de fișier din comandă
linia). Dacă −t opțiunea nu a fost specificată, referința curentă a listei de argumente va fi la
primul dintre numele de fișiere de pe linia de comandă.

adresare in ex
Adresându-se în ex se referă la linia curentă și la coloana curentă; adresa unei linii
este numărul său de linie bazat pe 1, adresa unei coloane este numărul său bazat pe 1 din
începutul liniei. În general, linia curentă este ultima linie afectată de o comandă.
Numărul liniei curente este adresa liniei curente. În fiecare descriere a comenzii,
este descris efectul comenzii asupra numărului liniei curente și asupra coloanei curente.

Adresele sunt construite după cum urmează:

1. Personajul '.' (perioada) se adresează liniei curente.

2. Personajul „$” va adresa ultima linie a tamponului de editare.

3. Numărul zecimal pozitiv n se va adresa na linia a bufferului de editare.

4. Adresa "'X" se referă la linia marcată cu caracterul numelui mărcii 'X', Care
trebuie să fie o literă minusculă din setul de caractere portabil, caracterul backquote,
sau caracterul cu ghilimele simple. Va fi o eroare dacă linia care a fost marcată nu este
prezent în memoria tampon de editare sau marcajul nu a fost setat. Liniile pot fi marcate
cu ex marca or k comenzile sau vi m comanda.

5. O expresie regulată cuprinsă de personaje („/”) se adresează primului rând
găsit prin căutarea înainte de la linia care urmează linia curentă spre sfârșitul
tamponul de editare și oprirea la prima linie pentru care linia excluzând
terminand se potrivește cu expresia regulată. După cum se precizează în Regulat Expresii
in ex, o adresă constând dintr-o expresie regulată nulă delimitată de
personaje („//”) se adresează următorului rând pentru care linia excluzând
terminand se potrivește cu ultima expresie regulată întâlnită. În plus,
al doilea poate fi omis la sfârșitul unei linii de comandă. Dacă wrapscan edita
opțiunea este setată, căutarea se va încheia până la începutul buffer-ului de editare și
continua până la și inclusiv linia curentă, astfel încât întregul buffer de editare să fie
căutat. În cadrul expresiei regulate, secvența "\/" va reprezenta un literal
în locul delimitatorului expresiei regulate.

6. O expresie regulată închisă în personaje ('?') se adresează
prima linie găsită prin căutarea înapoi de la linia care precede linia curentă
spre începutul bufferului de editare și oprindu-se la prima linie pentru care
linie excluzând terminarea se potrivește cu expresia regulată. O adresa
constând dintr-o expresie regulată nulă delimitată de personaje ("??")
va adresa linia anterioară pentru care linia excluzând terminarea
se potrivește cu ultima expresie regulată întâlnită. În plus, al doilea
mark> poate fi omis la sfârșitul unei linii de comandă. Dacă wrapscan opțiunea de editare este setată,
căutarea se va încheia de la începutul tamponului de editare până la sfârșitul
editați tamponul și continuați până la și inclusiv linia curentă, astfel încât întreaga editare
tamponul este căutat. În cadrul expresiei regulate, secvența "\?" va reprezenta a
literal în locul delimitatorului RE.

7. A („+”) sau un semn minus ('-') urmată de un număr zecimal se adresează
linia curentă plus sau minus numărul. A „+” or '-' nu este urmat de o zecimală
numărul se adresează liniei curente plus sau minus 1.

Adresele pot fi urmate de zero sau mai multe decalaje de adrese, opțional -separat.
Decalajele de adrese sunt construite după cum urmează:

1. „+” or '-' imediat urmată de un număr zecimal se adună (scăde)
numărul indicat de linii către (de la) adresă. A „+” or '-' nu este urmat de a
numărul zecimal va adăuga (scădea) 1 la (din) adresa.

(2) Un număr zecimal adaugă la adresa numărul indicat de linii.

Nu trebuie să fie o eroare ca valoarea unei adrese intermediare să fie mai mică decât zero sau mai mare
decât ultima linie din tamponul de editare. Va fi o eroare pentru valoarea finală a adresei
să fie mai mică decât zero sau mai mare decât ultima linie din tamponul de editare.

Comenzile au zero, una sau două adrese; vezi descrierile de 1adresa și 2adresa in
Comandă Descrieri in ex. Dacă se furnizează mai mult decât numărul necesar de adrese către
o comandă care necesită zero adrese, va fi o eroare. În caz contrar, dacă mai mult decât
numărul necesar de adrese este furnizat unei comenzi, adresele specificate mai întâi
vor fi evaluate și apoi eliminate până când rămâne numărul maxim de adrese valide.

Adresele vor fi separate una de alta prin a (',') sau a (';').
Dacă nu este specificată nicio adresă înainte sau după a sau separator, va fi
ca și cum adresa liniei curente ar fi fost specificată înainte sau după separator. În
cazul a separator, linia curentă ('.') va fi setat la primul
adresa și abia atunci se va calcula următoarea adresă. Această caracteristică poate fi folosită pentru
determinați linia de plecare pentru căutările înainte și înapoi (vezi regulile 5. și 6.).

A ('%') echivalează cu introducerea celor două adrese "1,$".

Orice delimitare caractere între adrese, separatori de adrese sau adresă
compensațiile vor fi eliminate.

Comandă Linie Analizare in ex
Următorul simbol este folosit în această și următoarele secțiuni pentru a descrie comportamentul de analiză:

scăpa Dacă un caracter este denumit `` -a scăpat'' sau `` -V-
scăpat'', va însemna că personajul a căpătat sau a pierdut un sens aparte
în virtutea de a fi precedat, respectiv, de a sau ‐V
caracter. Cu excepția cazului în care se specifică altfel, caracterul de evadare va fi eliminat
în acel moment și nu vor mai fi luate în considerare în niciun scop.

Analiza liniei de comandă se va face în următorii pași. Pentru fiecare pas, personaje
deja evaluate vor fi ignorate; adică la care se referă expresia „personaj principal”.
următorul personaj care nu a fost încă evaluat.

1. Conducerea caracterele vor fi sărite.

2. Conducerea caracterele vor fi sărite.

3. Dacă caracterul principal este un caracter cu ghilimele duble, caracterele până la și
inclusiv următorul non- -a scapat vor fi aruncate și orice
caracterele ulterioare vor fi analizate ca o comandă separată.

4. Vor fi evaluate personajele principale care pot fi interpretate ca adrese; vedea
adresare in ex.

5. Conducerea caracterele vor fi sărite.

6. Dacă următorul caracter este a caracter sau a :

A. Dacă următorul caracter este a :

i. Dacă ex este în modul deschis sau vizual, linia curentă va fi setată la ultima
adresa specificată, dacă este cazul.

ii. În caz contrar, dacă ultima comandă a fost terminată de a caracter,
nu se iau măsuri; de exemplu, comanda „|| " trebuie
executați două comenzi implicite, nu trei.

iii. În caz contrar, pasul 6.b. se va aplica.

b. În caz contrar, comanda implicită va fi imprima comanda. Ultimul #, p, și l
steaguri specificate pentru oricare ex comanda va fi reținută și se va aplica la aceasta
comanda implicită. Executarea ex număr, imprima, Sau listă comanda va seta
steaguri amintite să #, nimic, și l, respectiv, plus orice alte steaguri
specificate pentru acea executare a număr, imprima, Sau listă comanda.

If ex nu efectuează în prezent a global or v comandă și fără adresă sau număr
este specificat, linia curentă va fi incrementată cu 1 înainte ca comanda să fie
executat. Dacă incrementarea liniei curente ar duce la o adresă dincolo de
ultima linie din buffer-ul de editare, comanda va eșua, iar creșterea nu va eșua
întâmpla.

c. The sau caracterul va fi aruncat și orice următor
caracterele vor fi analizate ca o comandă separată.

7. Numele comenzii va fi compus din următorul caracter (dacă caracterul nu este
alfabetic), sau următorul caracter și orice caractere alfabetice ulterioare (dacă
caracterul este alfabetic), cu următoarele excepții:

A. Comenzi care constau din orice prefix al caracterelor din numele comenzii șterge,
urmat imediat de oricare dintre personaje 'l', 'p', „+”, '-', Sau '#' ar trebui sa fie
interpretat ca a șterge comanda, urmată de a , urmat de personaje
care nu făceau parte din prefixul șterge comanda. Numărul maxim de
caracterele se potrivesc cu numele comenzii șterge; de exemplu, "del" trebuie
nu fi tratat ca "de" urmat de steag l.

b. Comenzi care constau din caracter 'k', urmat de un personaj care poate fi
folosit ca denumire a unei mărci, va fi echivalent cu comanda de marcare urmată de a
, urmat de personajul care a urmat 'k'.

c. Comenzi care constau din caracter 's', urmat de personaje care ar putea fi
interpretate ca opțiuni valide pentru s comanda, va fi echivalentul s
comandă, fără nici un model sau valori de înlocuire, urmată de a ,
urmat de personajele după 's'.

8. Numele comenzii se potrivește cu numele posibile ale comenzii și o comandă
numele care conține un prefix care se potrivește cu caracterele specificate de utilizator va fi
comanda executată. În cazul comenzilor în care caracterele specificate de utilizator
ar putea fi ambiguă, comanda executată va fi după cum urmează:

┌───┬────────┬┬───┬───────┬┬───────────────
aadăuga ││nurmător ││tt
cSchimbare ││pimprima ││uanula
chSchimbare ││primprima ││unanula
eedita ││rcitit ││vv
mmuta ││recitit ││wscrie
mamarca ││ss ││ │ │
└───┴────────┴┴───┴───────┴┴───────└───└─
Extensiile de implementare cu nume care provoacă ambiguități similare nu vor fi verificate
pentru o potrivire până când toate potrivirile posibile pentru comenzile specificate de POSIX.1‐2008 au
fost verificat.

9. Dacă comanda este a ! comanda sau dacă comanda este a citit comanda urmata de zero
sau mai mult personaje și a !, sau dacă comanda este a scrie comandă urmată de
una sau mai multe personaje și a !, restul comenzii va include toate
caractere până la un non- -a scapat . The ar trebui sa fie
eliminate și orice caractere ulterioare vor fi analizate separat ex comanda.

10. În caz contrar, dacă comanda este an edita, ex, Sau următor comanda, sau a vizual comanda în timp ce
în modul deschis sau vizual, următoarea parte a comenzii va fi analizată după cum urmează:

A. Orice '!' caracterul imediat care urmează comenzii va fi omis și va fi parte
a comenzii.

b. Orice conducere caracterele vor fi sărite și vor face parte din comandă.

c. Dacă următorul caracter este a „+”, caractere până la primul non- -a scapat
sau non- -a scapat va fi omis și va face parte din
comanda.

d. Restul comenzii va fi determinat de pașii specificati la alin
12.

11. În caz contrar, dacă comanda este a global, deschide, s, Sau v comanda, următoarea parte a
comanda va fi analizată după cum urmează:

A. Orice conducere caracterele vor fi sărite și vor face parte din comandă.

b. Dacă următorul caracter nu este un alfanumeric, ghilimele duble, ,
, sau caracter:

i. Următorul caracter va fi folosit ca delimitator de comandă.

ii. Dacă comanda este a global, deschide, Sau v comanda, caractere până la primul
non- -a scapat , sau mai întâi non- -delimitator escape
caracter, va fi omis și va face parte din comandă.

iii. Dacă comanda este un s comanda, caractere până la primul
non- -a scapat , sau al doilea non- -a scapat
caracter delimitator, va fi omis și va face parte din comandă.

c. Dacă comanda este a global or v comanda, caractere până la primul
non- -a scapat va fi omis și va face parte din comandă.

d. În caz contrar, restul comenzii va fi determinat de pașii specificati în
paragraful 12.

12. În caz contrar:

A. Dacă comanda a fost a Hartă, dezhare, prescurtare, Sau neabreviat comandă, personaje
pana la primul non- ‐V-a scăpat , , sau dublu-
caracterul citat va fi omis și va face parte din comandă.

b. În caz contrar, caracterele până la primul non- -a scapat ,
, sau caracterul cu ghilimele duble va fi omis și va face parte din
comanda.

c. Dacă comanda a fost un adăuga, Schimbare, Sau insera comanda, iar pasul 12.b. încheiat
la un caracter, orice caractere ulterioare, până la următorul
non- -a scapat va fi folosit ca text de intrare la comandă.

d. Dacă comanda a fost încheiată cu un caracter de ghilimele duble, toate caracterele ulterioare,
până la următorul non- -a scapat , vor fi aruncate.

e. Terminarea sau caracterul va fi aruncat și orice
caracterele ulterioare vor fi analizate separat ex comanda.

Argumentele comenzii vor fi analizate așa cum este descris în Sinopsis și Descrierea fiecăruia
individ ex comanda. Această analiză nu va fi -sensibil, cu excepția !
argument, care trebuie să urmeze numele comenzii fără a interveni personaje, și
unde altfel ar fi ambiguu. De exemplu, conta și pavilion argumentele nu trebuie să fie
-separat pentru ca "d22p" nu este ambiguu, dar fişier argumente la ex următor
comanda trebuie să fie separată de unul sau mai multe personaje. Orice in comanda
argumente pentru prescurtare, neabreviat, Hartă, și dezhare comenzile pot fi -V-
a scăpat, caz în care nu va fi folosit ca delimitator de argument. Orice
în argumentul comenzii pentru orice altă comandă poate fi -a scăpat, caz în care
acea nu va fi folosit ca delimitator de argument.

În cadrul argumentelor de comandă pentru prescurtare, neabreviat, Hartă, și dezhare comenzi, orice
caracterul poate fi ‐V-a scăpat. Toate astfel de caractere evadate vor fi tratate
literal și nu va avea nicio semnificație specială. În cadrul argumentelor de comandă pentru toate celelalte ex
comenzi care nu sunt expresii regulate sau șiruri de caractere de înlocuire, orice caracter care ar fi
altfel au o semnificație specială poate fi -a scapat. Caracterele escape vor fi
tratate la propriu, fără semnificație specială ca caractere de expansiune shell sau '!', '%', și
'#' caractere de expansiune. Vedea Regulat Expresii in ex și Înlocuire Corzi in ex pentru
descrieri ale argumentelor comenzii care sunt expresii regulate sau șiruri de caractere de înlocuire.

Non- -a scapat '%' personaje care apar în fişier argumente la oricare ex comanda trebuie
să fie înlocuit cu calea curentă; nescapat '#' caracterele vor fi înlocuite cu
nume alternativ de cale. Va fi o eroare dacă '%' or '#' personajele apar fără evadare într-un
argumentul și valorile lor corespunzătoare nu sunt setate.

Non- -a scapat '!' personaje din argumentele fie la ex ! comanda sau
modul deschis și vizual ! comanda, sau în argumentele la ex citit comanda, unde
primul non- după ce numele comenzii este a '!' caracter, sau în argumentele la
ex scrie comandă în care numele comenzii este urmat de unul sau mai multe personaje şi
primul non- după ce numele comenzii este a '!' caracter, va fi înlocuit cu
argumentele la ultima dintre aceste trei comenzi așa cum au apărut până la urmă fără evadare
'%', '#', și '!' caracterele au fost înlocuite. Va fi o eroare dacă '!' caractere
apar fără escape într-una dintre aceste comenzi și nu a existat nicio execuție anterioară a uneia
dintre aceste comenzi.

Dacă apare o eroare în timpul parsării sau execuției unui ex comanda:

* Se va scrie un mesaj informativ în acest sens. Executarea ex comandă
se va opri, iar cursorul (de exemplu, linia și coloana curente) nu vor fi
modificat în continuare.

* Dacă ex comanda rezultată dintr-o extindere a hărții, toate caracterele de pe harta respectivă
extinderea va fi aruncată, cu excepția cazului în care se specifică altfel de către Hartă comanda.

* În caz contrar, dacă ex comanda rezultată din prelucrarea unui EXINIT mediu inconjurator
variabilă, a .exrc dosar, a :sursă comanda, a −c opțiune, sau a +comandă specificat la o
ex edita, ex, următor, Sau vizual comandă, fără alte comenzi de la sursa
comenzile vor fi executate.

* În caz contrar, dacă ex comanda rezultată din executarea unui buffer sau a unui global or v
comandă, fără alte comenzi cauzate de execuția buffer-ului sau a global or v
comanda va fi executată.

* În caz contrar, dacă ex comanda nu a fost terminată de a , toate personajele până la
și inclusiv următorul non- -a scapat vor fi aruncate.

Intrare Editarea in ex
Următorul simbol este utilizat în această secțiune și în următoarele secțiuni pentru a specifica comanda
acţiuni:

cuvânt În localitatea POSIX, un cuvânt constă dintr-o secvență maximă de litere, cifre,
și litere de subliniere, delimitate la ambele capete de alte caractere decât litere,
cifre, sau litere de subliniere, sau de la începutul sau sfârșitul unei linii sau al bufferului de editare.

Când se acceptă caractere introduse de la utilizator, în oricare ex modul de comandă sau ex introducerea textului
mod, ex va permite procesarea intrărilor în modul canonic, așa cum este definit în interfețele de sistem
volumul POSIX.1‐2008.

Dacă în ex modul de introducere a textului:

1. Dacă număr opțiunea de editare este setată, ex va solicita introducerea folosind numărul liniei care
ar fi atribuit liniei dacă este introdus, în formatul specificat pentru ex
număr comanda.

2. Dacă autoindentare opțiunea de editare este setată, ex va solicita introducerea folosind autoindentare
personaje, așa cum este descris de autoindentare opțiunea de editare. autoindentare personajele trebuie
urmați numărul rândului, dacă există.

Dacă în ex modul de comandă:

1. Dacă prompt opțiunea de editare este setată, va fi solicitată introducerea pentru utilizarea unui singur ':'
caracter; în caz contrar, nu va exista nicio promptare.

Caracterele introduse din secțiunile următoare vor avea următoarele efecte asupra
linia de intrare.

Sul
sinopsis:
EOF

Vezi descrierea stty EOF caracter în stty.

Dacă în ex modul de comandă:

În cazul în care EOF caracterul este primul caracter introdus pe linie, linia va fi
evaluat ca și cum ar conține două caractere: a ‐D și a .

În caz contrar, EOF caracterul nu trebuie să aibă o semnificație specială.

Dacă în ex modul de introducere a textului:

Dacă cursorul urmează un autoindentare caracterul, cel autoindentare personaje din
linia va fi modificată astfel încât o parte din următorul caracter de introducere a textului să fie
afișat pe prima coloană a rândului după precedentul shiftwidth opțiunea de editare
limita coloanei și utilizatorului i se va cere din nou introducerea pentru aceeași linie.

În caz contrar, dacă cursorul urmează a "0", care urmează un autoindentare caracter și
il "0" a fost caracterul anterior de introducere a textului, the "0" cu tot autoindentare
caracterele din rând vor fi eliminate, iar utilizatorului i se va cere din nou
intrare pentru aceeași linie.

În caz contrar, dacă cursorul urmează a '^', care urmează un autoindentare caracter și
il '^' a fost caracterul anterior de introducere a textului, the '^' cu tot autoindentare
caracterele din rând vor fi eliminate, iar utilizatorului i se va cere din nou
intrare pentru aceeași linie. In plus autoindentare nivel pentru următoarea linie de intrare
va fi derivat din aceeași linie din care autoindentare nivel pentru curent
linia de intrare a fost derivată.

Altfel, dacă nu există autoindentare sau caractere de introducere a textului în linie, EOF
caracterul va fi aruncat.

În caz contrar, EOF caracterul nu trebuie să aibă o semnificație specială.


sinopsis:

-J

Dacă în ex modul de comandă:

Caută linia de comandă să fie analizată; ‐J va fi mapat la
în acest scop.

Dacă în ex modul de introducere a textului:

Terminați linia curentă. Dacă nu există alte personaje decât autoindentare
caracterele de pe linie, toate caracterele de pe linie vor fi eliminate.

Solicitați introducerea textului pe o nouă linie după linia curentă. Dacă autoindentare edita
opțiunea este setată, un număr adecvat de autoindentare caracterele vor fi adăugate ca a
prefix la linie așa cum este descris de ex autoindentare opțiunea de editare.


sinopsis:


Permite introducerea unui ulterior sau ‐J ca personaj literal, înlăturând
orice semnificație specială pe care o poate avea pentru editor în timpul modului de introducere a textului. The
caracterul va fi reținut și evaluat atunci când linia de comandă este analizată sau reținută și
incluse atunci când textul introdus devine parte din tamponul de editare.

‐V
sinopsis:
-V

Permiteți introducerea oricărui caracter ulterior ca caracter literal, eliminând orice special
ceea ce înseamnă că ar putea avea la editor în timpul modului de introducere a textului. The caracterul ‐V
vor fi eliminate înainte ca linia de comandă să fie analizată sau textul introdus să devină parte din
editați tamponul.

Dacă funcționalitatea „literal next” este realizată de sistemul de bază, așa este
implementare-definit dacă un caracter altul decât ‐V îndeplinește această funcție.

-W
sinopsis:
-W

Aruncați ‐W și cuvântul anterior acestuia în linia de introducere, inclusiv orice
caracterele care urmează cuvântului și precedă -W. Dacă cuvântul ``
funcționalitatea de ștergere este realizată de sistemul de bază, este definită de implementare
fie un personaj altul decât ‐W îndeplinește această funcție.

Comandă Descrieri in ex
Următoarele simboluri sunt folosite în această secțiune pentru a reprezenta modificatorii de comandă. Unele
acești modificatori pot fi omiși, caz în care se vor utiliza valorile implicite specificate.

1adresa O adresă de o singură linie, dată în oricare dintre formele descrise în adresare in ex;
implicit va fi linia curentă ('.'), cu excepția cazului în care se prevede altfel.

Dacă adresa de linie este zero, va fi o eroare, dacă nu se specifică altfel în
următoarele descrieri ale comenzilor.

Dacă tamponul de editare este gol, iar adresa este specificată cu o comandă other
decât =, adăuga, insera, deschide, pune, citit, Sau vizual, sau adresa nu este zero,
va fi o eroare.

2adresa Două adrese care specifică o gamă inclusivă de linii. Dacă nu există adrese
specificat, implicit pentru 2adresa va fi doar linia curentă (".,."), dacă nu
altfel specificat în descrierile următoare ale comenzilor. Dacă o adresă este
specificat, 2adresa va specifica numai acea linie, cu excepția cazului în care se specifică altfel în
următoarele descrieri ale comenzilor.

Va fi o eroare dacă prima adresă este mai mare decât a doua adresă.

Dacă bufferul de editare este gol, iar cele două adrese sunt specificate cu o comandă
în afară de !, scrie, wq, Sau xit comenzi, sau oricare adresa nu este zero, ea
va fi o eroare.

conta Un număr zecimal pozitiv. Dacă conta este specificat, va fi echivalent cu
specificând o adresă suplimentară la comandă, dacă nu se specifică altfel de
următoarele descrieri ale comenzilor. Adresa suplimentară va fi egală cu
ultima adresă specificată pentru comandă (fie explicit, fie implicit) plus
conta-1.

Dacă aceasta ar avea ca rezultat o adresă mai mare decât ultima linie a editării
tampon, acesta va fi corectat pentru a egala ultima linie a tamponului de editare.

steaguri Unul sau mai multe dintre personaje „+”, '-', '#', 'p', Sau 'l' (ea). Steagul
personajele pot fi -separate, si in orice ordine sau combinatie. The
caractere '#', 'p', și 'l' va face ca liniile să fie scrise în format
specificate de imprima comanda cu cea specificată steaguri.

Rândurile care trebuie scrise sunt următoarele:

1. Toate liniile tampon de editare scrise în timpul execuției ex &, ~, listă,
număr, deschide, imprima, s, vizual, și z comenzile vor fi scrise așa cum este specificat
by steaguri.

2. După finalizarea unui ex comanda cu un steag ca argument, the
linia curentă va fi scrisă așa cum este specificat de steaguri, cu excepția cazului în care linia curentă
a fost ultima linie scrisă de comandă.

Personajele „+” și '-' cauzează valoarea liniei curente după
executarea ex comanda care urmează să fie ajustată de adresa de offset așa cum este descris în
adresare in ex. Această ajustare va avea loc înainte ca linia curentă să fie
scris așa cum este descris la 2. de mai sus.

Valoarea implicită pentru steaguri nu va fi niciunul.

tampon Una dintre numeroasele zone denumite pentru păstrarea textului. Buffer-urile numite sunt specificate
prin caracterele alfanumerice ale localizării POSIX. Va fi și unul
tampon ``nenumit''. Când nu este specificat niciun buffer pentru comenzile editorului care utilizează a
tampon, va fi utilizat tamponul nenumit. Comenzi care stochează text în buffer-uri
va stoca textul așa cum era înainte ca comanda să intre în vigoare și va stoca
text care apare mai devreme în fișier înainte de textul care apare mai târziu în fișier,
indiferent de modul în care a fost specificată regiunea textului. Comenzi care stochează text în
bufferele vor stoca textul în buffer-ul nenumit, precum și în orice specificat
tampon.

In ex comenzi, numele buffer-ului sunt specificate ca nume de la sine. În deschis sau
comenzi în modul vizual, numele este precedat de ghilimele duble ('"') caracter.

Dacă numele tampon specificat este un caracter majuscule, iar conținutul tamponului
urmează să fie modificate, tamponul va fi adăugat la, mai degrabă decât să fie
suprascris. Dacă tamponul nu este modificat, specificați numele tamponului în
litere mici și majuscule vor avea rezultate identice.

De asemenea, trebuie să existe tampoane denumite cu numerele de la 1 la 9. În mod deschis și vizual
modul, dacă o regiune de text care include caractere de pe mai mult de o singură linie este
fiind modificat de către vi c or d comenzi, caracterul de mișcare asociat cu
il c or d comenzile specifică faptul că textul tampon va fi în modul linie sau
comenzi %, `, /, ?, (, ), N, n, {, Sau } sunt folosite pentru a defini o regiune de text pentru
il c or d comenzile, conținutul bufferelor de la 1 la 8 va fi mutat în
buffer numit după următoarea valoare numeric mai mare, conținutul tamponului 9
va fi aruncată, iar regiunea de text va fi copiată în tamponul 1. Aceasta
va fi în plus față de copierea textului într-un buffer specificat de utilizator sau fără nume
tampon, sau ambele. Bufferele numerice pot fi specificate ca buffer sursă pentru deschidere
și comenzi în mod vizual; cu toate acestea, specificând un buffer numeric ca scriere
ținta unei comenzi în mod deschis sau vizual trebuie să aibă rezultate nespecificate.

Textul fiecărui buffer trebuie să aibă caracteristica de a fi în fiecare rând sau
modul caracter. Adăugarea de text într-un buffer care nu este gol va seta modul să se potrivească
caracteristica textului care se anexează. Adăugarea de text la un tampon trebuie
provoacă crearea a cel puțin unei linii suplimentare în buffer. Tot textul
stocate în tampoane de ex comenzile trebuie să fie în modul linie. The ex comandă că
utilizați bufferele ca sursă de text, specificați individual modul în care tamponele sunt diferite
modurile sunt gestionate. Fiecare comandă în mod deschis sau vizual care utilizează buffere pentru oricare
scop specifică individual modul textului stocat în buffer și
cum sunt gestionate bufferele diferitelor moduri.

fişier Textul de comandă folosit pentru a obține un nume de cale. Implicit va fi curentul
cale, așa cum a fost definit anterior, caz în care, dacă nu a avut încă un nume de cale curent
stabilit, va fi o eroare, cu excepția cazului în care este menționat în mod expres în
descrierile individuale ale comenzilor care urmează. Dacă textul comenzii conține vreunul
a personajelor '~', '{', '[', '*', '?', „$”, '"', ghilimele, ghilimele simple,
și , va fi supus procesului de ``extindere a carcasei'',
așa cum este descris mai jos; dacă rezultă mai multe căi și comanda
așteaptă doar una, va fi o eroare.

Procesul de extindere a shell-ului în editor se va face după cum urmează. The ex
utilitarul va transmite două argumente programului numit de opțiunea de editare a shell-ului;
primul va fi −c, iar al doilea va fi șirul "ecou" și comanda
textul ca un singur argument. Ieșirea standard și eroarea standard a acesteia
comanda va înlocui textul comenzii.

! Un caracter care poate fi adăugat la numele comenzii pentru a modifica funcționarea acesteia, cum ar fi
detaliate în descrierile individuale ale comenzilor. Cu excepția ex
citit, scrie, și ! comenzile, '!' caracterul va acționa ca un modificator numai dacă
nu sunt caractere între acesta și numele comenzii.

amintit căutare direcţie
vi comenzi N și n începeți să căutați în direcția înainte sau înapoi în
tamponul de editare pe baza unei direcții de căutare memorate, care este inițial
dezactivat și este setat de ex global, v, s, și etichetă comenzile și vi / și ?
comenzi.

Abreviați
sinopsis:
ab[brevia][lhs RHS]

If lhs și RHS nu sunt specificate, scrieți lista curentă de abrevieri și nu faceți nimic
mai mult.

Implementările pot restricționa setul de caractere acceptat în lhs or RHS, cu excepția asta
caractere imprimabile și caracterele nu vor fi restricționate. Adiţional
restricțiile vor fi definite de implementare.

În ambele lhs și RHS, orice caracter poate fi scapat cu a ‐V, caz în care
caracterul nu va fi folosit pentru delimitare lhs din RHS, și evadarea ‐V va fi
aruncată.

În modul de introducere a textului deschis și vizual, dacă nu este un cuvânt sau caracter care nu este scăpat
de către a Caracterul ‐V este introdus după un caracter de cuvânt, se va verifica pentru a
set de caractere care se potrivesc lhs, în textul introdus în timpul acestei comenzi. Dacă este
găsit, efectul va fi ca și cum RHS a fost introdus în loc de lhs.

Setul de caractere care sunt verificate este definit după cum urmează:

1. Dacă nu există caractere introduse înainte de cuvânt și non-cuvânt sau personaje
care a declanșat verificarea, setul de caractere va consta din cuvântul caracter.

2. Dacă caracterul introdus înainte de cuvânt și non-cuvânt sau personaje care
declanșat verificarea este un caracter cuvânt, setul de caractere va consta din
caractere introduse imediat înaintea caracterelor declanșătoare care sunt cuvânt
caractere, plus caracterul cuvântului declanșator.

3. Dacă caracterul introdus înainte de cuvânt și non-cuvânt sau personaje care
declanșat verificarea nu este un caracter cuvânt, setul de caractere va consta din
caracterele care au fost inserate înainte de caracterele declanșătoare care nu sunt niciunul
caractere sau caractere cuvânt, plus caracterul cuvânt declanșator.

Nu este precizat dacă lhs argument introdus pentru ex prescurtare și neabreviat
comenzile este înlocuită în acest mod. Indiferent dacă înlocuirea are loc sau nu,
efectul comenzii va fi ca și când înlocuirea nu ar fi avut loc.

Curent linie: Neschimbat.

Curent coloană: Neschimbat.

Adăuga
sinopsis:
[1adresa] a[pend][!]

Intrați ex modul de introducere a textului; textul introdus va fi plasat după rândul specificat. Dacă linia
este specificat zero, textul va fi plasat la începutul tamponului de editare.

Această comandă va fi afectată de număr și autoindentare opțiuni de editare; urmărind
numele comenzii cu '!' va cauza autoindentare setarea opțiunii de editare pentru a fi comutată
numai durata acestei comenzi.

Curent linie: Setați la ultima linie de intrare; dacă nu au fost introduse linii, setați la valoarea specificată
linie, sau la prima linie a tamponului de editare dacă a fost specificată o linie de zero, sau zero dacă
tamponul de editare este gol.

Curent coloană: Setați la non- .

Argumente
sinopsis:
ar[gs]

Scrieți lista de argumente curentă, cu intrarea curentă din lista de argumente, dacă există, între '['
și ']' caractere.

Curent linie: Neschimbat.

Curent coloană: Neschimbat.

Schimba
sinopsis:
[2adresa] c[hange][!][conta]

Intrați ex modul de introducere a textului; textul introdus va înlocui liniile specificate. Cele specificate
liniile vor fi copiate în bufferul fără nume, care va deveni un buffer în modul linie.

Această comandă va fi afectată de număr și autoindentare opțiuni de editare; urmărind
numele comenzii cu '!' va cauza autoindentare setarea opțiunii de editare pentru a fi comutată
numai durata acestei comenzi.

Curent linie: Setați la ultima linie de intrare; dacă nu au fost introduse linii, setați la linia de dinainte
prima adresă sau la prima linie a tamponului de editare dacă nu există linii precedând
prima adresă sau la zero dacă bufferul de editare este gol.

Curent coloană: Setați la non- .

Schimba director
sinopsis:
chd[ir][!][director]
cd[!][director]

Schimbați directorul de lucru curent în director.

Daca nu director argumentul este specificat, iar ACASA variabila de mediu este setată la un non-
valoare nulă și nevide, director va fi implicit la valoarea numită în ACASA
variabilă de mediu. Dacă ACASA variabila de mediu este goală sau este nedefinită, the
valoarea implicită a director este definit de implementare.

Daca nu '!' este atașat la numele comenzii, iar tamponul de editare a fost modificat de atunci
ultima scriere completă, iar calea curentă nu începe cu a „/”, ar trebui sa fie
o eroare.

Curent linie: Neschimbat.

Curent coloană: Neschimbat.

Copiați
sinopsis:
[2adresa] co[py] 1adresa [steaguri]
[2adresa] t 1adresa [steaguri]

Copiați liniile specificate după linia de destinație specificată; linia zero precizează că
liniile vor fi plasate la începutul bufferului de editare.

Curent linie: Setați la ultima linie copiată.

Curent coloană: Setați la non- .

Șterge
sinopsis:
[2adresa] d[alege][tampon][conta][steaguri]

Ștergeți liniile specificate într-un buffer (implicit pentru bufferul nenumit), care va
devin un buffer în mod linie.

Steaguri pot urma imediat numele comenzii; vedea Comandă Linie Analizare in ex.

Curent linie: Setați la linia care urmează liniilor șterse sau la ultima linie din editare
buffer dacă acea linie depășește sfârșitul tamponului de editare sau la zero dacă tamponul de editare este
gol.

Curent coloană: Setați la non- .

Editati
sinopsis:
e[acest][!][+comandă][fişier]
ex[!][+comandă][fişier]

Daca nu '!' este atașat la numele comenzii, iar tamponul de editare a fost modificat de atunci
ultima scriere completă, va fi o eroare.

If fişier este specificat, înlocuiți conținutul curent al tamponului de editare cu cel curent
conținutul fişierși setați calea curentă la fişier. Dacă fişier nu este specificat, înlocuiți
conținutul curent al buffer-ului de editare cu conținutul curent al fișierului numit de către
numele de cale curent. Dacă, din orice motiv, conținutul actual al fișierului nu poate fi accesat,
tamponul de editare va fi gol.

+comandă opțiunea va fi -delimitat; personaje din cadrul +comandă poate să
fi scăpat precedându-le cu a caracter. The +comandă ar trebui sa fie
interpretat ca o ex comanda imediat după ce conținutul buffer-ului de editare a fost
înlocuite și linia și coloana curente au fost setate.

Dacă tamponul de editare este gol:

Curent linie: Setați la 0.

Curent coloană: Setați la 1.

În caz contrar, dacă este executat în timp ce în ex modul de comandă sau dacă +comandă argumentul este specificat:

Curent linie: Setați la ultima linie a tamponului de editare.

Curent coloană: Setați la non- .

În caz contrar, dacă fişier este omis sau are ca rezultat calea curentă:

Curent linie: Setați la prima linie a tamponului de editare.

Curent coloană: Setați la non- .

În caz contrar, dacă fişier este același cu ultimul fișier editat, linia și coloana vor fi setate
după cum urmează; dacă fișierul a fost editat anterior, linia și coloana pot fi setate după cum urmează:

Curent linie: Setați la ultima valoare păstrată când acel fișier a fost editat ultima dată. Dacă această valoare este
nu este o linie validă în noul buffer de editare, setată la prima linie a tamponului de editare.

Curent coloană: Dacă linia curentă a fost setată la ultima valoare păstrată când a fost ultimul fișier
editat, setat la ultima valoare păstrată când fișierul a fost editat ultima dată. În caz contrar, sau dacă
ultima valoare nu este o coloană validă în noul buffer de editare, setată la non- .

In caz contrar:

Curent linie: Setați la prima linie a tamponului de editare.

Curent coloană: Setați la non- .

Fișier
sinopsis:
f[cât][fişier]

În cazul în care o fişier este specificat argumentul, calea alternativă va fi setată la curent
pathname, iar calea curentă va fi setată la fişier.

Scrieți un mesaj informativ. Dacă fișierul are o cale curentă, acesta va fi inclus
în acest mesaj; în caz contrar, mesajul va indica faptul că nu există un nume de cale curent.
Dacă tamponul de editare conține linii, numărul de linie curent și numărul de linii din
tamponul de editare va fi inclus în acest mesaj; în caz contrar, mesajul indică faptul că
tamponul de editare este gol. Dacă tamponul de editare a fost modificat de la ultima finalizare
scrie, acest fapt va fi inclus în acest mesaj. Dacă numai în citire opțiunea de editare este setată,
acest fapt va fi inclus în acest mesaj. Mesajul poate conține alte nespecificate
informaţii.

Curent linie: Neschimbat.

Curent coloană: Neschimbat.

Caritate
sinopsis:
[2adresa] g[lobală] /model/ [comenzi]
[2adresa] v/model/ [comenzi]

Opțional '!' caracter după global comanda va fi aceeași cu executarea v
comanda.

If model este gol (de exemplu, „//”) sau nespecificat, ultima expresie regulată utilizată
în comanda editor va fi folosită ca model. model poate fi delimitat de
caractere (afișate în Sinopsis), precum și orice caractere non-alfanumerice sau non-
în afară de , , , sau ghilimele duble.

Dacă nu sunt specificate linii, liniile vor fi implicit la întregul fișier.

global și v comenzile sunt în mod logic operații în două treceri. În primul rând, marcați liniile din interior
liniile specificate pentru care linia excluzând terminarea chibrituri
(global) sau nu se potrivește (v or global!) modelul specificat. În al doilea rând, executați ex
comenzile date de comenzi, cu linia curentă ('.') setat la fiecare linie marcată. Daca un
apare o eroare în timpul acestui proces sau conținutul buffer-ului de editare este înlocuit (pentru
exemplu, de către ex edita: comandă) va fi scris un mesaj de eroare și nu mai există comenzi
rezultate din executarea acestei comenzi vor fi procesate.

Multiplu ex comenzile pot fi specificate prin introducerea mai multor comenzi pe o singură linie folosind
A să le delimiteze, sau câte una pe linie, scăpând fiecare cu
.

Dacă nu sunt specificate comenzi:

1. Dacă în ex modul de comandă, va fi ca și cum imprima au fost specificate comanda.

2. În caz contrar, nu va fi executată nicio comandă.

Pentru adăuga, Schimbare, și insera comenzile, textul introdus va fi inclus ca parte a
comanda și terminarea poate fi omis dacă comanda încheie lista de
comenzi. The deschide și vizual comenzile pot fi specificate ca una dintre comenzi, în care
în cazul în care fiecare linie marcată va determina editorul să intre în modul deschis sau vizual. Dacă este deschis sau
se iese din modul vizual folosind butonul vi Q comanda, linia curentă va fi setată la următoarea
linia marcată și modul deschis sau vizual reintrodus, până când lista liniilor marcate este
epuizat.

global, v, și anula comenzile nu pot fi folosite în comenzi. Liniile marcate pot fi șterse
prin comenzi executate pentru liniile care apar mai devreme în fișier decât liniile marcate. În
în acest caz, nu vor fi executate comenzi pentru liniile șterse.

Dacă direcția de căutare memorată nu este setată, global și v comenzile îl vor seta la
redirecţiona.

autoimprimare și autoindentare opțiunile de editare vor fi inhibate pe durata g or
v comanda.

Curent linie: Dacă nu este executată nicio comandă, setați la ultima linie marcată. Altfel, ca
specificat pentru executat ex comenzi.

Curent coloană: Dacă nu sunt executate comenzi, setați la non- ; in caz contrar, asa cum este specificat
pentru individ ex comenzi.

Insera
sinopsis:
[1adresa] i[nsert][!]

Intrați ex modul de introducere a textului; textul introdus va fi plasat înaintea liniei specificate. Dacă
linia este zero sau 1, textul va fi plasat la începutul tamponului de editare.

Această comandă va fi afectată de număr și autoindentare opțiuni de editare; urmărind
numele comenzii cu '!' va cauza autoindentare setarea opțiunii de editare pentru a fi comutată
numai durata acestei comenzi.

Curent linie: Setați la ultima linie de intrare; dacă nu au fost introduse linii, setați la linia de dinainte
linia specificată sau la prima linie a tamponului de editare dacă nu există linii
precedând linia specificată sau zero dacă tamponul de editare este gol.

Curent coloană: Setați la non- .

Alatura-te
sinopsis:
[2adresa] j[Salut][!][conta][steaguri]

If conta este specificat:

Dacă nu a fost specificată nicio adresă, alătura comanda se va comporta ca și cum 2adresa Au fost
linia curentă și linia curentă plus conta (.,. + conta).

Dacă a fost specificată o adresă, alătura comanda se va comporta ca și cum 2adresa Au fost
adresa specificată și adresa specificată plus conta (adresă,adresă + conta).

Dacă au fost specificate două adrese, alătura comanda se va comporta ca și cum ar fi o comandă suplimentară
adresa, egală cu ultima adresă plus conta −1 (adresa1,adresa2,adresa2 + conta −1),
a fost specificat.

Dacă aceasta ar avea ca rezultat o a doua adresă mai mare decât ultima linie a editării
tampon, acesta va fi corectat pentru a fi egal cu ultima linie a tamponului de editare.

Daca nu conta este specificat:

Dacă nu a fost specificată nicio adresă, alătura comanda se va comporta ca și cum 2adresa Au fost
linia curentă și linia următoare (.,. +1).

Dacă a fost specificată o adresă, alătura comanda se va comporta ca și cum 2adresa Au fost
adresa specificată și linia următoare (adresă,adresă + 1).

Uniți textul din liniile specificate împreună într-o singură linie, care va înlocui
liniile specificate.

În cazul în care o '!' caracterul este atașat la numele comenzii, the alătura va fi fără
modificarea oricărei linii, independent de localitatea curentă.

În caz contrar, în localitatea POSIX, setați linia curentă la prima dintre liniile specificate,
și apoi, pentru fiecare rând ulterioară, procedați după cum urmează:

1. Înlăturați liderul caractere de pe linia de alăturat.

2. Dacă linia de alăturat este acum goală, ștergeți-o și omiteți pașii de la 3 la 5.

3. Dacă linia curentă se termină în a , sau primul caracter al liniei care urmează să fie alăturat
este ')' caracter, uniți liniile fără alte modificări.

4. Dacă ultimul caracter al liniei curente este a '.', uniți liniile cu două
personaje dintre ele.

5. În caz contrar, unește liniile cu un singur între ele.

Curent linie: Setați la prima linie specificată.

Curent coloană: Setați la non- .

Listă
sinopsis:
[2adresa] l[este][conta][steaguri]

Această comandă va fi echivalentă cu ex comanda:

[2adresa] p[rintați][conta] l[steaguri]

Vedea .

Hartă
sinopsis:
Hartă[!][lhs RHS]

If lhs și RHS nu sunt specificate:

1. Dacă '!' este specificat, scrieți lista curentă a hărților modului de introducere a textului.

2. În caz contrar, scrieți lista curentă a hărților modului de comandă.

3. Nu mai face nimic.

Implementările pot restricționa setul de caractere acceptat în lhs or RHS, cu excepția asta
caractere imprimabile și caracterele nu vor fi restricționate. Adiţional
restricțiile vor fi definite de implementare. În ambele lhs și RHS, orice personaj poate fi
scăpat cu o ‐V, caz în care caracterul nu va fi folosit pentru delimitare lhs
din RHS, și evadarea ‐V va fi aruncat.

Dacă personajul '!' este anexat la Hartă numele comenzii, maparea va fi eficientă
în timpul modului de introducere a textului deschis sau vizual, mai degrabă decât deschide or vizual modul de comandă. Asta permite
lhs a avea două diferite Hartă definiții în același timp: una pentru modul de comandă și una
pentru modul de introducere a textului.

Pentru mapările în modul de comandă:

Cand lhs este introdus ca orice parte a unui vi comandă în modul deschis sau vizual (dar nu
ca parte a argumentelor la comandă), acțiunea va fi ca și cum ar fi
corespunzător RHS fusese introdus.

Dacă orice caracter din comandă, altul decât primul, este eliminat folosind a
-V caracter, acel caracter nu va face parte dintr-o potrivire cu an lhs.

Nu este specificat dacă implementările vor suporta Hartă comenzi unde lhs
are mai mult decât un singur caracter în lungime, unde primul caracter al lhs is
imprimabil.

If lhs conține mai mult de un caracter și primul caracter este '#', urmat de
o secvență de cifre corespunzătoare unei taste funcționale numerotate, atunci când aceasta
tasta funcțională este tastata la care va fi mapată RHS. Alte caractere decât cifre
în urma a '#' caracterul reprezintă și tasta funcțională numită de caractere
în lhs în urma '#' și poate fi mapat către RHS. Nu este specificat cum
tastele funcționale sunt numite sau ce taste funcționale sunt acceptate.

Pentru mapările modului de introducere a textului:

Cand lhs este introdusă ca orice parte de text introdusă în introducerea textului deschisă sau vizuală
moduri, acțiunea va fi ca și cum ar fi corespunzătoare RHS fusese introdus.

Dacă orice caracter din textul introdus este eliminat folosind a ‐V caracter, că
caracterul nu trebuie să facă parte dintr-o potrivire cu un lhs.

Nu este precizat dacă lhs text introdus pentru următoarele Hartă or dezhare comenzi
este înlocuit cu RHS text în scopul afișajului pe ecran; indiferent de
indiferent dacă afișajul apare sau nu ca fiind corespunzător RHS textul a fost introdus,
efectul comenzii va fi ca și cum lhs textul a fost introdus.

Dacă doar o parte din lhs este introdus, nu este specificat cât timp va aștepta editorul
caractere suplimentare, posibil care se potrivesc, înainte de a trata caracterele deja introduse ca
nu se potrivesc cu lhs.

RHS caracterele vor fi ele însele supuse remapării, cu excepția cazului în care se specifică altfel de
il remaparea opțiunea de editare, cu excepția cazului în care caracterele din lhs apar ca caractere prefix în
RHS, acele caractere nu vor fi remapate.

La terminalele în modul bloc, maparea nu trebuie să aibă loc imediat (de exemplu, poate apărea
după ce terminalul transmite un grup de caractere către sistem), dar va realiza
aceleași rezultate ca și cum ar fi avut loc imediat.

Curent linie: Neschimbat.

Curent coloană: Neschimbat.

marca
sinopsis:
[1adresa] ma[rk] caracter
[1adresa] k caracter

Implementările vor sprijini caracter valorile unei singure litere mici din POSIX
local și caracterele ghilimele și ghilimelele simple; suportul altor personaje este
definit de implementare.

Dacă se execută vi m comanda, setați marcajul specificat la linia curentă și pe baza 1
caracter numerotat referit de coloana curentă, dacă există; în caz contrar, poziția coloanei 1.

În caz contrar, setați marcajul specificat la linia specificată și numerotați mai întâi pe baza 1
non- non- în linie, dacă există; în caz contrar, ultimul non- în
linie, dacă există; în caz contrar, poziția coloanei 1.

Marcajul trebuie să rămână asociat cu linia până când marcajul este resetat sau până când linia este
sters. Dacă o linie ștearsă este restaurată de un ulterior anula comanda, orice marcaj anterior
asociate cu linia, care nu au fost resetate, vor fi de asemenea restaurate. Orice utilizare a
un marcaj care nu este asociat cu o linie curentă din memoria tampon de editare va fi o eroare.

Semnele ` și ' va fi setat așa cum este descris anterior, imediat înainte de următoarele
evenimentele apar în editor:

1. Utilizarea „$” ca o ex adresa

2. Utilizarea unui număr zecimal pozitiv ca an ex adresa

3. Utilizarea unei comenzi de căutare ca un ex adresa

4. Utilizarea unei referințe de marcă ca un ex adresa

5. Utilizarea următoarelor comenzi în mod deschis și vizual: ‐], %, (, ), [, ], {,
}

6. Utilizarea următoarelor comenzi în mod deschis și vizual: ', G, H, L, M, z dacă
linia curentă se va schimba ca urmare a comenzii

7. Utilizarea comenzilor mod deschis și vizual: /, ?, N, `, n dacă linia curentă sau
coloana se va modifica ca urmare a comenzii

8. Utilizarea ex comenzi de mod: z, anula, global, v

Pentru regulile 1., 2., 3. și 4., ` și ' marcajele nu se stabilesc dacă ex comanda este
analizat conform regulii 6.a. în Comandă Linie Analizare in ex.

Pentru regulile 5., 6. și 7., ` și ' marcajele nu vor fi setate dacă comenzile sunt folosite ca
comenzi de mișcare în modul deschis și vizual.

Pentru regulile 1., 2., 3., 4., 5., 6., 7. și 8., ` și ' marcajele nu se stabilesc dacă
comanda eșuează.

` și ' marcajele vor fi stabilite așa cum este descris anterior, de fiecare dată când conținutul editării
buffer-ul sunt înlocuiți (inclusiv editarea bufferului inițial), dacă este deschis sau vizual
modul, sau dacă este în ex modul și tamponul de editare nu este gol, înaintea oricăror comenzi sau mișcări
(inclusiv comenzile sau mișcările specificate de −c or −t opțiuni sau +comandă
argument) sunt executate în tamponul de editare. Dacă se află în modul deschis sau vizual, semnele trebuie să fie
setat ca și cum ar fi executat vi m comanda; în caz contrar, ca și cum ar fi executat ex marca comanda.

La schimbarea de la ex modul pentru a deschide sau modul vizual, dacă ` și ' semnele nu sunt deja
Seteaza ` și ' marcajele vor fi stabilite așa cum este descris anterior.

Curent linie: Neschimbat.

Curent coloană: Neschimbat.

Muta
sinopsis:
[2adresa] m[Ove] 1adresa [steaguri]

Mutați liniile specificate după linia de destinație specificată. O destinație a liniei zero
specifică că liniile vor fi plasate la începutul tamponului de editare. Ar trebui sa fie
o eroare dacă linia de destinație se află în intervalul de linii de mutat.

Curent linie: Setați la ultima dintre liniile mutate.

Curent coloană: Setați la non- .

Pagina Următoare →
sinopsis:
n[ext][!][+comandă][fişier ...]

Daca nu '!' este atașat la numele comenzii, iar tamponul de editare a fost modificat de atunci
ultima scriere completă, va fi o eroare, cu excepția cazului în care fișierul este scris cu succes ca
specificate de scriere automată opțiune.

Dacă sunt specificate unul sau mai multe fișiere:

1. Setați lista de argumente la numele fișierelor specificate.

2. Setați referința curentă a listei de argumente să fie prima intrare din lista de argumente.

3. Setați calea curentă la primul nume de fișier specificat.

In caz contrar:

1. Va fi o eroare dacă nu mai există nume de fișiere în lista de argumente după
nume de fișier la care se face referire în prezent.

2. Setați calea curentă și referința curentă a listei de argumente la numele fișierului de după
numele fișierului la care se face referire în prezent în lista de argumente.

Înlocuiți conținutul buffer-ului de editare cu conținutul fișierului numit de curent
nume cale. Dacă din orice motiv conținutul fișierului nu poate fi accesat, editați bufferul
va fi goală.

Această comandă va fi afectată de scriere automată și scrie orice opțiuni de editare.

+comandă opțiunea va fi -delimitat; caracterele pot fi scăpate de
precedându-le cu a caracter. The +comandă va fi interpretat ca un ex
comanda imediat după ce conținutul buffer-ului de editare a fost înlocuit și
linia și coloana curente au fost setate.

Curent linie: Setați așa cum este descris pentru edita comanda.

Curent coloană: Setați așa cum este descris pentru edita comanda.

Număr
sinopsis:
[2adresa] nu[mber][conta][steaguri]
[2adresa] #[conta][steaguri]

Aceste comenzi trebuie să fie echivalente cu ex comanda:

[2adresa] p[rintați][conta] #[steaguri]

Vedea .

Operatii Deschise
sinopsis:
[1adresa] o[stilou] /model/ [steaguri]

Această comandă nu trebuie să fie acceptată pe terminale în modul bloc sau terminale cu insuficientă
capabilități. Dacă intrarea standard, ieșirea standard sau eroarea standard nu sunt terminale
dispozitive, rezultatele sunt nespecificate.

Intrați în modul deschis.

Delimitatorul final poate fi omis din model la sfârșitul liniei de comandă. Dacă
model este gol (de exemplu, „//”) sau nespecificat, ultima expresie regulată folosită în
editorul va fi folosit ca model. Modelul poate fi delimitat de
caractere (prezentate în Sinopsis), precum și orice caractere alfanumerice sau non- în afară de
, , , sau ghilimele duble.

Curent linie: Setați la linia specificată.

Curent coloană: Setați la non- .

păstra
sinopsis:
pre[servi]

Salvați tamponul de editare într-o formă care poate fi recuperată ulterior utilizând −r opțiune sau prin
folosind ex recupera comanda. După ce fișierul a fost păstrat, va fi un mesaj de e-mail
trimis utilizatorului. Acest mesaj va fi citit prin invocarea mail x utilitate. The
mesajul trebuie să conțină numele fișierului, ora păstrării și an ex comandă
care ar putea fi folosit pentru a recupera fișierul. Informații suplimentare pot fi incluse în e-mail
mesaj.

Curent linie: Neschimbat.

Curent coloană: Neschimbat.


sinopsis:
[2adresa] p[rintați][conta][steaguri]

Scrieți rândurile adresate. Comportamentul este nespecificat dacă numărul de coloane de pe
afișarea este mai mică decât numărul de coloane necesare pentru a scrie un singur caracter în
rânduri în curs de scris.

Caractere neimprimabile, cu excepția , va fi scris ca fiind definit de implementare
secvențe cu mai multe caractere.

În cazul în care # este specificat steag sau număr opțiunea de editare este setată, fiecare linie va fi precedată
după numărul rândului său în următorul format:

„%6d ", <linie număr>

În cazul în care l este specificat steag sau listă opțiunea de editare este setată:

1. Caracterele enumerate în volumul Definiții de bază din POSIX.1‐2008, Tabel 5-1,
Evadare secvenţele și asociat Acţiuni va fi scrisă ca evadare corespunzătoare
secvenţă.

2. Caractere neprintabile care nu se află în volumul Definiții de bază din POSIX.1‐2008, Tabel
5-1, Evadare secvenţele și asociat Acţiuni se scrie ca un octal de trei cifre
număr (cu un precedent ) pentru fiecare octet din caracter (cel mai semnificativ
octetul mai întâi).

3. Sfârșitul fiecărei linii va fi marcat cu a „$”, și literal „$” personaje din cadrul
rândul se scrie cu un precedent .

Rândurile lungi vor fi pliate; lungimea la care are loc plierea este nespecificată, dar ar trebui
să fie adecvată pentru terminalul de ieșire, având în vedere numărul de coloane ale terminalului.

Dacă o linie este pliată, și l steag nu este specificat și listă opțiunea de editare nu este setată,
nu se specifică dacă un caracter cu mai multe coloane în poziția de pliere este separat;
nu trebuie aruncat.

Curent linie: Setați la ultima linie scrisă.

Curent coloană: Neschimbat dacă linia curentă este neschimbată; în caz contrar, setați la non- .

Pune
sinopsis:
[1adresa] pu[t][tampon]

Adăugați text din bufferul specificat (în mod implicit, bufferul fără nume) la cel specificat
linia; linia zero specifică faptul că textul va fi plasat la începutul editării
tampon. Fiecare porțiune a unei linii din buffer va deveni o nouă linie în tamponul de editare,
indiferent de modul tamponului.

Curent linie: Setați la ultima linie introdusă în tamponul de editare.

Curent coloană: Setați la non- .

Părăsi
sinopsis:
q[din][!]

Daca nu '!' este atașat la numele comenzii:

1. Dacă tamponul de editare a fost modificat de la ultima scriere completă, acesta va fi un
eroare.

2. Dacă există nume de fișiere în lista de argumente după numele de fișier la care se face referire în prezent,
iar ultima comandă nu a fost a părăsi, wq, xit, Sau ZZ (A se vedea Ieşire) comanda, va fi un
eroare.

În caz contrar, închideți sesiunea de editare.

Citeste
sinopsis:
[1adresa] r[EAD][!][fişier]

If '!' nu este primul non- pentru a urma numele comenzii, o copie a celei specificate
fișierul va fi atașat în tamponul de editare după linia specificată; linia zero specifică
că copia va fi plasată la începutul tamponului de editare. Numărul de linii și
octeții citiți vor fi scrieți. Daca nu fişier este numit, calea curentă va fi
Mod implicit. Dacă nu există un nume de cale curent, atunci fişier va deveni calea curentă. Dacă
nu există un nume de cale curent sau fişier operand, va fi o eroare. Precizând a fişier acea
nu este de tip obișnuit trebuie să aibă rezultate nespecificate.

În caz contrar, dacă fişier este precedat de '!', restul liniei după '!' voi avea '%',
'#', și '!' caracterele s-au extins așa cum este descris în Comandă Linie Analizare in ex.

ex utilitarul va transmite apoi două argumente programului numit de editarea shell-ului
opțiune; primul va fi −c iar al doilea va fi argumentele extinse la citit
comanda ca un singur argument. Intrarea standard a programului va fi setată la
intrare standard a ex programul când a fost invocat. Eroarea standard și standardul
ieșirea programului va fi atașată în buffer-ul de editare după linia specificată.

Fiecare linie din fișierul copiat sau ieșirea programului (așa cum este delimitată de personaje sau
sfârşitul fişierului sau ieşirii dacă nu este imediat precedat de a ), ar trebui sa fie
o linie separată în tamponul de editare. Orice apariții ale și
perechile din ieșire vor fi tratate ca simple personaje.

Sensul special al '!' în urma citit comanda poate fi suprascrisă prin evadare
ea cu a caracter.

Curent linie: Dacă nu sunt adăugate linii în memoria tampon de editare, neschimbată. În caz contrar, dacă este deschis
sau modul vizual, setat la prima linie introdusă în tamponul de editare. În caz contrar, setați la
ultima linie introdusă în tamponul de editare.

Curent coloană: Setați la non- .

Recupera
sinopsis:
rec[peste][!] fişier

Daca nu '!' este atașat la numele comenzii, iar tamponul de editare a fost modificat de atunci
ultima scriere completă, va fi o eroare.

Daca nu fişier este specificat operand, atunci va fi folosit calea curentă. Dacă nu există
calea curentă sau fişier operand, va fi o eroare.

Dacă nu au fost salvate anterior informații de recuperare despre fişier, recupera comanda trebuie
se comportă identic cu edita comandă și un mesaj informativ în acest sens trebuie
fi scris.

În caz contrar, setați calea curentă la fişierși înlocuiți conținutul curent al editării
tampon cu conținutul recuperat de fişier. Dacă există mai multe instanțe ale fișierului
pentru a fi recuperat, cel mai recent salvat va fi recuperat și un informativ
va fi mesajul că există versiuni anterioare ale fișierului care pot fi recuperate
scris. Editorul se va comporta ca și cum conținutul buffer-ului de editare ar fi fost deja
modificat.

Curent fişier: Setați așa cum este descris pentru edita comanda.

Curent coloană: Setați așa cum este descris pentru edita comanda.

Înapoi
sinopsis:
rew[ind][!]

Daca nu '!' este atașat la numele comenzii, iar tamponul de editare a fost modificat de atunci
ultima scriere completă, va fi o eroare, cu excepția cazului în care fișierul este scris cu succes ca
specificate de scriere automată opțiune.

Dacă lista de argumente este goală, va fi o eroare.

Referința curentă a listei de argumente și calea curentă vor fi setate la prima
nume de fișier în lista de argumente.

Înlocuiți conținutul buffer-ului de editare cu conținutul fișierului numit de curent
nume cale. Dacă din orice motiv conținutul fișierului nu poate fi accesat, editați bufferul
va fi goală.

Această comandă va fi afectată de scriere automată și scrie orice opțiuni de editare.

Curent linie: Setați așa cum este descris pentru edita comanda.

Curent coloană: Setați așa cum este descris pentru edita comanda.

set
sinopsis:
se[t][opțiune[=[valoare]] ...][Nu.opțiune ...][opțiune? ...][toate]

Când nu sunt specificate argumente, scrieți valoarea lui durată opțiunea de editare și acele opțiuni
ale căror valori au fost modificate față de setările implicite; când argumentul toate is
specificat, scrieți toate valorile opțiunilor.

Dând un nume de opțiune urmat de caracter '?' va determina valoarea curentă a acesteia
opțiunea de scris. The '?' poate fi separat de numele opțiunii prin zero sau mai mult
personaje. The '?' va fi necesar numai pentru opțiunile cu valoare booleană. boolean
opțiunilor li se pot da valori prin formular set opțiune pentru a le activa sau set Nu.opțiune a intoarce
le scoate; opțiunile șir și numerice pot fi atribuite prin formular set opțiune=valoare. Orice
caracterele din șiruri de caractere pot fi incluse așa cum sunt precedând fiecare cu un
evadând . Mai mult de o opțiune poate fi setată sau listată printr-o singură comandă de set
prin specificarea mai multor argumente, fiecare separat de celălalt prin unul sau mai multe
caractere.

Vedea Editati Opţiuni in ex pentru detalii despre anumite opțiuni.

Curent linie: Neschimbat.

Curent coloană: Neschimbat.

Coajă
sinopsis:
SH[cot]

Invocați programul numit în coajă opțiunea de editare cu un singur argument −i (interactiv
modul). Editarea va fi reluată la ieșirea programului.

Curent linie: Neschimbat.

Curent coloană: Neschimbat.

Sursă
sinopsis:
asa de[urce] fişier

Citiți și executați ex comenzi de la fişier. Liniile din fișier care sunt linii goale vor fi
ignorat.

Curent linie: După cum este specificat pentru individ ex comenzi.

Curent coloană: După cum este specificat pentru individ ex comenzi.

Substitui
sinopsis:
[2adresa] s[substitut][/model/repl/[Opțiuni][conta][steaguri]]
[2adresa] &[Opțiuni][conta][steaguri]]
[2adresa] ~[Opțiuni][conta][steaguri]]

Înlocuiți prima instanță a modelului model de sfoară repl pe fiecare specificat
linia. (Vedea Regulat Expresii in ex și Înlocuire Corzi in ex.) Orice non-alfabetic,
non- delimitator altul decât , '|', , sau pot fi folosite ghilimele duble
în loc de „/”. caracterele pot fi folosite pentru a scăpa delimitatorilor,
personaje și alte personaje speciale.

Delimitatorul final poate fi omis din model sau de la repl la sfârşitul comenzii
linia. Dacă ambele model și repl nu sunt specificate sau sunt goale (de exemplu, „//”),
ultimul s comanda se repetă. Doar daca model nu este specificat sau este gol, ultimul
expresia regulată folosită în editor va fi folosită ca model. Doar daca repl nu este
specificat sau este gol, modelul nu va fi înlocuit cu nimic. Dacă întregul
modelul de înlocuire este '%', ultimul model de înlocuire a unui s se va folosi comanda.

Intrând a în repl (ceea ce necesită o evadare în ex mod
și o evadare ‐V în deschis sau vi mod) va împărți linia în acel punct,
creând o nouă linie în tamponul de editare. The vor fi aruncate.

If Opțiuni include scrisoarea 'g' (global), toate instanțele care nu se suprapun ale modelului
în linie va fi înlocuit.

If Opțiuni include scrisoarea 'c' (a confirma), apoi înainte de fiecare înlocuire linia trebuie
fi scris; linia scrisă trebuie să reflecte toate înlocuirile anterioare. In cele ce urmeaza
linia, caracterele vor fi scrise sub caracterele din rândul care sunt
inainte de model să fie înlocuit și '^' personaje scrise sub personaje
inclus în model a fi înlocuit. The ex utilitatea va aștepta apoi un răspuns de la
utilizatorul. Un răspuns afirmativ va determina înlocuirea, în timp ce oricare alta
intrarea nu va face înlocuirea. Un răspuns afirmativ constă dintr-un rând
cu răspunsul afirmativ (așa cum este definit de localitatea curentă) la începutul
linia. Această linie va fi supusă editării în același mod ca și ex Linie de comanda.

Dacă este întrerupt (vezi secțiunea EVENIMENTE ASINCRONE), orice modificări confirmate de către
utilizatorul va fi păstrat în tamponul de editare după întrerupere.

Dacă direcția de căutare memorată nu este setată, s comanda îl va seta să înainteze.

În cel de-al doilea Sinopsis, & comanda va repeta înlocuirea anterioară, ca și cum ar fi &
comanda au fost înlocuite cu:

s/model/repl/

Unde model și repl sunt cele specificate în cele precedente s, &, Sau ~ comanda.

În al treilea Sinopsis, cel ~ comanda va repeta înlocuirea anterioară, ca și cum ar fi '~'
au fost înlocuite cu:

s/model/repl/

Unde model va fi ultima expresie regulată specificată editorului și repl trebuie
să fie din înlocuirea anterioară (inclusiv & și ~) comanda.

Aceste comenzi vor fi afectate de LC_MESSAGES variabilă de mediu.

Curent linie: Setați la ultima linie în care a avut loc o înlocuire sau, neschimbată dacă nu
înlocuirea a avut loc.

Curent coloană: Setați la non- .

Suspenda
sinopsis:
su[petrece][!]
st[op][!]

Permite controlului să revină la procesul de invocare; ex se suspendă ca și cum ar fi avut
a primit semnalul SIGTSTP. Suspendarea va avea loc numai dacă este activat controlul locului de muncă
shell-ul de invocare (vezi descrierea lui set −m).

Aceste comenzi vor fi afectate de scriere automată și scrie orice opțiuni de editare.

Actuală susp personaj (vezi stty) va fi echivalent cu suspenda comanda.

Etichetă
sinopsis:
ta[g][!] etichetă

Rezultatele sunt nespecificate dacă formatul unui fișier de etichete nu este așa cum este specificat de ctag-uri
utilitate (vezi ctag-uri) Descriere.

etichetă comanda va căuta etichetă în fișierele de tag la care face referire etichetă edita
opțiunea, în ordinea în care sunt specificate, până la o referire la etichetă e gasit. Fișiere
va fi căutat de la început până la sfârșit. Dacă nu se găsește nicio referință, va fi o eroare
și va fi scris un mesaj de eroare în acest sens. Dacă referința nu este găsită, sau dacă
apare o eroare în timpul procesării unui fișier la care se face referire în etichetă opțiunea de editare, va fi un
eroare și va fi scris un mesaj de eroare la prima apariție a unei astfel de erori.

În caz contrar, dacă fișierul de etichete conținea un model, modelul va fi tratat ca obișnuit
expresie folosită în editor; de exemplu, în sensul s comanda.

În cazul în care etichetă se află într-un fișier cu un alt nume decât calea curentă, setați
calea curentă la numele acelui fișier și înlocuiți conținutul buffer-ului de editare
cu conținutul acelui fișier. În acest caz, dacă nu '!' este atașat la numele comenzii,
și tamponul de editare a fost modificat de la ultima scriere completă, va fi o eroare,
cu excepția cazului în care fișierul este scris cu succes așa cum este specificat de scriere automată opțiune.

Această comandă va fi afectată de scriere automată, etichetă, lungimea etichetei, și scrie orice edita
opțiuni.

Curent linie: Dacă fișierul de etichete conținea un număr de linie, setați la acel număr de linie. Dacă
numărul de linie este mai mare decât ultima linie din memoria tampon de editare, va fi un mesaj de eroare
scris și linia curentă va fi setată așa cum este specificat pentru edita comanda.

Dacă fișierul de etichete conținea un model, setați la prima apariție a modelului în
fişier. Dacă nu se găsește niciun model care se potrivește, se va scrie un mesaj de eroare și va fi curent
linia va fi setată așa cum este specificat pentru edita comanda.

Curent coloană: Dacă fișierul de etichete conținea o referință de număr de linie și acel număr de linie
nu a fost mai mare decât ultima linie din memoria tampon de editare sau dacă fișierul de etichete conținea a
model și acel model a fost găsit, setat la non- . În caz contrar, setați așa cum este specificat pentru
il edita comanda.

Neabreviat
sinopsis:
una[bbrev] lhs

If lhs nu este o intrare în lista curentă de abrevieri (vezi Abreviați), ar trebui sa fie
o eroare. În caz contrar, șterge lhs din lista de abrevieri.

Curent linie: Neschimbat.

Curent coloană: Neschimbat.

Anula
sinopsis:
u[nNu]

Inversați modificările făcute de ultima comandă care a modificat conținutul editării
tampon, inclusiv anula. În acest scop, global, v, deschide, și vizual comenzi și
sunt luate în considerare comenzile rezultate din execuțiile bufferului și expansiunile de caractere mapate
comenzi unice.

Dacă nicio acțiune care poate fi anulată nu a precedat anula comanda, va fi o eroare.

În cazul în care anula comanda restabilește liniile care au fost marcate, marcajul va fi de asemenea restaurat
cu excepția cazului în care a fost resetat după ștergerea liniilor.

Curent linie:

1. Dacă sunt adăugate sau modificate linii în fișier, setați la prima linie adăugată sau modificată.

2. Setați la linia înainte de prima linie ștearsă, dacă aceasta există.

3. Setați la 1 dacă tamponul de editare nu este gol.

4. Setați la zero.

Curent coloană: Setați la non- .

Anulează harta
sinopsis:
unm[ap][!] lhs

If '!' este atașat la numele comenzii și dacă lhs nu este o intrare în lista de text
definițiile hărții modului de introducere, va fi o eroare. În caz contrar, șterge lhs din lista de
definițiile hărții modului de introducere a textului.

Daca nu '!' este atașat la numele comenzii și dacă lhs nu este o intrare în lista de
definițiile hărții modului de comandă, va fi o eroare. În caz contrar, șterge lhs din lista de
definițiile hărții modului de comandă.

Curent linie: Neschimbat.

Curent coloană: Neschimbat.

Versiune
sinopsis:
ve[rsion]

Scrieți un mesaj care să conțină informații despre versiune pentru editor. Formatul mesajului
este nespecificat.

Curent linie: Neschimbat.

Curent coloană: Neschimbat.

Vizual
sinopsis:
[1adresa] vi[dulce][tip][conta][steaguri]

If ex este în prezent în modul deschis sau vizual, Sinopsis și comportamentul comenzii vizuale
va fi la fel ca edita comanda, așa cum este specificat de Editati.

În caz contrar, această comandă nu trebuie să fie acceptată pe terminale în modul bloc sau terminale cu
capacități insuficiente. Dacă intrarea standard, ieșirea standard sau eroarea standard nu sunt
dispozitive terminale, rezultatele sunt nespecificate.

If conta este specificată, valoarea lui fereastră opțiunea de editare va fi setată la conta (la fel de
descris în fereastră). Dacă '^' a fost specificat și caracterul de tip, the fereastră edita
opțiunea va fi setată înainte de a fi utilizată de caracterul tip.

Intrați în modul vizual. Dacă tip nu este specificat, va fi ca și cum a tip of „+” a fost
specificat. The tip va produce următoarele efecte:

+ Plasați începutul liniei specificate în partea de sus a afișajului.

- Așezați capătul liniei specificate în partea de jos a afișajului.

. Plasați începutul liniei specificate în mijlocul afișajului.

^ Dacă linia specificată este mai mică sau egală cu valoarea lui fereastră opțiunea de editare,
setați linia la 1; în caz contrar, reduceți linia cu valoarea lui fereastră edita
opțiunea minus 1. Așezați începutul acestei linii cât mai aproape de partea de jos a
linii afișate pe cât posibil, în timp ce se afișează în continuare valoarea lui fereastră edita
opțiune numărul de linii.

Curent linie: Setați la linia specificată.

Curent coloană: Setați la non- .

Scrie
sinopsis:
[2adresa] w[rit][!][>>][fişier]
[2adresa] w[rit][!][fişier]
[2adresa] wq[!][>>][fişier]

Dacă nu sunt specificate linii, liniile vor fi implicit la întregul fișier.

Comanda wq va fi echivalent cu a scrie comanda urmata de a părăsi comanda; wq!
va fi echivalent cu scrie! urmată de părăsi. În ambele cazuri, dacă scrie comandă
eșuează, părăsi nu va fi încercat.

Dacă numele comenzii nu este urmat de unul sau mai multe personaje, sau fişier nu este
precedat de un '!' caracterul, cel scrie va fi la un dosar.

1. Dacă >> argumentul este specificat și fișierul există deja, liniile vor fi
atașat la fișier în loc să înlocuiască conținutul acestuia. Dacă >> argumentul este
specificat și fișierul nu există deja, nu este specificat dacă scrierea
va proceda ca și cum >> argumentul nu a fost specificat sau dacă scrierea va eșua.

2. Dacă numai în citire opțiunea de editare este setată (vezi numai în citire), scrie va eșua.

3. Dacă fişier este specificat și nu este calea curentă, iar fișierul există, the scrie
va eșua.

4. Dacă fişier nu este specificat, va fi folosit calea curentă. Dacă nu există curent
calea, numele scrie comanda va eșua.

5. Dacă este folosit calea curentă, iar calea curentă a fost schimbată de către fişier
or citit comenzi și fișierul există, the scrie va eșua. Dacă scrie is
succes, ulterior scrieNu vor eșua din acest motiv (cu excepția cazului în care curentul
numele de cale este schimbat din nou).

6. Dacă întregul buffer de editare nu este scris și fișierul de scris există, fișierul
scrie va eșua.

Pentru regulile 1., 2., 3. și 5., scrie poate fi forțat prin adăugarea caracterului '!' la
numele comenzii.

Pentru regulile 2., 3. și 5., scrie poate fi forțat prin setarea scrie orice opțiunea de editare.

Testele suplimentare, definite de implementare pot cauza scrie a esua.

Dacă tamponul de editare este gol, va fi scris un fișier fără conținut.

Se scrie un mesaj informativ, notând numărul de linii și octeți scriși.

În caz contrar, dacă comanda este urmată de unul sau mai multe caractere, iar fișierul este
precedat de '!', restul liniei după '!' voi avea '%', '#', și '!'
caracterele s-au extins așa cum este descris în Comandă Linie Analizare in ex.

ex utilitarul va transmite apoi două argumente programului numit de coajă edita
opțiune; primul va fi −c iar al doilea va fi argumentele extinse la scrie
comanda ca un singur argument. Liniile specificate vor fi scrise la intrarea standard
a comenzii. Eroarea standard și ieșirea standard a programului, dacă există, trebuie să fie
scris așa cum este descris pentru imprima comanda. Dacă ultimul caracter din acea ieșire nu este a
, A va fi scris la sfârșitul ieșirii.

Sensul special al '!' în urma scrie comanda poate fi suprascrisă prin evadare
ea cu a caracter.

Curent linie: Neschimbat.

Curent coloană: Neschimbat.

Scrie și Ieşire
sinopsis:
[2adresa] x[it][!][fişier]

Dacă tamponul de editare nu a fost modificat de la ultima finalizare scrie, xit ar trebui sa fie
echivalent cu părăsi comanda, sau dacă a '!' este atașat la numele comenzii, la părăsi!.

In caz contrar, xit va fi echivalent cu wq comanda, sau dacă a '!' este anexat la
nume de comandă, la wq!.

Curent linie: Neschimbat.

Curent coloană: Neschimbat.

iancheu
sinopsis:
[2adresa] ya[nk][tampon][conta]

Copiați liniile specificate în buffer-ul specificat (în mod implicit, tamponul fără nume), care
va deveni un buffer în mod linie.

Curent linie: Neschimbat.

Curent coloană: Neschimbat.

Ajusta Fereastră
sinopsis:
[1adresa] z[!][tip ...][conta][steaguri]

Dacă nu este specificată nicio linie, linia curentă va fi cea implicită; dacă tip este omis ca
Ei bine, valoarea liniei curente va fi mai întâi incrementată cu 1. Dacă se incrementează curentul
linia ar face ca aceasta să fie mai mare decât ultima linie din tamponul de editare, va fi un
eroare.

Dacă există personaje dintre tip argument și precedentul z numele comenzii
sau opțional '!' caracter, va fi o eroare.

If conta este specificată, valoarea lui fereastră opțiunea de editare va fi setată la conta (la fel de
descris în fereastră). dacă conta este omis, acesta va fi implicit de 2 ori valoarea lui
derulaţi opțiunea de editare sau dacă ! a fost specificat, numărul de linii de pe afișaj minus 1.

If tip este omis, atunci conta se vor scrie linii care încep cu linia specificată.
In caz contrar, conta linii care încep cu linia specificată de tip argumentul va fi
scris.

tip argumentul va schimba rândurile de scris. Valorile posibile ale tip zone
urmează:

− Linia specificată va fi decrementată cu următoarea valoare:

(((număr of ``−'' personaje) x conta) −1)

Dacă calculul ar avea ca rezultat un număr mai mic decât 1, va fi o eroare. Scrie
linii din bufferul de editare, începând cu noua valoare a liniei, până la conta linii sau
ultima linie din bufferul de editare a fost scrisă.

+ Linia specificată va fi incrementată cu următoarea valoare:

(((număr of ``+'' personaje) −1) x conta) + 1

Dacă calculul ar avea ca rezultat un număr mai mare decât ultima linie din editare
tampon, va fi o eroare. Scrieți linii din buffer-ul de editare, începând cu cel nou
valoarea liniei, până la conta linii sau ultima linie din buffer-ul de editare a fost
scris.

=,. Dacă mai mult de un singur '.' or '=' este specificat, va fi o eroare. Următoarele
se vor lua măsuri:

1. Dacă conta este zero, nu se va scrie nimic.

2. Scrie cât mai multe dintre N linii înainte de linia curentă în tamponul de editare ca
exista. Dacă conta or '!' a fost specificat, N ar trebui sa fie:

(conta −1) /2

In caz contrar, N ar trebui sa fie:

(conta −3) /2

If N este un număr mai mic de 3, nu se vor scrie rânduri.

3. Dacă '=' a fost specificat ca caracter de tip, scrieți o linie constând din
mai mic dintre numărul de coloane din afișaj împărțit la doi sau 40 '-'
caractere.

4. Scrieți linia curentă.

5. Repetați pasul 3.

6. Scrie cât mai multe dintre N linii după linia curentă în tamponul de editare așa cum există.
N va fi definit ca la pasul 2. Dacă N este un număr mai mic decât 3, nu trebuie să fie linii
scris. Dacă conta este mai mic de 3, nu se vor scrie rânduri.

^ Linia specificată va fi decrementată cu următoarea valoare:

(((număr of ``^'' personaje) + 1) x conta) −1

Dacă calculul ar avea ca rezultat un număr mai mic decât 1, va fi o eroare. Scrie
linii din bufferul de editare, începând cu noua valoare a liniei, până la conta linii sau
ultima linie din bufferul de editare a fost scrisă.

Curent linie: Setați la ultima linie scrisă, cu excepția cazului în care tipul este =, caz în care, setați la
linia specificată.

Curent coloană: Setați la non- .

Evadare
sinopsis:
! comandă
[adresă]! comandă

Conținutul liniei de după '!' voi avea '%', '#', și '!' caractere extinse
așa cum este descris în Comandă Linie Analizare in ex. Dacă extinderea provoacă textul liniei
pentru a se modifica, va fi reafișat, precedat de un singur '!' caracter.

ex utilitarul va executa programul numit de coajă opțiunea de editare. Va trece doi
argumente la program; primul va fi −c, iar al doilea va fi extins
argumente la ! comanda ca un singur argument.

Dacă nu sunt specificate linii, intrarea standard, ieșirea standard și eroarea standard a
programul va fi setat la intrarea standard, ieșirea standard și eroarea standard a ex
programul când a fost invocat. În plus, se va scrie un mesaj de avertizare în cazul modificării
tamponul a fost modificat de la ultima scriere completă, iar avertiza opțiunea de editare este setată.

Dacă sunt specificate linii, acestea vor fi transmise programului ca intrare standard și
Ieșirea standard și eroarea standard a programului vor înlocui acele linii în editare
tampon. Fiecare linie din ieșirea programului (așa cum este delimitată de personaje sau finalul
a ieșirii dacă nu este imediat precedată de a ), va fi o linie separată
în tamponul de editare. Orice apariții ale și perechi în ieșire
va fi tratat ca singur personaje. Rândurile specificate vor fi copiate în
tamponul fără nume înainte de a fi înlocuit, iar tamponul fără nume va deveni o linie-
modul tampon.

Dacă în ex mod, un singur '!' caracterul va fi scris la finalizarea programului.

Această comandă va fi afectată de coajă și avertiza opțiuni de editare. Dacă nu există linii
specificat, această comandă va fi afectată de scriere automată și scrie orice opțiuni de editare. Dacă
sunt specificate linii, această comandă va fi afectată de autoimprimare opțiunea de editare.

Curent linie:

1. Dacă nu sunt specificate linii, neschimbate.

2. În caz contrar, setați la ultima linie citită, dacă există rânduri citite.

3. În caz contrar, setați la linia de dinaintea primei linii a liniilor specificate, dacă acea linie
există.

4. În caz contrar, setați la prima linie a tamponului de editare dacă tamponul de editare nu este gol.

5. În caz contrar, setați la zero.

Curent coloană: Dacă nu sunt specificate linii, neschimbate. În caz contrar, setați la non- .

Schimba Stânga
sinopsis:
[2adresa] <[<...][conta][steaguri]

Mutați liniile specificate la începutul liniei; numărul de poziții de coloană care urmează să fie
deplasat va fi numărul de caractere de comandă înmulțit cu valoarea lui shiftwidth edita
opțiune. Doar conducător caracterele vor fi șterse sau schimbate în altele
caractere în schimbare; alte caractere nu vor fi afectate.

Liniile care urmează să fie mutate vor fi copiate în buffer-ul fără nume, care va deveni o linie-
modul tampon.

Această comandă va fi afectată de autoimprimare opțiunea de editare.

Curent linie: Setați la ultima linie din liniile specificate.

Curent coloană: Setați la non- .

Schimba Dreapta
sinopsis:
[2adresa] >[> ...][conta][steaguri]

Deplasați liniile specificate departe de începutul liniei; numărul de poziții ale coloanei
care trebuie deplasat trebuie să fie numărul de caractere de comandă înmulțit cu valoarea lui shiftwidth
opțiunea de editare. Schimbarea se realizează prin adăugare caractere ca prefix la
linia sau schimbarea conducerii personaje în altele personaje. Linii goale
nu vor fi schimbate.

Liniile care urmează să fie mutate vor fi copiate în buffer-ul fără nume, care va deveni o linie-
modul tampon.

Această comandă va fi afectată de autoimprimare opțiunea de editare.

Curent linie: Setați la ultima linie din liniile specificate.

Curent coloană: Setați la non- .

-D
sinopsis:
-D

Scrie următorul n linii, unde n este minimul valorilor lui derulaţi opțiunea de editare și
numărul de linii după linia curentă în tamponul de editare. Dacă linia curentă este
ultima linie a tamponului de editare va fi o eroare.

Curent linie: Setați la ultima linie scrisă.

Curent coloană: Setați la non- .

Scrie Linie Număr
sinopsis:
[1adresa] = [steaguri]

If linie nu este specificat, va fi implicit la ultima linie din bufferul de editare. Scrie
numărul liniei specificate.

Curent linie: Neschimbat.

Curent coloană: Neschimbat.

Executa
sinopsis:
[2adresa] @ tampon
[2adresa] * tampon

Dacă nu este specificat niciun buffer sau este specificat ca '@' or '*', ultimul buffer executat va fi
folosit. Dacă nu a fost executat niciun buffer anterior, va fi o eroare.

Pentru fiecare linie specificată de adrese, setați linia curentă ('.') la cele specificate
linie și executați conținutul numelui tampon (așa cum erau la momentul respectiv @ comandă
a fost executat) ca ex comenzi. Pentru fiecare linie a unui buffer în mod linie și toate, cu excepția ultimului
linia unui buffer în modul caracter, the ex parserul de comandă se va comporta ca și cum linia ar fi
încheiat de a .

Dacă apare o eroare în timpul acestui proces sau o linie specificată de adrese nu
există atunci când linia curentă ar fi setată la aceasta sau a fost specificată mai mult de o singură linie
de adrese, iar conținutul bufferului de editare este înlocuit (de exemplu, de ex
edita: comandă) se va scrie un mesaj de eroare și nu mai există comenzi rezultate din
execuția acestei comenzi va fi procesată.

Curent linie: După cum este specificat pentru individ ex comenzi.

Curent coloană: După cum este specificat pentru individ ex comenzi.

Regulat Expresii in ex
ex utilitatea va suporta expresii regulate care sunt un supraset al regulatei de bază
expresii descrise în volumul Definiții de bază din POSIX.1‐2008, Secțiune 9.3, pachet de bază
Regulat Expresii. O expresie regulată nulă („//”) va fi echivalent cu ultimul
expresie regulată întâlnită.

Expresiile regulate pot fi folosite în adrese pentru a specifica linii și, în unele comenzi (pentru
de exemplu, substitui comanda), pentru a specifica porțiuni de linie care urmează să fie înlocuite.

Următoarele construcții pot fi folosite pentru a îmbunătăți expresiile regulate de bază:

\< Potriviți începutul lui a cuvânt. (Vezi definiția lui cuvânt la începutul
Comandă Descrieri in ex.)

\> Potriviți sfârșitul lui a cuvânt.

~ Potriviți piesa de schimb a ultimei substitui comanda. The ('~')
caracterul poate fi scapat într-o expresie regulată pentru a deveni un caracter normal cu
nici un sens special. The vor fi aruncate.

Când opțiunea editor magie nu este setat, singurele caractere cu semnificații speciale
be '^' la începutul unui model, „$” la sfârșitul unui model și . The
caractere '.', '*', '[', și '~' vor fi tratate ca caractere obișnuite, dacă nu sunt precedate
de către a ; când este precedată de a își vor recăpăta semnificația lor specială,
sau în cazul , să fie tratat ca un singur . personaje
folosite pentru a scăpa de alte caractere vor fi aruncate.

Înlocuire Corzi in ex
Caracterul '&' („\&” dacă opțiunea editor magie nu este setat) în șirul de înlocuire
va reprezenta textul potrivit modelului care urmează să fie înlocuit. Caracterul '~' ('\~' if
magie nu este setat) va fi înlocuit cu piesa de înlocuire a precedentului substitui
comanda. Secvența '\n', În cazul în care n este un număr întreg, va fi înlocuit cu textul potrivit
prin expresia de referință inversă corespunzătoare. Dacă referința din spate corespunzătoare
expresia nu se potrivește, atunci personajele '\n' va fi înlocuit cu șirul gol.

Corzile '\l', „\u”, „\L”, și „\U” poate fi folosit pentru a modifica cazul elementelor din
șir de înlocuire (folosind „\&” or "\"cifra) notaţie. Șirul '\l' („\u”) trebuie
face ca caracterul care urmează să fie convertit în litere mici (majuscule). Șirul „\L”
(„\U”) va face ca toate caracterele ulterioare să fie convertite în litere mici
(majuscule) pe măsură ce sunt introduse prin substituție până la șir '\e' or „\E”, Sau
sfârșitul șirului de înlocuire, este întâlnit.

În caz contrar, orice caracter care urmează a va fi tratat ca acela literal
caracterul și evadarea vor fi aruncate.

Un exemplu de conversie a cazurilor cu s comanda este următoarea:

:p
pisică SAT on il catarg.
:s/\<.at\>/\u&/gp
Pisica SAT on il Alimente.
:s/S\(.*\)M/S\U\1\eM/p
Pisica SAT ON THE Alimente.

Editati Opţiuni in ex
ex utilitarul are o serie de opțiuni care își modifică comportamentul. Aceste opțiuni au
setările implicite, care pot fi modificate folosind set comanda.

Opțiunile sunt booleene, dacă nu se specifică altfel.

autoindentare, ai
[Mod implicit dezactivat]

If autoindentare este setată, fiecare linie în modul de intrare va fi indentată (folosind mai întâi cât mai multe
caractere posibil, așa cum este determinat de opțiunea editorului tabstop, iar apoi folosind
caractere) pentru a se alinia cu o altă linie, după cum urmează:

1. Dacă se află în modul deschis sau vizual și introducerea textului face parte dintr-o comandă orientată pe linie (vezi
DESCRIEREA EXTINSĂ în vi), se aliniază la prima coloană.

2. În caz contrar, dacă se află în modul deschis sau vizual, indentarea pentru fiecare linie va fi stabilită ca
urmează:

A. Dacă o linie a fost introdusă anterior ca parte a acestei comenzi, aceasta va fi setată la
indentarea ultimei linii introduse în mod implicit, sau așa cum se specifică altfel
cel ‐D caracter în Intrare mod Comenzi in vi.

b. În caz contrar, va fi setat la indentarea liniei curente anterioare, dacă
orice; în caz contrar, la prima coloană.

3. Pentru ex a, i, și c comenzile, indentarea pentru fiecare linie va fi setată după cum urmează:

A. Dacă o linie a fost introdusă anterior ca parte a acestei comenzi, aceasta va fi setată la
indentarea ultimei linii introduse în mod implicit, sau așa cum se specifică altfel
il EOF caracter în Sul.

b. În caz contrar, dacă comanda este ex a comanda, va fi setată la linie
anexat după, dacă este cazul; altfel la prima coloană.

c. În caz contrar, dacă comanda este ex i comanda, va fi setată la linie
introdus înainte, dacă este cazul; altfel la prima coloană.

d. În caz contrar, dacă comanda este ex c comandă, va fi setată la indentare
a liniei înlocuite.

imprimare automată, ap
[Mod implicit set]

If autoimprimare este setat, linia curentă va fi scrisă după fiecare ex comandă care modifică
conținutul bufferului de editare curent și după fiecare etichetă comanda pentru care eticheta
modelul de căutare a fost găsit sau numărul de etichetă a fost valid, cu excepția cazului în care:

1. Comanda a fost executată în modul deschis sau vizual.

2. Comanda a fost executată ca parte a a global or v comanda sau @ executarea tamponului.

3. Comanda a fost forma de citit comandă care citește un fișier în memoria tampon de editare.

4. Comanda a fost adăuga, Schimbare, Sau insera comanda.

5. Comanda nu a fost terminată de a .

6. Linia curentă va fi scrisă printr-un steag specificat la comandă; de exemplu,
șterge # va scrie linia curentă așa cum este specificat pentru modificatorul de flag la șterge
comanda, și nu așa cum este specificat de autoimprimare opțiunea de editare.

scriere automată, aw
[Mod implicit dezactivat]

If scriere automată este setat, iar tamponul de editare a fost modificat de când a fost ultima dată complet
scris în orice fișier, conținutul buffer-ului de editare va fi scris ca și cum ar fi ex scrie
comanda fusese specificată fără argumente, înainte de fiecare comandă afectată de
scriere automată opțiunea de editare este executată. Adăugarea personajului '!' la numele de comandă al oricărui
a ex comenzi cu excepția '!' va împiedica scrierea. Dacă scrierea eșuează, va fi un
eroare și comanda nu va fi executată.

înfrumuseţa, bf
[Mod implicit dezactivat]

If înfrumuseţa este setat, toate caracterele care nu sunt imprimabile, altele decât , , și
feed> caractere, vor fi eliminate din textul citit din fișiere.

director, dir
[Mod implicit definit de implementare]

Valoarea acestei opțiuni specifică directorul în care va fi editorul tampon
plasat. Dacă acest director nu poate fi scris de către utilizator, editorul se va închide.

compatibil cu ed, ed
[Mod implicit dezactivat]

Determină prezența g și c sufixe ale comenzilor de substituție care trebuie reținute și
comutat prin repetarea sufixelor.

clopote de eroare, eb
[Mod implicit dezactivat]

Dacă editorul este în ex modul, iar terminalul nu acceptă un mod remarcabil (cum ar fi
video invers) și clopote de eroare este setat, mesajele de eroare vor fi precedate de alertarea
Terminal.

exrc
[Mod implicit dezactivat]

If exrc este setat, ex va accesa oricare .exrc fișier în directorul curent, așa cum este descris în
Inițializarea in ex și vi. Dacă exrc nu este setat, ex va ignora orice .exrc de fișier în
directorul curent în timpul inițializării, cu excepția cazului în care directorul curent este cel numit de
ACASA variabilă de mediu.

ignora majuscule, ic
[Mod implicit dezactivat]

If ignorecase este setat, caracterele care au reprezentări majuscule și minuscule
au acele reprezentări considerate echivalente în scopul exprimării regulate
comparaţie.

ignorecase opțiunea de editare va afecta toate expresiile regulate memorate; de exemplu,
dezactivarea ignorecase opțiunea de editare va provoca un ulterior vi n comanda de cautat
ultima expresie regulată de bază într-un mod sensibil la majuscule.

listă
[Mod implicit dezactivat]

If listă este setat, editați liniile tampon scrise în timp ce sunteți în ex modul de comandă va fi scris ca
specificat pentru imprima comanda cu l steag specificat. În modul deschis sau vizual, fiecare
linia de editare tampon va fi afișată așa cum este specificat pentru ex imprima comanda cu l pavilion
specificat. În modul de introducere a textului deschis sau vizual, când cursorul nu se sprijină pe niciunul
caracterul din rând, acesta se va sprijini pe „$” marcând capătul liniei.

magie
[Mod implicit set]

If magie este setat, modifica interpretarea caracterelor în expresiile regulate și
șiruri de înlocuire de înlocuire (vezi Regulat Expresii in ex și Înlocuire Corzi in
ex).

mesaj
[Mod implicit set]

If mesaj este setat, permisiunea altora de a utiliza scrie or vorbi comenzi la care să scrieți
terminalul va fi pornit în modul deschis sau vizual. Comanda la nivel de shell mesaj
n va avea prioritate față de orice setare a ex mesaj opțiune; adică dacă mesaj y a fost
emis înainte ca editorul să înceapă (sau într-un shell escape), cum ar fi:

:!mesg y

il mesaj opțiune în ex va suprima mesajele primite, dar mesaj opțiunea nu trebuie
activați mesajele primite dacă mesaj n a fost emis.

număr, nu
[Mod implicit dezactivat]

If număr este setat, editați liniile tampon scrise în timp ce sunteți în ex modul de comandă va fi scris cu
numere de linie, în formatul specificat de imprima comanda cu # steag specificat. În
ex modul de introducere a textului, fiecare linie va fi precedată de numărul de linie pe care îl va avea în
fișier.

În modul deschis sau vizual, fiecare linie tampon de editare va fi afișată cu o linie anterioară
număr, în formatul specificat de ex imprima comanda cu # steag specificat. Acest
numărul rândului nu va fi considerat parte a liniei în scopul evaluării
coloana curentă; adică, poziţia coloanei 1 va fi prima poziţie a coloanei după
format specificat de imprima comanda.

paragrafe, alin
[Implicit în localitatea POSIX IPLPPPQPP LIpplpipbp]

punctele opțiunea de editare va defini limitele de paragraf suplimentare pentru deschiderea și
comenzi în modul vizual. The punctele opțiunea de editare poate fi setată la un șir de caractere
constând din zero sau mai multe perechi de caractere. Va fi o eroare să-l setați la un impar
număr de caractere.

prompt
[Mod implicit set]

If prompt este setat, ex Intrarea în modul de comandă va fi solicitată cu a (':'); când
dezactivat, nu se va scrie nicio solicitare.

numai în citire
[Mod implicit vedea a) Sport and Nutrition Awareness Day in Manasia Around XNUMX people from the rural commune Manasia have participated in a sports and healthy nutrition oriented activity in one of the community’s sports ready yards. This activity was meant to gather, mainly, middle-aged people from a Romanian rural community and teach them about the benefits that sports have on both their mental and physical health and on how sporting activities can be used to bring people from a community closer together. Three trainers were made available for this event, so that the participants would get the best possible experience physically and so that they could have the best access possible to correct information and good sports/nutrition practices. b) Sports Awareness Day in Poiana Țapului A group of young participants have taken part in sporting activities meant to teach them about sporting conduct, fairplay, and safe physical activities. The day culminated with a football match. ]

În cazul în care numai în citire opțiunea de editare este setată, modul numai citire va fi activat (vezi Scrie).
numai în citire opțiunea de editare va fi inițializată pentru a fi setată dacă există una dintre următoarele condiții
Adevărat:

* Opțiunea de linie de comandă −R a fost specificată.

* Efectuarea de acțiuni echivalente cu acces() funcția numită cu următoarele
argumente indică faptul că fișierul nu are permisiunea de scriere:

1. Calea curentă este folosită ca cale a susținut.

2. Constanta W_OK este folosit ca amode a susținut.

numai în citire opțiunea de editare poate fi inițializată pentru a fi setată pentru altele, definite de implementare
motive. The numai în citire opțiunea de editare nu va fi inițializată pentru a dezactiva pe baza vreunei speciale
privilegiile utilizatorului sau procesului. The numai în citire opțiunea de editare va fi reinițializată fiecare
momentul în care conținutul buffer-ului de editare este înlocuit (de exemplu, cu un edita or următor
comanda) cu excepția cazului în care utilizatorul a setat-o ​​în mod explicit, caz în care va rămâne setat până la
utilizatorul îl dezactivează în mod explicit. Odată dezactivat, va fi din nou reinițializat de fiecare dată când aceasta
conținutul buffer-ului de editare este înlocuit.

redesenare
[Mod implicit dezactivat]

Editorul simulează un terminal inteligent pe un terminal prost. (Deoarece acest lucru este probabil
necesită o cantitate mare de ieșire către terminal, este util doar la transmisie mare
viteze.)

remaparea
[Mod implicit set]

If remaparea este setat, traducerea hărților va permite hărți definite în termenii altor hărți;
traducerea continuă până la obținerea unui produs final. Dacă nesetat, doar un singur pas
se va face traducerea.

raportează
[Implicit 5]

Valoarea acestui lucru raportează opțiunea de editare specifică numărul de linii adăugate, copiate,
șters sau modificat în memoria tampon de editare va determina scrierea unui mesaj informațional
către utilizator. Următoarele condiții vor genera un mesaj informativ. Mesajul
trebuie să conțină numărul de rânduri adăugate, copiate, șterse sau modificate, dar este altfel
nespecificat.

* An ex or vi comanda editorului, altul decât deschide, anula, Sau vizual, asta se modifica cel putin
valoarea raportează editați opțiunea numărul de linii și care nu face parte dintr-un ex
global or v comanda, sau ex or vi execuția bufferului, va provoca o informare
mesaj de scris.

* An ex smulge or vi y or Y comanda, care copiază cel puțin valoarea lui raportează edita
opțiune plus 1 număr de linii și care nu face parte dintr-un ex global or v comanda, sau
ex or vi execuția bufferului, va determina scrierea unui mesaj informațional.

* An ex global, v, deschide, anula, Sau vizual comanda sau ex or vi execuție tampon, care adaugă
sau șterge un total de cel puțin valoarea lui raportează opțiunea de editare a numărului de linii,
și care nu face parte dintr-un ex global or v comanda, sau ex or vi executarea tamponului,
va determina scrierea unui mesaj informativ. (De exemplu, dacă 3 linii ar fi
adăugate și 8 rânduri șterse în timpul unui ex vizual comanda, 5 ar fi numărul comparat
împotriva raportează opțiunea de editare după finalizarea comenzii.)

sul, scr
[Implicit (număr de linii pe afișaj −1)/2]

Valoarea lui derulaţi opțiunea de editare va determina numărul de linii derulate de ex
‐D și z comenzi. Pentru vi ‐D și ‐U comenzi, așa va fi
numărul inițial de linii de parcurs atunci când nu este anterior ‐D sau Comanda ‐U
a fost executat.

secțiuni
[Implicit în localitatea POSIX NHSHH HUnhsh]

secțiuni opțiunea de editare va defini limite de secțiune suplimentare pentru deschiderea și
comenzi în modul vizual. The secțiuni opțiunea de editare poate fi setată la un șir de caractere format
de zero sau mai multe perechi de caractere; va fi o eroare să-l setați la un număr impar de
caractere.

coajă, sh
[Implicit din variabila de mediu COAJĂ]

Valoarea acestei opțiuni va fi un șir. Valoarea implicită va fi luată din COAJĂ
variabilă de mediu. Dacă COAJĂ variabila de mediu este nulă sau goală, the sh (A se vedea sh)
utilitatea va fi implicită.

shiftwidth, sw
[Implicit 8]

Valoarea acestei opțiuni trebuie să dea lățimea în coloane a unui nivel de indentare utilizat
în timpul autoindentării și prin comenzile de schimbare (< și >).

meci show, sm
[Mod implicit dezactivat]

Funcționalitatea descrisă pentru spectacol opțiunea de editare nu trebuie să fie acceptată pe bloc-
terminale de mod sau terminale cu capacități insuficiente.

If spectacol este setat, în modul deschis sau vizual, când a ')' or '}' este tastat, dacă se potrivește
'(' or '{' este vizibilă în prezent pe afișaj, potrivirea '(' or '{' vor fi semnalizate
mutarea cursorului în locația sa pentru o perioadă de timp nespecificată.

modul show
[Mod implicit dezactivat]

If modul show este setat, în modul deschis sau vizual, modul curent în care se află editorul
să fie afișat pe ultima linie a afișajului. Modul de comandă și modul de introducere a textului trebuie să fie
diferențiat; alte moduri nespecificate și informații definite de implementare pot fi
afișat.

lent deschis
[Mod implicit dezactivat]

If lent deschis este setat în timpul modurilor de introducere a textului deschis și vizual, editorul nu se va actualiza
porțiuni ale afișajului, altele decât acele coloane de linie de afișare care afișează caracterele
introdus de utilizator (vezi Intrare mod Comenzi in vi).

tabstop, ts
[Implicit 8]

Valoarea acestei opțiuni de editare va specifica limita coloanei utilizată de a în
afișaj (vezi autoimprimare, ap și Intrare mod Comenzi in vi).

lungimea etichetei, tl
[Zero implicit]

Valoarea acestei opțiuni de editare va specifica numărul maxim de caractere care sunt
considerate semnificative în numele etichetei specificate de utilizator și în numele etichetei din etichete
fişier. Dacă valoarea este zero, toate caracterele din ambele nume de etichetă trebuie să fie semnificative.

tag-uri
[Mod implicit vedea a) Sport and Nutrition Awareness Day in Manasia Around XNUMX people from the rural commune Manasia have participated in a sports and healthy nutrition oriented activity in one of the community’s sports ready yards. This activity was meant to gather, mainly, middle-aged people from a Romanian rural community and teach them about the benefits that sports have on both their mental and physical health and on how sporting activities can be used to bring people from a community closer together. Three trainers were made available for this event, so that the participants would get the best possible experience physically and so that they could have the best access possible to correct information and good sports/nutrition practices. b) Sports Awareness Day in Poiana Țapului A group of young participants have taken part in sporting activities meant to teach them about sporting conduct, fairplay, and safe physical activities. The day culminated with a football match. ]

Valoarea acestei opțiuni de editare va fi un șir de -cai delimitate ale fișierelor
folosit de etichetă comanda. Valoarea implicită este nespecificată.

durată
[Implicit din variabila de mediu TERMEN]

Valoarea acestei opțiuni de editare va fi un șir. Valoarea implicită va fi luată din TERMEN
variabilă în mediu. Dacă TERMEN variabila de mediu este goală sau nulă, the
implicit este nespecificat. Editorul va folosi valoarea acestei opțiuni de editare pentru a determina
tipul dispozitivului de afișare.

Rezultatele sunt nespecificate dacă utilizatorul modifică valoarea opțiunii de editare a termenului după
inițializarea editorului.

concis
[Mod implicit dezactivat]

If concis este setat, mesajele de eroare pot fi mai puțin detaliate. Cu toate acestea, cu excepția acestui avertisment,
mesajele de eroare sunt nespecificate. În plus, nu toate mesajele de eroare trebuie schimbate pentru
diferite setări ale acestei opțiuni.

avertiza
[Mod implicit set]

If avertiza este setat, iar conținutul buffer-ului de editare a fost modificat de când au fost
ultima scrisă complet, editorul va scrie un mesaj de avertizare înainte de a fi sigur !
comenzi (vezi Evadare).

fereastră
[Mod implicit vedea a) Sport and Nutrition Awareness Day in Manasia Around XNUMX people from the rural commune Manasia have participated in a sports and healthy nutrition oriented activity in one of the community’s sports ready yards. This activity was meant to gather, mainly, middle-aged people from a Romanian rural community and teach them about the benefits that sports have on both their mental and physical health and on how sporting activities can be used to bring people from a community closer together. Three trainers were made available for this event, so that the participants would get the best possible experience physically and so that they could have the best access possible to correct information and good sports/nutrition practices. b) Sports Awareness Day in Poiana Țapului A group of young participants have taken part in sporting activities meant to teach them about sporting conduct, fairplay, and safe physical activities. The day culminated with a football match. ]

O valoare folosită în modul deschis și vizual, de către -Grup ‐F comenzi și, în
modul vizual, pentru a specifica numărul de linii afișate atunci când ecranul este revopsit.

În cazul în care −w opțiunea de linie de comandă nu este specificată, valoarea implicită va fi setată la
valoarea LINII variabilă de mediu. Dacă LINII variabila de mediu este goală sau
nul, valoarea implicită va fi numărul de linii de pe afișaj minus 1.

Setarea fereastră opțiunea de editare la zero sau la o valoare mai mare decât numărul de linii în
afișarea minus 1 (fie explicit, fie pe baza −w sau opțiunea LINII mediu inconjurator
variabilă) va cauza fereastră opțiunea de editare să fie setată la numărul de linii din
afișare minus 1.

Rata baud a liniei terminale poate modifica valoarea implicită într-o implementare definită
manieră.

wrapmargin, wm
[Implicit 0]

Dacă valoarea acestei opțiuni de editare este zero, nu va avea niciun efect.

Dacă nu este în localitatea POSIX, efectul acestei opțiuni de editare este definit de implementare.

În caz contrar, va specifica un număr de coloane de la marginea finală a terminalului.

În timpul modurilor de introducere a textului deschis și vizual, pentru fiecare caracter pentru care orice parte a
caracterul este afișat într-o coloană care este mai mică decât wrapmargin coloane de la final
marginea liniei de afișare, editorul se va comporta după cum urmează:

1. Dacă personajul care declanșează acest eveniment este a , ea și toate imediat precedente
caractere pe linia curentă introduse în timpul executării curentului
comanda de introducere a textului, va fi eliminată, iar editorul se va comporta ca și cum utilizatorul ar fi făcut-o
a intrat un singur in schimb. În plus, dacă următorul caracter introdus de utilizator este
A , va fi de asemenea aruncat.

2. În caz contrar, dacă există unul sau mai multe caractere de pe linia curentă imediat
precedând ultimul grup de non-inserate caractere care au fost introduse în timpul
executarea comenzii curente de introducere a textului, the caracterele vor fi
înlocuit ca și cum utilizatorul ar fi introdus un singur in schimb.

În cazul în care autoindentare opțiunea de editare este setată și evenimentele descrise la 1. sau 2. sunt efectuate,
orice caracterele de la sau după cursorul din linia curentă vor fi eliminate.

Marja finală va fi determinată de sistem sau înlocuită de utilizator, așa cum
descris pentru COLOANE în secțiunea VARIABILE DE MEDIU și în volumul Definiții de bază
din POSIX.1‐2008, Capitol 8, Mediu inconjurator Variabile.

wrapscan, ws
[Mod implicit set]

If wrapscan este setat, caută (the ex / or ? adrese, sau modul deschis și vizual /, ?, N,
și n comenzi) se vor încheia în jurul începutului sau sfârșitului buffer-ului de editare; cand neasezat,
căutările se vor opri la începutul sau la sfârșitul tamponului de editare.

scrie orice, wa
[Mod implicit dezactivat]

If scrie orice este setat, unele dintre verificările efectuate la executarea ex scrie comenzi
va fi inhibat, așa cum este descris în opțiunea editorului scriere automată.

EXIT STAREA


Următoarele valori de ieșire vor fi returnate:

0 Finalizare cu succes.

>0 A apărut o eroare.

CONSECINȚE OF ERORI


Când se întâlnește orice eroare și intrarea standard nu este un fișier de dispozitiv terminal, ex
nu va scrie fișierul sau nu va reveni la modul de comandă sau de introducere a textului și se va termina cu
o stare de ieșire diferită de zero.

În caz contrar, atunci când se întâlnește o eroare irecuperabilă, aceasta va fi echivalentă cu un SIGHUP
eveniment asincron.

În caz contrar, atunci când se întâlnește o eroare, editorul se va comporta așa cum este specificat în Comandă
Linie Analizare in ex.

următor secțiuni sunt informativ.

APLICARE UTILIZARE


Dacă un semnal SIGSEGV este primit în timp ce ex salvează un fișier, este posibil ca fișierul să nu fie
salvat cu succes.

următor comanda poate accepta mai mult de un fișier, deci utilizări cum ar fi:

următor `ls [abc]*`

este valabil; nu ar fi valabil pentru edita or citit comenzi, de exemplu, pentru că acestea
așteptați doar un fișier și apar rezultate nespecificate.

EXEMPLE


Nici unul.

FUNDAMENTARE


ex/vi specificația se bazează pe practica istorică găsită în 4 BSD și System
V implementări ale ex și vi.

A limitat editor (atât cele istorice roșu utilitate si modificari la ex) au fost
luate în considerare și respinse pentru includere. Niciuna dintre opțiuni nu a oferit nivelul de securitate care
utilizatorii s-ar putea aștepta.

Este recunoscut că ex modul vizual și caracteristicile aferente ar fi dificil, dacă nu
imposibil, de implementat satisfăcător pe un terminal în modul bloc, sau un terminal fără
orice formă de adresare cu cursorul; astfel, nu este o cerință obligatorie ca astfel de caracteristici
ar trebui să funcționeze pe toate terminalele. Intenția este totuși ca an ex implementarea
ar trebui să ofere setul complet de capabilități pe toate terminalele capabile să le susțină.

Opţiuni
−c Înlocuitor pentru +comandă a fost inspirat de −e opțiunea de a sete. Din punct de vedere istoric, toate
astfel de comenzi (vezi edita și următor de asemenea) au fost executate din ultima linie a editării
tampon. Aceasta însemna, de exemplu, că „+/model” ar eșua dacă nu wrapscan opțiune
a fost setat. POSIX.1‐2008 necesită conformitatea cu practica istorică. The +comandă opțiunea este
nu mai este specificat de POSIX.1‐2008 dar poate fi prezent în unele implementări.
Din punct de vedere istoric, unele implementări au restricționat ex comenzi care ar putea fi listate ca parte
a argumentelor liniei de comandă. Pentru coerență, POSIX.1‐2008 nu le permite
restricții.

În implementările istorice ale editorului, the −R opțiunea (și numai în citire opțiunea de editare)
a împiedicat doar suprascrierea fișierelor; atașarea la fișiere era încă permisă, maparea
vag în csh noclobber variabil. Unele implementări, însă, nu au urmat
această semantică și numai în citire nu permite nici atașarea. POSIX.1‐2008 urmează
din urmă practică, crezând că este un sens mai evident și mai intuitiv al numai în citire.

−s opțiunea suprimă toate feedback-urile interactive ale utilizatorilor și este utilă pentru editarea scripturilor
în joburi în lot. Lista efectelor specifice este practica istorică. Tipul terminalului
``incapabil să suporte moduri deschise și vizuale'' a fost numit istoric ``mut''.

−t opțiunea a fost necesară deoarece ctag-uri utilitatea apare în POSIX.1‐2008 și
opțiunea este disponibilă în toate implementările istorice ale ex.

Istoric, ex și vi utilitati acceptate a −x opțiunea, care a făcut criptarea pe baza
algoritmul găsit în istoric criptă utilitate. The −x opțiunea pentru criptare și
asociate criptă utilitate, au fost omise deoarece algoritmul utilizat nu era specificabil și
legile privind controlul exporturilor ale unor națiuni îngreunează exportul criptografic
tehnologie. În plus, istoric nu a oferit nivelul de securitate pe care îl au utilizatorii
s-ar putea aștepta.

Standard Intrare
O condiție de sfârșit de fișier nu este echivalentă cu un caracter de sfârșit de fișier. Un final comun de-
caracter de fișier, ‐D, este istoric un ex comanda.

Nu a existat o lungime maximă a liniei în implementările istorice ale ex. Mai exact, așa cum
a fost analizat în bucăți, adresele aveau o lungime maximă diferită de numele fișierelor.
Mai mult, dimensiunea maximă a bufferului de linie a fost declarată ca BUFSIZ, care a avut lungimi diferite
pe sisteme diferite. Această versiune a selectat valoarea {LINE_MAX} pentru a impune o valoare rezonabilă
restricție privind utilizarea portabilă a ex și pentru a ajuta scriitorii de suite de testare în dezvoltarea lor
teste realiste care exercită această limită.

Intrare Fişiere
A fost o decizie explicită a dezvoltatorilor standard că a fi adăugat la oricare
dosar lipsit de unul. Se credea că această caracteristică a ex și vi a fost bazat pe utilizatori în
pentru a face fișiere text fără urmă mai portabil. Este recunoscut că
aceasta va necesita o opțiune sau o extensie specificată de utilizator pentru implementările care permit ex
și vi pentru a edita fișiere de alt tip decât text, dacă astfel de fișiere nu sunt altfel identificate prin
sistemul. S-a convenit că abilitatea de a edita fișiere de tip arbitrar poate fi utilă,
dar nu s-a considerat necesar să se mandateze ca an ex or vi implementarea să fie necesară
pentru a gestiona alte fișiere decât fișierele text.

Paragraful din secțiunea FIȘIERE DE INTRARE, ``În mod implicit, ...'', are scopul de a închide un
problemă de securitate de lungă durată în ex și vi; cea a ``modeline'' sau ``modeline''
opțiunea de editare. Această caracteristică permite orice linie din primele sau ultimele cinci rânduri ale fișierului
care conțin șirurile "ex:" or "vi:" (și, aparent, "ei:" or "vx:") a fi o linie
care conțin comenzi editor și ex interpretează tot textul până la următorul ':' sau
ca o poruncă. Luați în considerare, de exemplu, consecințele utilizării unui utilizator nebănuit ex or
vi ca editor atunci când răspunde la un mesaj de e-mail în care o linie cum ar fi:

ex:! rm −rf :

a apărut în rândurile de semnătură. Dezvoltatorii standard au crezut cu tărie că un editor
nu ar trebui să interpreteze implicit niciun rând dintr-un fișier. Vânzătorii sunt îndemnați cu tărie să ștergă
această caracteristică din implementările lor de ex și vi.

asincronă Evenimente
Intenția expresiei ``complete write'' este ca întregul buffer de editare să fie scris
la depozitare stabilă. Nota privind fișierele temporare este destinată implementărilor care
utilizați fișiere temporare pentru a edita buffer-uri nenumite de utilizator.

Din punct de vedere istoric, SIGQUIT a fost ignorat de ex, dar era echivalentul lui Q comandă în vizual
modul; adică a ieșit din modul vizual și a intrat ex modul. POSIX.1‐2008 permite, dar o face
nu necesită acest comportament. Din punct de vedere istoric, SIGINT a fost adesea folosit de vi utilizatorii să rezilieze
modul de introducere a textului ( ‐C este adesea mai ușor de introdus decât ). Câteva implementări
of vi au alertat terminalul cu privire la acest eveniment, iar unii nu au făcut-o. POSIX.1‐2008 cere ca
SIGINT se comportă identic cu , și ca terminalul să nu fie alertat.

Din punct de vedere istoric, suspendarea ex Editorul în timpul modului de introducere a textului a fost similar cu SIGINT, așa cum
liniile finalizate au fost reținute, dar orice linie parțială a fost eliminată, iar editorul a revenit la
modul de comandă. POSIX.1‐2008 tace asupra acestei probleme; implementările sunt încurajate să
urmați practica istorică, acolo unde este posibil.

Istoric, vi Editorul nu a tratat SIGTSTP ca pe un eveniment asincron și a fost
prin urmare, imposibil de suspendat editorul în modul de introducere vizuală a textului. Sunt două majore
motive pentru aceasta. Primul este că SIGTSTP este un semnal de difuzare pe sisteme UNIX și
lanț de evenimente unde coaja Execeste o aplicație care atunci Execs vi cauzate de obicei
confuzie pentru starea terminalului dacă SIGTSTP a fost livrat grupului de procese din
manieră implicită. Al doilea a fost că majoritatea implementărilor UNIX blesteme pachetul a făcut
nu gestionează SIGTSTP în siguranță, iar primirea SIGTSTP la momentul nepotrivit le-ar cauza
a prăbuși. POSIX.1‐2008 tace asupra acestei probleme; implementările sunt încurajate să trateze
suspendarea ca eveniment asincron dacă este posibil.

Din punct de vedere istoric, modificările aduse memoriei tampon de editare făcute înainte de SIGINT au întrerupt o operațiune
au fost reținute; adică oriunde de la zero la toate liniile care trebuie modificate ar putea avea
a fost modificat până la sosirea SIGINT-ului. Aceste modificări nu au fost eliminate de către
sosirea lui SIGINT. POSIX.1‐2008 permite acest comportament, menționând că anula comanda este
necesare pentru a putea anula aceste comenzi parțial finalizate.

Acțiunea luată pentru alte semnale decât SIGINT, SIGCONT, SIGHUP și SIGTERM este
nespecificat deoarece unele implementări încearcă să salveze tamponul de editare într-o stare utilă
când se primesc alte semnale.

Standard Eroare
Pentru ex/vi, mesajele de diagnosticare sunt acele mesaje raportate ca urmare a unei încercări eșuate
a invoca ex or vi, cum ar fi opțiuni nevalide sau resurse insuficiente sau o anormalitate
condiție de terminare. Mesajele de diagnosticare nu trebuie confundate cu mesajele de eroare
generate de comenzile utilizatorului neadecvate sau ilegale.

Inițializarea in ex și vi
Daca un ex comanda (altele decât cd, chdir, Sau sursă) are un argument nume de fișier, unul sau ambele
vor fi setate căile alternative și actuale. În mod informal, acestea sunt stabilite după cum urmează:

1. Dacă ex comanda este una care înlocuiește conținutul buffer-ului de editare și aceasta
reușește, calea curentă va fi setată la argumentul numelui fișierului (primul
argument nume de fișier în cazul următor comanda) și calea alternativă va fi
setați la calea curentă anterioară, dacă a existat una.

2. În cazul fișierului formularele de citire/scriere ale citit și scrie comenzi, dacă există
nu există un nume de cale curent, numele de cale curent va fi setat la argumentul nume de fișier.

3. În caz contrar, calea alternativă va fi setată la argumentul nume de fișier.

De exemplu, edita: foo și :recupera foo, când are succes, setați calea curentă și,
dacă a existat un nume de cale curent anterior, numele de cale alternativ. Comenzile :scrie,
!comanda, și edita: nu setați nici căile curente, nici cele alternative. Dacă edita: foo
comanda ar eșua dintr-un motiv oarecare, calea alternativă ar fi setată. The citit și
scrie comenzile setează calea alternativă la lor fişier argument, cu excepția cazului în care curentul
pathname nu este setat, caz în care ei setează calea curentă la lor fişier argumente.
Calea alternativă nu a fost stabilită istoric de către :sursă comanda. POSIX.1‐2008
necesită conformitatea cu practica istorică. Implementări care adaugă comenzi care iau
numele de fișiere ca argumente sunt încurajate să seteze calea alternativă așa cum este descris aici.

Punct de vedere istoric, ex și vi Citeste .exrc de fișier în $ ACASĂ directorul de două ori, dacă editorul
a fost executat în $ ACASĂ director. POSIX.1‐2008 interzice acest comportament.

Din punct de vedere istoric, cele 4 BSD ex și vi Citeste $ ACASĂ și locală .exrc fișiere dacă acestea au fost deținute
prin ID-ul real al utilizatorului sau sursă orice opțiunea a fost setată, indiferent de alta
considerații. Aceasta a fost o problemă de securitate deoarece este posibil să puneți UNIX normal
comenzile de sistem din interiorul a .exrc fişier. POSIX.1‐2008 nu specifică sursă orice opțiune,
iar implementările istorice sunt încurajate să-l ștergă.

.exrc fișierele trebuie să fie deținute de ID-ul real al utilizatorului și să nu poată fi scrise de către altcineva
decât proprietarul. Excepția de privilegii corespunzătoare este menită să permită utilizatorilor
dobândiți privilegii speciale, dar continuați să utilizați .exrc fișierele din directoarele lor de acasă.

System V Versiunea 3.2 și ulterioară vi implementările au adăugat opțiunea [nu]exrc. Comportamentul
este local .exrc fișierele sunt doar pentru citire dacă exrc opțiunea este setată. Valoarea implicită pentru
exrc opțiunea era dezactivată, deci implicit, local .exrc fișierele nu au fost citite. Problema asta era
intenționat să rezolve a fost că System V permitea utilizatorilor să ofere fișiere, așa că nu există
posibil test de proprietate sau de scriere pentru a se asigura că fișierul este sigur. Acesta este încă un
problemă de securitate pe sistemele în care utilizatorii pot oferi fișiere, dar nu există nimic
suplimentar pe care POSIX.1‐2008 îl poate face. Excepția definită de implementare este destinată
permite grupurilor să aibă local .exrc fișiere care sunt partajate de utilizatori, prin crearea de pseudo-utilizatori
pentru a deține fișierele partajate.

POSIX.1‐2008 nu menționează la nivel de sistem ex și vi fișiere de pornire. În timp ce ele există în
mai multe implementări ale ex și vi, nu sunt prezente în nicio implementare
considerată practică istorică de către POSIX.1‐2008. Implementări care au astfel de fișiere
ar trebui să le folosească numai dacă sunt deținute de ID-ul utilizatorului real sau de un utilizator corespunzător (pentru
de exemplu, root pe sisteme UNIX) și dacă nu pot fi scrise de niciun alt utilizator decât al lor
proprietar. Fișierele de pornire la nivelul întregului sistem trebuie citite înainte de EXINIT variabilă, $HOME/.exrc,
sau local .exrc dosarele sunt evaluate.

Din punct de vedere istoric, orice ex comanda ar putea fi introdusă în EXINIT variabilă sau cel .exrc fişier,
deși cele care necesită ca tamponul de editare să conțină deja linii de text în general
a determinat scăderea implementărilor istorice ale editorului CORE. POSIX.1‐2008 cere ca
Orice ex comanda să fie permisă în EXINIT variabilă și .exrc fișiere, pentru simplitate a
specificație și consistență, deși multe dintre ele vor eșua în mod evident sub multe
circumstanțe.

Inițializarea conținutului buffer-ului de editare folosește expresia „efectul va”.
fi'' cu privire la diverse ex comenzi. Intenția acestei fraze este aceea de editare tampon
conținutul încărcat în timpul fazei de inițializare să nu fie pierdut; adică încărcarea editării
tamponul ar trebui să eșueze dacă .exrc fișier citit în conținutul unui fișier și nu
ulterior scrieți tamponul de editare. O intenție suplimentară a acestei fraze este de a specifica faptul că
linia și coloana curente inițiale sunt setate așa cum este specificat pentru individ ex comenzi.

Istoric, −t opțiunea s-a comportat ca și cum căutarea de etichete ar fi o +comandă; adică a fost
executat din ultima linie a fișierului specificat de etichetă. Acest lucru a dus la căutare
eșuând dacă modelul a fost un model de căutare înainte și wrapscan opțiunea de editare nu a fost
a stabilit. POSIX.1‐2008 nu permite acest comportament, necesitând căutarea etichetei
modelul să fie efectuat pe întregul fișier și, dacă nu este găsit, ca linia curentă să fie setată
într-o locație mai rezonabilă din fișier.

Din punct de vedere istoric, tamponul de editare gol a fost prezentat pentru editare atunci când un fișier nu a fost specificat de
utilizatorul a fost nenumit. Acest lucru este permis de POSIX.1‐2008; cu toate acestea, implementările sunt
sunt încurajați să ofere utilizatorilor un nume de fișier temporar pentru acest buffer, deoarece le permite
utilizarea ex comenzi care folosesc calea curentă în timpul sesiunilor de editare temporare.

Din punct de vedere istoric, fișierul specificat folosind −t opțiunea nu a făcut parte din argumentul actual
listă. Această practică este permisă de POSIX.1‐2008; cu toate acestea, implementările sunt încurajate
pentru a include numele său în lista de argumente curentă pentru coerență.

Istoric, −c comanda nu a fost în general executată până la un fișier care există deja
a fost editat. POSIX.1‐2008 necesită conformitatea cu această practică istorică. Comandă asta
ar putea provoca −c comanda care urmează să fie executată include ex comenzi edita, următor, recupera,
rewind, și etichetă, Şi vi comenzi ‐^ și ‐]. Din punct de vedere istoric, citirea a
fișierul într-un buffer de editare nu a cauzat −c comanda care urmează să fie executată (chiar dacă ar putea
setați calea curentă), cu excepția faptului că a cauzat −c poruncă să fie
executat dacă: editorul era în ex modul, tamponul de editare nu avea calea curentă, editarea
tamponul era gol și nu s-a încercat încă nicio comandă de citire. Pentru consistență și
simplitatea specificațiilor, POSIX.1‐2008 nu permite acest comportament.

Istoric, −r opțiunea a fost aceeași cu o sesiune de editare normală dacă nu a existat nicio recuperare
informații disponibile pentru dosar. Acest lucru a permis utilizatorilor să introducă:

vi −r *.c

și recuperați orice fișiere puteau fi recuperate. În unele implementări, recuperarea a fost
încercat numai pe primul fișier numit și fișierul nu a fost introdus în argument
listă; în altele, s-a încercat recuperarea pentru fiecare fișier numit. În plus, unele istorice
implementări ignorate −r if −t a fost specificat sau nu a acceptat linia de comandă fişier
argumente cu −t opțiune. Pentru coerența și simplitatea specificațiilor,
POSIX.1‐2008 nu permite aceste cazuri speciale și impune ca recuperarea să fie încercată
prima dată când fiecare fișier este editat.

Punct de vedere istoric, vi initializat ` și ' semne, dar ex nu a. Aceasta însemna că dacă
prima comandă în ex modul a fost vizual sau dacă an ex comanda a fost executată prima (de exemplu,
vi +10 fişier), vi a fost introdus fără ca marcajele să fie inițializate. Pentru că standardul
dezvoltatorii au considerat că mărcile sunt în general utile și pentru consistență și simplitate
de specificație, POSIX.1‐2008 necesită ca acestea să fie întotdeauna inițializate dacă sunt deschise sau
modul vizual sau dacă este în ex modul și tamponul de editare nu este gol. Nu îl inițializați în ex
modul dacă tamponul de editare este gol este o practică istorică; cu toate acestea, așa a fost întotdeauna
este posibil să setați (și să utilizați) marcaje în bufferele de editare goale în modul deschis și de editare vizual
sesiuni.

adresare
Punct de vedere istoric, ex și vi a acceptat formularele suplimentare de adresare '\/' și '\?'. Ei erau
echivalent cu „//” și "??", respectiv. Ele nu sunt cerute de POSIX.1‐2008, în mare parte
pentru că nimeni nu-și poate aminti dacă au făcut vreodată ceva diferit din punct de vedere istoric.

Punct de vedere istoric, ex și vi a permis o adresă de zero pentru mai multe comenzi și a permis
il % adresa în fișiere goale pentru alții. Pentru coerență, POSIX.1‐2008 necesită suport
pentru primul în câteva comenzi în care are sens, și nu-l permite altfel. În
în plus, deoarece POSIX.1‐2008 cere asta % fi echivalent logic cu "1,$", este
de asemenea, susținut acolo unde are sens și interzis altfel.

Istoric, % adresa nu a putut fi urmată de alte adrese. Pentru consistență
și simplitatea specificațiilor, POSIX.1‐2008 necesită ca adrese suplimentare să fie
sprijinit.

Toate următoarele sunt valabile adrese:

+++ Trei rânduri după linia curentă.

/re/− O linie înainte de următoarea apariție a lui re.

−2 Două linii înaintea liniei curente.

3 −−−− 2 Linia unu (rețineți adresa negativă intermediară).

1 2 3 Linia șase.

Orice număr de adrese poate fi furnizat comenzilor care preiau adrese; de exemplu,
„1,2,3,4,5p” tipărește rândurile 4 și 5, deoarece două este cel mai mare număr valid de adrese
acceptat de către imprima comanda. Aceasta, în combinație cu delimitator,
permite utilizatorilor să creeze comenzi bazate pe modele ordonate în fișier. De exemplu, cel
comandă 3;/foo/;+2print va afișa prima linie după linia 3 care conține modelul
foo, plus următoarele două rânduri. Rețineți că adresa 3; trebuie evaluat înainte de a fi
eliminat deoarece originea căutării pentru /foo/ comanda depinde de asta.

Din punct de vedere istoric, valorile ar putea fi adăugate adreselor prin includerea lor după una sau mai multe
personaje; de exemplu, 3 - 5p a scris al șaptelea rând al dosarului și /foo/ 5
a fost la fel ca /foo/+5. Totuși, s-ar putea adăuga doar valori absolute; de exemplu,
5 /foo/ a fost o eroare. POSIX.1‐2008 necesită conformitatea cu practica istorică. Abordare
offset-urile sunt specificate separat de adrese, deoarece ar putea fi istoric
furnizate comenzilor de căutare în mod vizual.

Din punct de vedere istoric, orice adrese lipsă au revenit implicit la linia curentă. Acest lucru a fost adevărat pentru
în frunte și în urmă -adrese delimitate, iar pentru trailing -delimitat
adrese. Pentru coerență, POSIX.1‐2008 îl solicită pentru conducere adrese ca
bine.

Punct de vedere istoric, ex și vi a acceptat '^' caracter atât ca adresă, cât și ca decalaj de steag
pentru comenzi. În ambele cazuri a fost identic cu '-' caracter. POSIX.1‐2008 nu
cere sau interzice acest comportament.

Din punct de vedere istoric, îmbunătățirile aduse expresiilor regulate de bază ar putea fi utilizate în abordare;
de exemplu, '~', '\<', și '\>'. POSIX.1‐2008 necesită conformitatea cu istoricul
practică; adică utilizarea expresiei regulate să fie consecventă și aceea regulată
Îmbunătățirile expresiilor să fie acceptate oriunde sunt folosite expresii regulate.

Comandă Linie Analizare in ex
Istoric ex parsarea comenzilor a fost chiar mai complexă decât cea descrisă aici. POSIX.1‐2008
necesită subsetul de analiză a comenzii pe care dezvoltatorii standard credeau că este
documentate și pe care utilizatorii ar putea în mod rezonabil să-l folosească într-un mod portabil și
care a fost consecvent din punct de vedere istoric între implementări. (Funcționalitatea eliminată este
obscure, în cel mai bun caz.) Implementările istorice vor necesita modificări pentru a se conforma
cu POSIX.1‐2008; cu toate acestea, nu se așteaptă ca utilizatorii să observe niciuna dintre aceste modificări. Cel mai
a complexității în ex analiza este să gestioneze trei cazuri speciale de terminare:

1. !, global, v, și versiunile de filtrare ale citit și scrie comenzile sunt delimitate
de caractere (pot conține personaje care sunt de obicei
țevi de coajă).

2. ex, edita, următor, și vizual în modul deschis și vizual comenzile iau toate ex comenzi,
continand optional personaje, ca primele lor argumente.

3. s comanda ia o expresie regulată ca prim argument și folosește
caractere de delimitare pentru a delimita comanda.

Din punct de vedere istoric, personaje din +comandă argument al ex, edita, următor,
vi, și vizual comenzi, iar în model și înlocuire părți ale s comanda, a făcut
nu delimitează comanda, iar în cazurile de filtrare pt citit și scrie, Şi !, global,
și v comenzi, nu au delimitat deloc comanda. De exemplu, următoarele
comenzile sunt toate valide:

:editează +25 | s/abc/ABC/ file.c
:s/ | /PIPE/
:citeste !spell % | coloane
:global/model/p | l
:s/a/b/ | s/c/d | a stabilit

Din punct de vedere istoric, gol sau rânduri completate .exrc fișiere și sursăd (precum și
EXINIT variabile şi ex scripturi de comandă) au fost tratate ca comenzi implicite; acesta este, imprima
comenzi. POSIX.1‐2008 necesită în mod specific ca acestea să fie ignorate atunci când sunt întâlnite în
.exrc și sursăd pentru a elimina o sursă comună de erori de utilizator nou.

Punct de vedere istoric, ex comenzi cu mai multe adiacente (sau -separate) linii verticale
au fost tratate ciudat când au fost executate din ex modul. De exemplu, comanda ||| <căruța-
return>, când cursorul era pe linia 1, afișau rândurile 2, 3 și 5 ale fișierului. În
în plus, comanda | ar afișa doar linia după următoarea linie, în loc de
următoarele două rânduri. Primul a funcționat mai logic atunci când a fost executat de la vi mod și afișat
rândurile 2, 3 și 4. POSIX.1‐2008 necesită vi comportament; adică un singur implicit
incrementarea numărului de comandă și de linie pentru fiecare separator de comandă și final
personaje după separatoarele sunt aruncate.

Punct de vedere istoric, ex permis un singur plus ca personaj principal de comandă; pentru
exemplu, :g/model/:p a fost o comandă validă. POSIX.1‐2008 generalizează acest lucru pentru a cere ca
orice număr de lideri caracterele să fie dezbrăcate.

Din punct de vedere istoric, orice prefix al șterge comanda putea fi urmată fără a interveni
caractere printr-un caracter steag deoarece în comandă d p, p este interpretat ca fiind
tampon p. POSIX.1‐2008 necesită conformitatea cu practica istorică.

Istoric, k comanda putea fi urmată de numele mărcii fără a interveni
personaje. POSIX.1‐2008 necesită conformitatea cu practica istorică.

Istoric, s comanda ar putea fi urmată imediat de caractere de tip steag și opțiune;
de exemplu, s/e/E/|s|sgc3p a fost o comandă validă. Cu toate acestea, caracterele steag nu au putut rezista
singur; de exemplu, comenzile sp și s l ar eșua, în timp ce comanda Vă rog și s gl
ar reuși. (Evident, '#' caracterul steag a fost folosit ca caracter delimitator dacă acesta
a urmat comanda.) O altă problemă a fost că caracterele de opțiune trebuiau să precedă flag
caractere chiar și atunci când comanda a fost complet specificată; de exemplu, comanda s/e/E/pag
ar eșua, în timp ce comanda s/e/E/gp ar reuși. POSIX.1‐2008 necesită conformitatea cu
practica istorica.

Din punct de vedere istoric, primul nume de comandă care avea un prefix care se potrivește cu intrarea de la utilizator
a fost comanda executată; de exemplu, ve, Ver, și la toate au executat versiune comanda.
Comenzile erau însă într-o anumită ordine, astfel încât a potrivire adăuga, Nu prescurtare.
POSIX.1‐2008 necesită conformitatea cu practica istorică. Restricția de comandă
Ordinea de căutare a implementărilor cu extensii este aceea de a evita adăugarea unor comenzi precum
că prefixele istorice nu ar funcționa portabil.

Implementări istorice ale ex și vi nu a gestionat corect multiple ex comenzi,
separat de caractere care au intrat sau au ieșit din modul vizual sau din editor.
Deoarece implementările de vi există care nu prezintă acest mod de eroare, POSIX.1‐2008
nu-i permite.

Cerința ca numele comenzilor alfabetice să fie compuse din toate următoarele alfabete
caractere până la următorul caracter non-alfabetic înseamnă că numele de comenzi alfabetice
trebuie să fie separate de argumentele lor prin unul sau mai multe caractere non-alfabetice, în mod normal
A sau '!' caracter, cu excepția celor specificate pentru excepții, the șterge, k, și s
comenzi.

Din punct de vedere istoric, execuția repetată a ex lipsă imprima comenzi ( -D, EOF,
, ) a șters orice caracter de solicitare și a afișat rândurile următoare
fără a derula terminalul; adică imediat sub orice linii afișate anterior.
Acest lucru a oferit utilizatorului o prezentare mai curată a liniilor din fișier. POSIX.1‐2008
nu necesită acest comportament deoarece poate fi imposibil în unele situații; in orice caz,
implementările sunt încurajate să ofere această semantică dacă este posibil.

Din punct de vedere istoric, a fost posibil să se schimbe fișierele în mijlocul unei comenzi și să aibă
restul comenzii executate în noul fișier; de exemplu:

edita: +25 dosar.c | s/abc/ABC/ | 1

a fost o comandă validă, iar înlocuirea a fost încercată în fișierul nou editat.
POSIX.1‐2008 necesită conformitatea cu practica istorică. Următoarele comenzi sunt
exemple care exercită ex analizator:

ecou 'foo | bar' > fisier1; ecou „foo/bar” > fisier2;
vi
edita: +1 | s/|/PIPE/ | w file1 | e file2 | 1 | s/\//SLASH/ | wq

Din punct de vedere istoric, nu a existat nicio protecție în implementările editorului de evitat ex global, v, @,
or * comenzile modificând bufferele de editare în timpul executării comenzilor asociate. pentru că
acest lucru ar duce aproape invariabil la un eșec catastrofal al editorului și
există implementări care prezintă aceste probleme, POSIX.1‐2008 necesită această schimbare
tamponul de editare în timpul a global or v comanda, sau în timpul a @ or * comanda pentru care acolo
va fi mai mult decât o singură execuție, va fi o eroare. Implementări care acceptă mai multe
editarea bufferelor simultan sunt încurajate să aplice aceeași semantică
comutarea între tampoane, de asemenea.

ex citatul de comandă cerut de POSIX.1‐2008 este un supraset al citatului în istoric
implementări ale editorului. De exemplu, din punct de vedere istoric, nu a fost posibil să scape de a
într-un nume de fișier; de exemplu, edita: foo\\\ bar ar raporta că prea multe nume de fișiere
fusese introdusă pentru comanda de editare și nu exista nicio metodă de a scăpa a în
primul argument al unui edita, ex, următor, Sau vizual comanda deloc. POSIX.1‐2008 se extinde
practica istorică, care impune ca comportamentul citat să fie consecvent în toate ex
comenzi, cu excepția Hartă, dezhare, prescurtare, și neabreviat comenzi, care
folosit istoric ‐V în loc de caractere pentru citat. Pentru cei
patru comenzi, POSIX.1‐2008 necesită conformitatea cu practica istorică.

Backslash citând ex este neintuitivă. -scăpările sunt ignorate decât dacă acestea
scăpa de un caracter special; de exemplu, atunci când executați fişier extinderea argumentului, cel
şir „\\%” este echivalent cu „\%”, nu "\curent caii de acces>>". Acest lucru poate fi confuz pentru
utilizatorii deoarece este de obicei unul dintre personajele care cauzează extinderea shell-ului la
să fie efectuate și, prin urmare, trebuie luate în considerare regulile de citare a shell-ului.
În general, citarea caracterelor este luată în considerare numai dacă scapă de un caracter special și
trebuie furnizat un caracter de ghilimele pentru fiecare strat de analiză pentru care este caracterul
special. Ca un alt exemplu, doar unul singur este necesar pentru '\l' secvenţă
în modele de înlocuire de înlocuire, deoarece caracterul 'l' nu este special pentru niciunul
stratul de analiză deasupra acestuia.

‐V citând în ex este ușor diferită de citarea cu bară oblică inversă. În cele patru
comenzi unde Se aplică ghilimele V (prescurtare, neabreviat, Hartă, și dezhare), orice
caracterul poate fi scăpat de a ‐V dacă ar avea sau nu un sens special.
POSIX.1‐2008 necesită conformitatea cu practica istorică.

Implementările istorice ale editorului nu au necesitat delimitatori în caractere
clase de evadat; de exemplu, comanda :s/[/]// pe sfoară "xxx/aaaa" ar
ștergeți „/” din sfoară. POSIX.1‐2008 interzice această practică istorică pentru
consecvență și pentru că pune o povară mare asupra implementărilor, solicitând asta
cunoștințele expresiilor regulate să fie integrate în analizatorul editorului.

Din punct de vedere istoric, citând personaje în ex comenzile au fost tratate inconsecvent. În
cele mai multe cazuri, cel caracterul a terminat întotdeauna comanda, indiferent de oricare
caracter de evadare precedent, deoarece personajele nu au scăpat
personaje pentru majoritatea ex comenzi. Cu toate acestea, unii ex comenzi (de exemplu, s, Hartă, și
abreviere) permis caractere care trebuie scăpate (deși în cazul Hartă
și abreviere, Caracterele ‐V le-au scăpat în loc de personaje).
Acest lucru a fost adevărat nu numai în linia de comandă, ci și .exrc și sursăd fișiere. De exemplu,
comanda:

Hartă = foo bar

ar reuși, deși uneori era dificil să obții ‐V și cea inserată
a trecut la ex analizator. Pentru coerența și simplitatea specificațiilor,
POSIX.1‐2008 cere să fie posibilă evadarea personaje în ex comenzi la
tot timpul, folosind personaje pentru majoritatea ex comenzi și utilizarea ‐V
personaje pentru Hartă și abreviere comenzi. De exemplu, comanda
imprimalistă este necesar să fie analizat ca o singură comandă imprimalistă.
Deși acest lucru diferă de practica istorică, dezvoltatorii POSIX.1‐2008 au considerat că este puțin probabil
că orice script sau utilizator depindea de comportamentul istoric.

Din punct de vedere istoric, o eroare într-o comandă specificată folosind −c opțiunea nu a cauzat restul
a −c comenzile care trebuie aruncate. POSIX.1‐2008 nu permite acest lucru din motive de consecvență cu
cheile mapate, @, global, sursă, și v comenzile, EXINIT variabilă de mediu și
il .exrc fișiere.

Intrare Editarea in ex
Una dintre utilizările comune ale istoricului ex Editorul are conexiuni lente la rețea.
Editorii care rulează în modul canonic pot necesita mult mai puțin trafic către și de la și mult mai puțin
procesarea pe, mașina gazdă, precum și suportarea mai ușor a terminalelor în modul bloc.
Din aceste motive, POSIX.1‐2008 impune ca ex să fie implementat utilizând intrarea în modul canonic
prelucrare, așa cum sa făcut istoric.

POSIX.1‐2008 nu necesită istoricul de editare a celor 4 caractere de intrare BSD „Ștergere cuvânt”
sau ``literal next''. Din acest motiv, nu este specificat cum sunt tratate de către ex,
deşi trebuie să aibă efectul cerut. Implementări care le rezolvă după
linia a fost încheiată folosind a sau ‐M caracter și implementări care
se bazează pe suportul terminal al sistemului de bază pentru această procesare, ambele sunt conforme.
Implementările sunt îndemnate să utilizeze funcționalitatea de bază a sistemului, dacă este deloc
posibil, pentru compatibilitate cu alte interfețe de introducere a textului sistemului.

Din punct de vedere istoric, când EOF caracterul a fost folosit pentru a decrementa autoindentare nivel,
cursorul a fost mutat pentru a afișa noul capăt al autoindentare personaje, dar nu a mutat
cursorul pe o nouă linie și nici nu a șters ‐D caracter din linie.
POSIX.1‐2008 nu specifică că cursorul rămâne pe aceeași linie sau că restul
linia este ștearsă; cu toate acestea, implementările sunt puternic încurajate pentru a oferi cele mai bune
posibilă interfață cu utilizatorul; adică, cursorul ar trebui să rămână pe aceeași linie și orice
Caracterul ‐D de pe linie trebuie șters.

POSIX.1‐2008 nu necesită caracterul istoric de editare cu 4 intrări BSD „reprint”;
tradiţional ‐R, care a reafișat intrarea curentă de la utilizator. Pentru asta
motiv și pentru că funcționalitatea nu poate fi implementată după ce linia a fost
reziliat de utilizator, POSIX.1‐2008 nu impune cerințe cu privire la această funcționalitate.
Implementările sunt îndemnate cu tărie pentru a face disponibilă această funcționalitate istorică, dacă
posibil.

Din punct de vedere istoric, ‐Q nu a efectuat o funcție literală următoare în ex, așa cum a făcut în vi.
POSIX.1‐2008 necesită conformitatea cu practica istorică pentru a evita încălcarea istoricului ex
scripturi și .exrc fișiere.

EOF
Indiferent dacă EOF caracterul modifică imediat autoindentare caracterele din prompt este
lăsat nespecificat, astfel încât implementările să se poată conforma în prezența sistemelor care o fac
nu acceptă această funcționalitate. Implementările sunt încurajate să modifice linia și
reafișează-l imediat, dacă este posibil.

Specificația de manipulare a EOF caracterul diferă de practica istorică
numai în asta EOF caracterele nu sunt eliminate dacă urmează caracterele normale din text
intrare. Din punct de vedere istoric, au fost întotdeauna aruncate.

Comandă Descrieri in ex
Din punct de vedere istoric, mai multe comenzi (de exemplu, global, v, vizual, s, scrie, wq, smulge, !, <,
>, &, și ~) au fost executabile în fișiere goale (adică adresa(e) implicită(e) au fost 0), sau
adresele explicite permise de 0 (de exemplu, 0 a fost o adresă validă sau 0,0 a fost o adresă validă
gamă). Adresele 0 sau executarea comenzii într-un fișier gol au sens numai pentru
comenzi care adaugă text nou în memoria tampon de editare sau comenzi de scriere (deoarece utilizatorii ar putea dori
scrie fișiere goale). POSIX.1‐2008 necesită acest comportament pentru astfel de comenzi și nu îl permite
în caz contrar, pentru consistența și simplitatea specificațiilor.

O numărare până la an ex comanda a fost corectată din punct de vedere istoric pentru a nu fi mai mare decât ultima
linie într-un fișier; de exemplu, într-un fișier cu cinci linii, comanda 1,6 imprimare ar eșua, dar
comandă 1print300 ar reuși. POSIX.1‐2008 necesită conformitatea cu practica istorică.

Din punct de vedere istoric, utilizarea steagurilor în ex comenzile ar putea fi obscure. Istoric general
practica a fost descrisă de POSIX.1‐2008, dar au existat unele cazuri speciale. Pentru
exemplu, cel listă, număr, și imprima comenzile au ignorat decalajele adresei de sfârșit; pentru
exemplu, 3p +++# ar afișa linia 3, iar 3 ar fi linia curentă după execuție
a comenzii. The deschide și vizual comenzile au ignorat atât offset-urile finale, cât și
steagurile trase. De asemenea, steaguri specificate pentru deschide și vizual comenzile au interacționat prost
cu listă opțiunea de editare și setarea și apoi dezactivarea acesteia în timpul deschiderii/vizualului
sesiune ar cauza vi pentru a opri afișarea liniilor în formatul specificat. Pentru consistență
și simplitatea specificațiilor, POSIX.1‐2008 nu permite niciuna dintre aceste excepții
regula generală.

POSIX.1‐2008 folosește cuvântul copiaţi în mai multe locuri când se discută despre tampon. Aceasta nu e
menite să implice implementare.

Punct de vedere istoric, ex utilizatorii nu au putut specifica buffer-uri numerice din cauza ambiguității
ar cauza; de exemplu, în comandă 3 șterge 2, nu este clar dacă 2 este un tampon
nume sau a conta. POSIX.1‐2008 necesită conformarea cu practica istorică în mod implicit, dar
nu exclude prelungiri.

Din punct de vedere istoric, conținutul buffer-ului nenumit a fost frecvent aruncat după comenzi
care nu l-a afectat în mod explicit; de exemplu, atunci când utilizați edita comanda de comutare
fișiere. Pentru consistență și simplitate a specificațiilor, POSIX.1‐2008 nu permite acest lucru
comportament.

ex utilitatea nu a avut istoric acces la tampoanele numerice și, în plus,
ștergerea liniilor în ex nu le-a modificat conținutul. De exemplu, dacă, după ce ați făcut o ștergere
in vi, utilizatorul a trecut la ex, a făcut o altă ștergere, apoi a trecut înapoi la vi,
conținutul bufferelor numerice nu s-ar fi schimbat. POSIX.1‐2008 necesită conformitate
la practica istorică. Tampoanele numerice sunt descrise în ex utilitate pentru a
limitați descrierea bufferelor la o singură locație în POSIX.1‐2008.

Metacaracterele care declanșează extinderea shell-ului în fişier argumentele se potrivesc cu istoricul
practică, la fel ca și metoda de a face extinderea shell-ului. Implementări care doresc să ofere
utilizatorii care au flexibilitatea de a modifica setul de metacaractere sunt încurajați să ofere a
shellmeta opțiunea de editare a șirurilor.

Punct de vedere istoric, ex comenzi executate de la vi a reîmprospătat ecranul când nu a făcut-o strict
trebuie să facă acest lucru; de exemplu, :!Data > / Dev / null nu necesită o reîmprospătare a ecranului deoarece
ieșirea UNIX data comanda necesită doar o singură linie a ecranului.
POSIX.1‐2008 necesită ca ecranul să fie reîmprospătat dacă a fost suprascris, dar face
nu există cerințe cu privire la modul în care o implementare ar trebui să ia această determinare.
Implementările pot solicita și reîmprospăta ecranul, indiferent.

Abreviați
Practica istorică a fost caracterele care au fost introduse ca parte a unei abrevieri
înlocuirea au fost supuse Hartă extinderi, cel spectacol opțiunea de editare, mai departe
extinderea abrevierilor și așa mai departe; adică au fost împinși în mod logic pe terminal
coada de intrare și nu au fost un simplu înlocuitor. POSIX.1‐2008 necesită conformitatea cu
practica istorica. Practica istorică a fost că ori de câte ori un caracter non-cuvânt (care avea
nu a fost scăpat de a ‐V) a fost introdus după un caracter de cuvânt, vi ar verifica pentru
abrevieri. Verificarea s-a bazat pe tipul caracterului introdus înaintea cuvântului
caracterul perechii cuvânt/non-cuvânt care a declanșat verificarea. Personajul cuvânt al
perechea cuvânt/non-cuvânt care a declanșat verificarea și toate caracterele introduse înainte de declanșare
perechi care erau de acest tip au fost incluse în cec, cu excepția
caractere, care delimitau întotdeauna abrevierea.

Aceasta înseamnă că, pentru ca abrevierea să funcționeze, lhs trebuie să se încheie cu un caracter de cuvânt,
nu pot exista tranziții de la caractere cuvant la caractere non-cuvânt (sau viciu versa) în afară de
între ultimul și penultimul caractere din lhs, și nu poate exista
personaje din lhs. În plus, din cauza regulilor istorice de citare, a fost
imposibil de introdus un literal ‐V în lhs. POSIX.1‐2008 necesită conformitate
la practica istorică. Implementările istorice nu au informat utilizatorii când abrevierile
care nu au putut fi folosite niciodată au fost introduse; implementările sunt puternic încurajate să facă acest lucru.

De exemplu, următoarele abrevieri vor funcționa:

:ab (p A INLOCUI
:ab p A INLOCUI
:ab ((pag A INLOCUI

Următoarele abrevieri nu vor funcționa:

:ab ( A INLOCUI
:ab (pag A INLOCUI

Practica istorică este că cuvintele pe vi linia de comandă două puncte au fost supuse
extinderea abrevierilor, inclusiv argumentele la abrev (și mai interesant) cel
neabrev comanda. Pentru că există implementări care nu fac extinderea abrevierilor
pentru primul argument al acelor comenzi, acest lucru este permis, dar nu cerut, de
POSIX.1‐2008. Cu toate acestea, următoarea secvență:

:ab foo bar
:ab foo Baz

a avut ca rezultat adăugarea unei abrevieri a "baz" pentru sfoară "bar" în istoric
ex/vi, și secvența:

:ab foo1 bar
:ab foo2 bar
:neprescurtat foo2

a sters abrevierea "foo1", Nu "foo2". Aceste comportamente nu sunt permise de
POSIX.1‐2008 deoarece încalcă în mod clar așteptările utilizatorului.

Practica istorică a fost aceea ‐V, nu , caracterele să fie interpretate ca
evadând caracterele ulterioare din prescurtare comanda. POSIX.1‐2008 necesită
conformitatea cu practica istorică; cu toate acestea, trebuie remarcat faptul că o abreviere
conţinând a nu va funcționa niciodată.

Adăuga
Din punct de vedere istoric, orice text care urmează unui separator de comandă după an adăuga,
Schimbare, Sau insera comanda a devenit parte a textului de inserare. De exemplu, în comanda:

:g/pattern/append|lucruri1

o linie care contine textul "lucruri1" ar fi atașat la fiecare model de potrivire de linie. Aceasta
a fost, de asemenea, valabil din punct de vedere istoric pentru a introduce:

:append|lucruri1
chestii2
.

iar textul de pe ex linia de comandă va fi atașată împreună cu textul inserat după
aceasta. Cu toate acestea, a existat o eroare istorică, conform căreia utilizatorul a trebuit să introducă două terminații
liniile (cel '.' linii) pentru a termina modul de introducere a textului în acest caz. POSIX.1‐2008 necesită
conformarea cu practica istorică, dar nu permite nevoia istorică de multiplu
linii de terminare.

Schimba
Vezi MOTIVUL pentru adăuga comanda. Practică istorică pentru poziționarea cursorului după
comanda de modificare atunci când nu este introdus text, este cea descrisă în POSIX.1‐2008. Cu toate acestea, unul
Se știe că implementarea sistemului V a fost modificată astfel încât cursorul să fie poziționat
pe prima adresă specificată și nu pe linia de dinaintea primei adrese. POSIX.1‐2008
nu permite această modificare pentru consecvență.

Istoric, Schimbare comanda nu a suportat argumente buffer, deși unele
implementările permit specificarea unui buffer opțional. Acest comportament nu este nici unul
cerut și nici interzis de POSIX.1‐2008.

Schimba director
O extensie comună în ex implementări este de a folosi elementele a cdpath opțiunea de editare ca
directoare de prefix pentru cale argumente la chdir care sunt nume de căi relative și care nu
avea '.' or ".." ca prima lor componentă. Elementele din cdpath opțiunea de editare sunt
-separat. Valoarea inițială a cdpath opțiunea de editare este valoarea shell-ului
CDPATH variabilă de mediu. Această caracteristică nu a fost inclusă în POSIX.1‐2008 deoarece o face
nu există în niciuna dintre implementările considerate practică istorică.

Copiați
Implementări istorice ale ex copii permise pe liniile din interiorul intervalului specificat;
de exemplu, :2,5copie3 a fost o comandă validă. POSIX.1‐2008 necesită conformitatea cu
practica istorica.

Șterge
POSIX.1‐2008 necesită suport pentru analiza istorică a unui șterge comandă urmată de
steaguri, fără a interveni personaje. De exemplu:

1dp Șterge prima linie și tipărește linia care a fost a doua.

1delep În ceea ce privește 1dp.

1d Șterge prima linie, salvând-o în buffer p.

1d p1l (Pee-one-ell.) Șterge prima linie, salvând-o în buffer p, și listând linia
asta a fost al doilea.

Editati
Din punct de vedere istoric, orice ex comanda poate fi introdusă ca a +comandă argument la edita comanda,
deși unii (de exemplu, insera și adăuga) erau cunoscute pentru a confunda istoricul
implementari. Pentru coerența și simplitatea specificațiilor, POSIX.1‐2008 necesită
ca orice comandă să fie susținută ca argument pentru edita comanda.

Din punct de vedere istoric, argumentul comenzii a fost executat cu linia curentă setată la ultima linie
a dosarului, indiferent dacă edita comanda a fost executată din modul vizual sau nu.
POSIX.1‐2008 necesită conformitatea cu practica istorică.

Istoric, +comandă specificat la edita și următor comenzile a fost delimitată de
primul , și nu a existat nicio modalitate de a le cita. Pentru coerență, POSIX.1‐2008 necesită
că de obicei ex să fie furnizate citate cu bară oblică inversă.

Din punct de vedere istoric, specificând +comandă argumentul pentru comanda de editare necesita un nume de fișier pentru
fie specificate de asemenea; de exemplu, edita: +100 ar eșua întotdeauna. Pentru consistență și
simplitatea specificațiilor, POSIX.1‐2008 nu permite ca această utilizare să eșueze pentru asta
motiv.

Din punct de vedere istoric, numai poziția cursorului ultimului fișier editat a fost reținută de
editor. POSIX.1‐2008 necesită ca acest lucru să fie suportat; cu toate acestea, implementările sunt
permis să rețină și să restabilească poziția cursorului pentru orice fișier editat anterior.

Fișier
Versiuni istorice ale ex editor fişier comanda a afișat o linie curentă și un număr de
linii în tamponul de editare de 0 când fișierul era gol, în timp ce vi Comanda ‐G
a afișat o linie curentă și un număr de linii în tamponul de editare de 1 în același
situatie. POSIX.1‐2008 nu permite această discrepanță, ci necesită un mesaj
va fi afișat indicând faptul că fișierul este gol.

Caritate
Operația în două treceri a global și v comenzile nu este destinat să implice
implementare, doar rezultatul necesar al operațiunii.

Linia și coloana curente sunt setate așa cum este specificat pentru individ ex comenzi. Acest
cerința este cumulativă; adică linia și coloana curente trebuie să urmărească pe toate
comenzile executate de către global or v comenzi.

Insera
Vezi MOTIVUL pentru adăuga comanda.

Punct de vedere istoric, insera nu a putut fi folosit cu o adresă zero; adică nu atunci când editează
tamponul era gol. POSIX.1‐2008 necesită ca această comandă să se comporte în mod consecvent cu
adăuga comanda.

Alatura-te
Acțiunea lui alătura comanda în raport cu caracterele speciale este definită numai pentru
localitatea POSIX deoarece cantitatea corectă de spațiu alb după o perioadă variază; în
Japoneză nu este necesară, în franceză doar un singur spațiu și așa mai departe.

Listă
Producția istorică a listă comanda era potențial ambiguă. Standardul
dezvoltatorii credeau că corectarea acestui lucru este mai importantă decât aderarea la istoric
practică, iar POSIX.1‐2008 necesită rezultate clare.

Hartă
Din punct de vedere istoric, hărțile modului de comandă se aplicau numai numelor de comenzi; de exemplu, dacă
caracter 'X' a fost mapat la 'y', comanda fx căutat pe 'X' caracterul, nu
'y' caracter. POSIX.1‐2008 necesită acest comportament. Din punct de vedere istoric, intrând ‐V ca
primul caracter al lui a vi comanda a fost o eroare. S-au extins mai multe implementări
semantica lui vi astfel încât ‐V înseamnă că caracterul de comandă următor este
necartografiate. Acest lucru este permis, dar nu obligatoriu, de către POSIX.1‐2008. Indiferent, folosind
‐V pentru a scăpa de al doilea caracter sau ulterior dintr-o secvență de caractere care ar putea
potrivire a Hartă comanda, sau orice caracter în modul de introducere a textului, este o practică istorică și
împiedică cheile introduse să se potrivească cu o hartă. POSIX.1‐2008 necesită conformitatea cu
practica istorica.

Implementările istorice au permis ca cifrele să fie folosite ca a Hartă comandă lhs, dar apoi
a ignorat harta. POSIX.1‐2008 necesită ca cifrele mapate să nu fie ignorate.

Implementarea istorică a Hartă comanda nu a permis Hartă comenzi care au fost
lungime mai mare de un singur caracter dacă primul caracter a fost imprimabil. Acest comportament
este permis, dar nu obligatoriu, de către POSIX.1‐2008.

Din punct de vedere istoric, caracterele mapate au fost remapate, cu excepția cazului în care remaparea opțiunea de editare nu a fost setată sau
prefixul caracterelor mapate se potrivea cu caracterele mapate; de exemplu, în
Hartă:

:Hartă ab a B C D

personajele "ab" au fost folosite ca atare și nu au fost remapate, ci personajele "CD" au fost
cartografiat dacă este cazul. Acest lucru poate provoca bucle infinite în vi mecanisme de cartografiere.
POSIX.1‐2008 necesită conformitatea cu practica istorică și ca astfel de bucle să fie
întreruptibilă.

Hărțile de introducere a textului au avut aceleași probleme cu extinderea lhs pentru ex Hartă! și dezarhivați!
comanda la fel ca și ex prescurtare și neabreviat comenzi. Vezi MOTIVUL pentru ex
prescurtare comanda. POSIX.1‐2008 necesită modificare similară a unor practici istorice
pentru Hartă și dezhare comenzi, așa cum este descris pentru prescurtare și neabreviat comenzi.

Punct de vedere istoric, Hartăs care erau subseturi de altele Hartăs-au comportat diferit în funcție de
ordinea în care au fost definite. De exemplu:

:Hartă! ab mic de statura
:Hartă! abc lung

ar traduce întotdeauna personajele "ab" la "mic de statura", indiferent de cât de repede este
caractere "abc" au fost introduse. Dacă ordinea de intrare a fost inversată:

:Hartă! abc lung
:Hartă! ab mic de statura

personajele "ab" ar determina editorul să întrerupă, așteptând finalizarea 'c'
caracter și s-ar putea ca personajele să nu fie mapate niciodată "mic de statura". Pentru consistență și
simplitatea specificațiilor, POSIX.1‐2008 necesită utilizarea cea mai scurtă potrivire
ori.

Timpul pe care editorul îl petrece așteptând ca personajele să finalizeze lhs is
nespecificat deoarece capacitățile de sincronizare ale sistemelor sunt adesea inexacte și variabile și
poate depinde de alți factori, cum ar fi viteza conexiunii. Timpul ar trebui să fie
suficient de lung pentru ca utilizatorul să poată finaliza secvența, dar nu suficient de lung pentru
utilizatorul trebuie să aștepte. Unele implementări ale vi au adăugat o timp cheie opțiunea, care
permite utilizatorilor să seteze numărul de 0,1 secunde pe care editorul așteaptă finalizarea
personaje. Deoarece funcția terminalului mapat și tastele cursorului tind să înceapă cu un
caracter, și este finalul cheie vi modul de introducere a textului, Hartăe incepand cu
caracterele sunt, în general, scutite de această perioadă de expirare sau, cel puțin, expiră
diferit.

marca
Din punct de vedere istoric, utilizatorii au putut seta în mod explicit marcajele „context anterior”. În
în plus, cel ex comenzi '' și '` si vi comenzi '', ``, `', și '` toate la care se face referire
aceeasi marca. În plus, mărcile de context anterioare nu au fost setate dacă comanda, cu
căruia i-a fost asociată setarea de adresă marcajul, a eșuat. POSIX.1‐2008 necesită
conformitatea cu practica istorică. Din punct de vedere istoric, dacă liniile marcate au fost șterse, marca
a fost, de asemenea, șters, dar ar reapărea dacă modificarea ar fi anulată. POSIX.1‐2008 necesită
conformitatea cu practica istorică.

Descrierea evenimentelor speciale care au stabilit ` și ' marchează meciuri istorice
practică. De exemplu, istoric comanda /a/,/b/ nu a setat ` și ' semne, dar
comanda /a/,/b/delete a făcut.

Pagina Următoare →
Din punct de vedere istoric, orice ex comanda poate fi introdusă ca a +comandă argument la următor comanda,
deși unii (de exemplu, insera și adăuga) erau cunoscute pentru a confunda istoricul
implementari. POSIX.1‐2008 cere ca orice comandă să fie permisă și să se comporte ca
specificat. The următor comanda poate accepta mai mult de un fișier, deci utilizări cum ar fi:

următor `ls [abc] `

este valabil; nu trebuie să fie valabil pentru edita or citit comenzi, de exemplu, pentru că acestea
așteptați doar un singur nume de fișier.

Istoric, următor comanda s-a comportat diferit de cel :rebobinare comandă în asta
a ignorat steagul de forță dacă scriere automată steagul a fost pus. Pentru coerență, POSIX.1‐2008 face
nu permite acest comportament.

Istoric, următor comanda poziționează cursorul ca și cum fișierul nu ar fi fost niciodată editat
înainte, indiferent. POSIX.1‐2008 nu permite acest comportament, pentru coerență cu
edita comanda.

Implementări care doresc să ofere o contrapartidă la următor comanda care a editat
fișierul anterior a folosit comanda anterior], care ia nr fişier argument. POSIX.1‐2008
nu necesită această comandă.

Operatii Deschise
Istoric, deschide comanda ar eșua dacă deschide opțiunea de editare nu a fost setată.
POSIX.1‐2008 nu menționează deschide opțiunea de editare și nu necesită acest comportament.
Unele implementări istorice nu permit intrarea în modul deschis din modul deschis sau vizual,
numai din ex modul. Pentru coerență, POSIX.1‐2008 nu permite acest comportament.

Din punct de vedere istoric, intrarea în modul deschis din linia de comandă (adică vi +deschis) a dus la
comportamente anormale; de exemplu, cel ex fișier și set comenzile și vi comandă
‐G nu a funcționat. Pentru coerență, POSIX.1‐2008 nu permite acest comportament.

Istoric, deschide numai comanda permisă „/” caractere care vor fi folosite ca căutare
delimitator de model. Pentru consecvență, POSIX.1‐2008 necesită utilizarea delimitatorilor de căutare
langa s, global, și v comenzile să fie și ele acceptate.

păstra
păstra comanda nu determină istoric ca fișierul să fie considerat nemodificat pentru
scopurile comenzilor viitoare care pot ieși din editor. POSIX.1‐2008 necesită
conformitatea cu practica istorică.

Documentația istorică a afirmat că e-mailul nu a fost trimis utilizatorului atunci când a fost păstrat
executat; cu toate acestea, implementările istorice au trimis e-mail în acest caz. POSIX.1‐2008
necesită conformitatea cu implementările istorice.


Scrierea NUL de către imprima comanda nu este specificată ca un caz special deoarece
dezvoltatorii standard nu au vrut să solicite ex pentru a accepta caractere NUL. Din punct de vedere istoric,
caracterele au fost afișate folosind mapările standard ARPA, care sunt după cum urmează:

1. Caracterele imprimabile sunt lăsate în pace.

2. Caracterele de control mai mici decât \177 sunt reprezentate ca '^' urmat de personaj
compensat de la '@' caracter în harta ASCII; de exemplu, \007 este reprezentat ca
'^G'.

3. \177 este reprezentat ca '^' urmată de '?'.

Afișarea caracterelor cu al optulea set de biți a fost mai puțin standard. Existent
implementările folosesc hex (0x00), octal (\000) și un afișaj meta-bit. (Acesta din urmă
octeții afișați care aveau al optulea bit setat ca cele două caractere "M-" urmată de
afișaj pe șapte biți așa cum este descris mai sus.) Acesta din urmă are probabil cea mai bună pretenție
practică istorică deoarece a fost folosită pentru −v opțiunea de 4 BSD și 4 derivate din BSD
versiuni ale pisică utilitate din 1980.

POSIX.1‐2008 nu solicită un format de afișare specific.

Dependența explicită de setul de caractere ASCII a fost evitată acolo unde este posibil, de unde
utilizarea expresiei o „secvență de mai multe caractere definită de implementare” pentru afișare
de caractere care nu pot fi imprimate, de preferință față de utilizarea istorică a, de exemplu, "^I"
pentru . Implementările sunt încurajate să se conformeze practicii istorice în
absența oricărui motiv puternic de a diverge.

Din punct de vedere istoric, toate ex comenzi care încep cu litera 'p' putea fi introdus folosind
versiuni cu majuscule ale comenzilor; de exemplu, Imprimare], păstrează, și A pune] au fost toate
nume de comandă valide. POSIX.1‐2008 permite, dar nu impune, această practică istorică
deoarece formele majuscule ale comenzilor sunt folosite de unele implementări în alte scopuri.

Pune
Din punct de vedere istoric, un ex pune comanda, executată din modul deschis sau vizual, a fost aceeași cu cea
modul deschis sau vizual P comandă, dacă tamponul a fost numit și a fost tăiat în modul caracter și
la fel ca p comanda dacă tamponul a fost numit și tăiat în modul linie. Dacă cel nenumit
buffer a fost sursa textului, întreaga linie din care a fost preluat textul a fost
obișnuit pune, iar tamponul a fost gestionat ca și cum în modul linie, dar a fost posibil să se obțină
comportament extrem de anormal. În plus, folosind Q comanda pentru a comuta ex modul, și
apoi făcând o pune a dus adesea la erori, cum ar fi atașarea textului care a fost
fără legătură cu conținutul (presupus) al tamponului. Pentru consistența și simplitatea
specificație, POSIX.1‐2008 nu permite aceste comportamente. Toate ex pune comenzile sunt
necesare pentru a funcționa în modul linie, iar conținutul bufferelor nu este modificat de
schimbarea modului editorului.

Citeste
Din punct de vedere istoric, un ex citit comandă executată din modul deschis sau vizual, executată într-un gol
fișier, a lăsat o linie goală ca prima linie a fișierului. Pentru consistența și simplitatea
specificația, POSIX.1‐2008 nu permite acest comportament. Din punct de vedere istoric, a citit în deschis
sau modul vizual dintr-un program a lăsat cursorul la ultima linie citită, nu la prima. Pentru
consecvență, POSIX.1‐2008 nu permite acest comportament.

Implementări istorice ale ex nu au putut să anuleze citit comenzi care citesc din
ieșirea unui program. Pentru coerență, POSIX.1‐2008 nu permite acest comportament.

Istoric, ex și vi mesaj după un succes citit or scrie comanda specificată
``caractere'', nu ``octeți''. POSIX.1‐2008 necesită ca numărul de octeți să fie
afișat, nu numărul de caractere, deoarece poate fi dificil în multi-byte
implementări pentru a determina numărul de caractere citite. Implementările sunt încurajate
pentru a clarifica mesajul afișat utilizatorului.

Din punct de vedere istoric, citirile nu au fost permise pe alte fișiere decât tipul obișnuit, cu excepția FIFO
fișierele puteau fi citite (probabil doar pentru că nu existau când ex și vi au fost
scris inițial). Pentru că istoricul ex evaluat citit! și citit ! echivalent,
nu poate exista nicio modalitate opțională de a forța citirea. POSIX.1‐2008 permite, dar nu
necesită acest comportament.

Recupera
Unele implementări istorice ale editorului au permis utilizatorilor să recupereze tamponul de editare
conținut dintr-o sesiune anterioară de editare și apoi ieșiți fără a salva acel conținut (sau
eliminându-le în mod explicit). Intenția POSIX.1‐2008 de a solicita ca tamponul de editare
a fi tratat ca fiind deja modificat este pentru a preveni această eroare de utilizator.

Înapoi
Implementările istorice au susținut rewind comanda când utilizatorul edita
primul fișier din listă; adică fișierul pe care rewind comanda ar edita. POSIX.1‐2008
necesită conformitatea cu practica istorică.

Substitui
Punct de vedere istoric, ex a acceptat an r opțiune la s comanda. Efectul r opțiunea era să
utilizați ultima expresie regulată folosită în orice comandă ca model, la fel ca și ~
comanda. r opțiunea nu este cerută de POSIX.1‐2008. Din punct de vedere istoric, c și g Opțiuni
au fost comutate; de exemplu, comanda :s/abc/def/ a fost la fel ca s/abc/def/ccccgggg.
Pentru simplitatea specificațiilor, POSIX.1‐2008 nu permite acest comportament.

Comanda tilde este adesea folosită pentru a înlocui ultima căutare RE. De exemplu, în
secvenţă:

s/rosu/albastru/
/verde
~

il ~ comanda este echivalentă cu:

s/verde/albastru/

Punct de vedere istoric, ex a acceptat toate următoarele forme:

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

POSIX.1‐2008 necesită conformitatea cu această practică istorică.

s comanda presupune că '^' caracterul ocupă doar o singură coloană în
afişa. O mare parte din ex și vi caietul de sarcini presupune că ocupă doar a
o singură coloană pe afișaj. Nu există seturi de caractere cunoscute pentru care acest lucru să nu fie
Adevărat.

Din punct de vedere istoric, poziția finală a coloanei pentru comenzile de înlocuire a fost bazată pe anterioare
mișcări ale coloanei; o căutare a unui model urmată de o înlocuire ar părăsi coloana
poziția neschimbată, în timp ce o comandă 0 urmată de o înlocuire ar schimba coloana
poziție la primul non- . Pentru coerența și simplitatea specificațiilor,
POSIX.1‐2008 necesită ca poziția finală a coloanei să fie întotdeauna setată la prima
non- .

set
Implementările istorice au reafișat toate opțiunile pentru fiecare apariție a toate
cuvânt cheie. POSIX.1‐2008 permite, dar nu impune, acest comportament.

Etichetă
Nu se impune nicio cerință privind locul ex și vi va căuta fișierul la care face referire eticheta
intrare. Practica istorică a fost de a căuta calea găsită în tag-uri dosar, pe baza
directorul curent. O extensie utilă găsită în unele implementări este să arate bazat
de asemenea, în directorul care conține fișierul de etichete care conținea intrarea. Nicio cerință nu este
făcut cu privire la ce referință pentru etichetă din fișierul de etichete este utilizată. Acest lucru este deliberat, în
pentru a permite extensii, cum ar fi mai multe intrări într-un fișier de etichete pentru o etichetă.

Deoarece utilizatorii specifică adesea multe fișiere de etichete diferite, dintre care unele nu trebuie să fie relevante
sau există la un moment dat, POSIX.1‐2008 necesită mesaje de eroare despre problemă
Fișierele de etichete să fie afișate numai dacă eticheta solicitată nu este găsită și apoi, o singură dată pt
de fiecare dată când etichetă opțiunea de editare este schimbată.

Cerința ca bufferul de editare curent să fie nemodificat este necesară numai dacă fișierul
indicat de intrarea etichetei nu este același cu fișierul curent (așa cum este definit de curentul
nume cale). Din punct de vedere istoric, fișierul ar fi reîncărcat dacă și numele fișierului s-ar fi schimbat
ca și cum numele fișierului ar fi diferit de calea curentă. Pentru consecvență și simplitate
de specificație, POSIX.1‐2008 nu permite acest comportament, solicitând ca numele să fie
singurul factor al deciziei.

Punct de vedere istoric, vi a căutat numai etichete în fișierul curent de la cursorul curent la
sfârșitul fișierului și, prin urmare, dacă wrapscan opțiunea nu a fost setată, etichetele au apărut înainte
cursorul curent nu a fost găsit. POSIX.1‐2008 consideră acest lucru un bug și implementări
sunt necesare pentru a căuta prima apariție în fișier, indiferent.

Anula
anula descrierea folosește în mod deliberat cuvântul „modificat”. The anula comanda nu este
destinat să anuleze comenzile care înlocuiesc conținutul buffer-ului de editare, cum ar fi edita,
următor, etichetă, Sau recupera.

Poziționarea cursorului după anula comanda a fost inconsecventă în istoric vi, uneori
încercarea de a restabili poziția inițială a cursorului (global, anula, și v comenzi), și
uneori, în prezența hărților, plasând cursorul pe ultima linie adăugată sau modificată
în loc de primul. POSIX.1‐2008 necesită un comportament simplificat pentru consistență și
simplitatea specificațiilor.

Versiune
versiune comanda nu poate fi specificată exact, deoarece nu există o comandă larg acceptată
definiția a ceea ce ar trebui să conțină informațiile despre versiune. Implementările sunt încurajate
a face ceva rezonabil de inteligent.

Scrie
Istoric, ex și vi mesaj după un succes citit or scrie comanda specificată
``caractere'', nu ``octeți''. POSIX.1‐2008 necesită ca numărul de octeți să fie
afișat, nu numărul de caractere, deoarece poate fi dificil în multi-octeți
implementări pentru a determina numărul de caractere scrise. Implementările sunt
încurajat să clarifice mesajul afișat utilizatorului.

Testele definite de implementare sunt permise, astfel încât implementările să poată aduce un plus
controale; de exemplu, pentru blocări sau timpi de modificare a fișierelor.

Din punct de vedere istoric, încercarea de a adăuga la un fișier inexistent a provocat o eroare. A fost lăsat
nespecificat în POSIX.1‐2008 pentru a permite implementărilor să permită scrie reuși, astfel încât
semantica anexă este similară cu cea a istoricului csh.

Istoric vi a permis scrierea de buffer-uri de editare goale. Cu toate acestea, de la drum vi am
În ceea ce privește gestionarea fișierelor „goale” a fost să aibă întotdeauna o linie în bufferul de editare, nu
indiferent ce, le-a scris ca fișiere dintr-o singură linie goală. POSIX.1‐2008 nu permite
acest comportament.

Punct de vedere istoric, ex a restabilit ieșirea standard și eroarea standard la valorile lor din momentul în care ex
a fost invocat, înainte ca scrierea în programe să fie efectuată. Acest lucru ar putea perturba terminalul
configurație, precum și să fie o problemă de securitate pentru unele terminale. POSIX.1‐2008 nu
permite acest lucru, solicitând ca rezultatul programului să fie capturat și afișat ca și cum de către ex
imprima comanda.

Ajusta Fereastră
Din punct de vedere istoric, numărul de linii a fost setat la valoarea lui derulaţi opțiunea dacă tipul
caracterul era la sfârșitul fișierului. Această caracteristică a fost întreruptă în majoritatea implementărilor istorice
în urmă, însă, și nu este documentat nicăieri. Din acest motiv, POSIX.1‐2008 este hotărât
tăcut.

Istoric, z comanda a fost -sensibilă şi z + și z - a facut lucruri diferite
decât z+ și z− deoarece tipul nu se putea distinge de un steag. (Comenzile z .
și z = au fost invalide din punct de vedere istoric.) POSIX.1‐2008 necesită conformitatea cu acest istoric
practică.

Istoric, z comanda era mai departe -sensibil prin aceea că conta nu poate fi
-delimitat; de exemplu, comenzile z= 5 și z− 5 au fost de asemenea invalide. Deoarece
conta nu este ambiguu nici în ceea ce privește caracterul de tip sau steagurile, nu este
permis de POSIX.1‐2008.

Evadare
Punct de vedere istoric, ex comenzile de filtrare citesc doar ieșirea standard a comenzilor, permițând
erorile standard apar pe terminal ca de obicei. The vi utilitate, totuși, citește ambele
ieșire standard și eroare standard. POSIX.1‐2008 necesită acest din urmă comportament pentru ambele ex
și vi, pentru consecvență.

Schimba Stânga și Schimba Dreapta
Din punct de vedere istoric, a fost posibil să adăugați caractere de schimbare pentru a crește efectul
comanda; de exemplu, << depășit (sau >>> indentat) liniile 3 niveluri de indentare
în loc de implicit 1. POSIX.1‐2008 necesită conformitatea cu practica istorică.

-D
Din punct de vedere istoric, Comanda ‐D a șters promptul, oferind utilizatorului un
prezentarea neîntreruptă a liniilor din bufferul de editare. Acest lucru nu este cerut de POSIX.1‐2008;
implementările sunt încurajate să o furnizeze dacă este posibil. Din punct de vedere istoric, -D
comanda a luat, apoi a ignorat, a conta. POSIX.1‐2008 nu permite acest comportament.

Scrie Linie Număr
Istoric, ex = comanda, când este executată în ex modul într-un buffer de editare gol, raportat
0, iar din modul deschis sau vizual, raportat 1. Pentru consistență și simplitate a
specificația, POSIX.1‐2008 nu permite acest comportament.

Executa
Punct de vedere istoric, ex nu a gestionat corect includerea comenzilor de introducere a textului (adică
adăuga, insera, și Schimbare) în bufferele executate. POSIX.1‐2008 nu permite acest lucru
excluderea pentru consecvență.

Din punct de vedere istoric, conținutul logic al bufferului în curs de executare nu s-a schimbat dacă
bufferul propriu-zis a fost modificat de comenzile executate; adică execuția bufferului a făcut-o
nu acceptă codul cu auto-modificare. POSIX.1‐2008 necesită conformitatea cu practica istorică.

Istoric, @ comanda a luat o serie de linii, iar @ tamponul a fost executat o dată pe
linie, cu linia curentă ('.') setat la fiecare linie specificată. POSIX.1‐2008 necesită
conformitatea cu practica istorică.

Unele implementări istorice nu au observat dacă au apărut erori în timpul execuției bufferului.
Acest lucru, împreună cu capacitatea de a specifica o gamă de linii pentru ex @ comanda, o face
trivial pentru a le face să cadă CORE. POSIX.1‐2008 necesită ca implementările să se oprească
execuția bufferului dacă apare vreo eroare, dacă linia specificată nu există sau dacă
conținutul bufferului de editare în sine este înlocuit (de exemplu, tamponul execută ex
edita: comanda).

Regulat Expresii in ex
Practica istorică este că personajele din partea de înlocuire a ultimului s comanda-
adică cele potrivite prin introducerea a '~' în expresia regulată — nu erau mai departe
extins de motorul de expresii regulate. Deci, dacă caracterele au conținut șirul
"A.," s-ar potrivi 'A' urmată de ".," si nu 'A' urmat de orice personaj.
POSIX.1‐2008 necesită conformitatea cu practica istorică.

Editati Opţiuni in ex
Următoarele paragrafe descriu comportamentul istoric al unor opțiuni de editare care au fost
nu, indiferent de motiv, incluse în POSIX.1‐2008. Implementările sunt puternice
sunt încurajați să folosească aceste nume numai dacă funcționalitatea descrisă aici este pe deplin acceptată.

extins extins opțiunea de editare a fost folosită în unele implementări ale vi a furniza
expresii regulate extinse în loc de expresii regulate de bază Această opțiune
a fost omis din POSIX.1‐2008 deoarece nu este o practică istorică larg răspândită.

bliţ bliţ opțiunea de editare a făcut ca ecranul să clipească în loc să sune
pe eroare. Această opțiune a fost omisă din POSIX.1‐2008 deoarece nu se găsește în
unele implementări istorice.

hardtabs hardtabs opțiunea de editare a definit istoric numărul de coloane dintre
setările filei hardware. Această opțiune a fost omisă din POSIX.1‐2008 deoarece a fost
se crede că nu mai este util în general.

modeline modeline (uneori numit modeline) opțiunea de editare cauzată istoric ex or
vi pentru a citi primele cinci rânduri ale fișierului pentru comenzile editorului. Acest
opțiunea este o problemă de securitate, iar vânzătorii sunt încurajați să o ștergă
din implementări istorice.

deschide deschide opțiunea de editare a interzis istoric ex deschide și vizual comenzi.
Această opțiune de editare a fost omisă deoarece aceste comenzi sunt solicitate de
POSIX.1‐2008.

optimiza optimiza opțiunea de editare debitul de text accelerat istoric prin setarea
terminalul să nu facă automat caractere atunci când imprimați mai multe
decât o linie logică de ieșire. Această opțiune a fost omisă din POSIX.1‐2008
deoarece a fost destinat terminalelor fără cursoare adresabile, care sunt
rar, dacă vreodată, încă folosit.

domnitor domnitor opțiunea de editare a fost folosită în unele implementări ale vi a prezenta o
riglă de rând/coloană curentă pentru utilizator. Această opțiune a fost omisă din POSIX.1‐2008
deoarece nu este o practică istorică larg răspândită.

sursă orice sursă orice opțiunea de editare cauzată istoric ex or vi pentru a sursa fișierele de pornire
care au fost deținute de alți utilizatori decât utilizatorul care rulează editorul. Această opțiune este
o problemă de securitate, iar vânzătorii sunt încurajați cu tărie să o elimine din propriile lor
implementări.

timeout timeout opțiunea de editare a activat istoric doar caracteristica (acum standard).
așteptând o perioadă scurtă înainte de a returna cheile care ar putea face parte dintr-o macrocomandă.
Această caracteristică a fost omisă din POSIX.1‐2008 deoarece comportamentul ei este acum standard,
nu este util pe scară largă și a fost rar documentat.

prolix prolix opțiunea de editare a fost folosită în unele implementări ale vi a cauza vi
pentru a afișa mesaje de eroare pentru erori comune; de exemplu, încercarea de a muta
cursorul pe lângă începutul sau sfârșitul liniei în loc să avertizeze doar
ecran. (Istoricul vi doar a alertat terminalul și nu a prezentat niciun mesaj
pentru astfel de erori. Opțiunea editor istoric concis nu a selectat când să
prezenta mesaje de eroare, a făcut doar mesajele de eroare existente mai mult sau mai puțin
verbose.) Această opțiune a fost omisă din POSIX.1‐2008 deoarece nu este răspândită
practica istorica; cu toate acestea, implementatorii sunt încurajați să-l folosească dacă doresc
pentru a furniza mesaje de eroare pentru utilizatorii naivi.

wraplen wraplen opțiunea de editare a fost folosită în unele implementări ale vi pentru a specifica
o marjă automată măsurată de la marginea stângă în loc de la dreapta
marginea. Acest lucru este util atunci când sunt utilizate mai multe dimensiuni de ecran pentru a edita un
un singur dosar. Această opțiune a fost omisă din POSIX.1‐2008 deoarece nu este
practică istorică răspândită; cu toate acestea, implementatorii sunt încurajați să-l folosească
dacă adaugă această funcționalitate.

autoindentare, ai
Din punct de vedere istoric, comanda 0a nu a făcut nicio autoindentare, indiferent de curent
indentarea liniei 1. POSIX.1‐2008 necesită ca orice indentare prezentă în rândul 1 să fie
folosit.

imprimare automată, ap
Istoric, autoimprimare opțiunea de editare nu a fost complet consecventă sau bazată exclusiv pe
modificări ale tamponului de editare. Excepții au fost citit comandă (când citiți din a
fișier, dar nu de la un filtru), the adăuga, Schimbare, insera, global, și v comenzi, toate
care nu au fost afectate de autoimprimare, Şi etichetă comanda, care a fost afectată de
autoimprimare. POSIX.1‐2008 necesită conformitatea cu practica istorică.

Istoric, autoimprimare opțiunea aplicată numai ultimei comenzi multiple introduse
folosind delimitatori; de exemplu, șterge a fost afectat de autoimprimare,
dar şterge|versiune nu a fost. POSIX.1‐2008 necesită conformitatea cu istoricul
practică.

scriere automată, aw
Adăugând '!' caracter la ex următor comandă pentru a evita efectuarea unei scrieri automate
nu a fost suportat în implementările istorice. POSIX.1‐2008 cere ca comportamentul
se potrivesc cu celălalt ex comenzi pentru consecvență.

ignora majuscule, ic
Implementări istorice ale potrivirii care nu țin cont de majuscule și minuscule (the ignorecase opțiunea de editare) conduce
la situații contra-intuitive când caracterele majuscule au fost folosite în expresiile de interval.
Din punct de vedere istoric, procesul a fost după cum urmează:

1. Luați o linie de text din tamponul de editare.

2. Convertiți majuscule în minuscule în linia de text.

3. Convertiți majuscule în minuscule în expresiile regulate, cu excepția clasei de caractere
caietul de sarcini.

4. Potriviți expresiile regulate cu text.

Asta ar însemna că, cu ignorecase de fapt, textul:

pisică SAT on il Alimente

ar fi egalat de

/^the/

dar nu prin:

/^[A−Z]el/

Pentru coerență cu alte comenzi care implementează expresii regulate, POSIX.1‐2008 face
nu permite acest comportament.

paragrafe, alin
Standardul ISO POSIX‐2:1993 a fost implicit punctele și secțiuni opțiuni de editare
definite de implementare, argumentând că au fost orientate istoric către sistemul UNIX troff
formatator de text și un „utilizator portabil” ar putea folosi {, }, [[, ]], (, și ) comenzi în
modul deschis sau vizual și puneți cursorul să se oprească în locuri neașteptate. POSIX.1‐2008 precizează
valorile lor în localitatea POSIX, deoarece gruparea neobișnuită (funcționează doar atunci când sunt grupate
în două caractere odată) înseamnă că nu pot fi utilizate în scopuri generale
mișcare, indiferent.

numai în citire
Implementările sunt încurajate pentru a oferi utilizatorului cele mai bune informații posibile
starea de numai citire a fișierului, cu excepția faptului că nu ar trebui să ia în considerare
privilegiile speciale actuale ale procesului. Acest lucru oferă utilizatorilor o plasă de siguranță deoarece
trebuie să forțeze suprascrierea fișierelor doar în citire, chiar și atunci când rulează cu suplimentare
privilegii.

numai în citire specificația opțiunii de editare se conformează în mare măsură practicii istorice. Singurul
diferența este că implementările istorice nu au observat că utilizatorul a setat
numai în citire opțiunea de editare în cazurile în care fișierul a fost deja marcat doar pentru citire dintr-un motiv oarecare,
și, prin urmare, ar reinițializa numai în citire opțiunea de editare data viitoare când conținutul
tamponul de editare a fost înlocuit. Acest comportament este interzis de POSIX.1‐2008.

raportează
Este cerința ca liniile copiate într-un buffer să interacționeze diferit decât liniile șterse
practica istorica. De exemplu, dacă raportează opțiunea de editare este setată la 3, ștergând 3 linii
va face ca un raport să fie scris, dar 4 rânduri trebuie copiate înainte de a fi scris un raport.

Cerința ca ex global, v, deschide, anula, și vizual comenzile prezintă rapoarte
pe baza numărului total de linii adăugate sau șterse în timpul execuției comenzii și asta
comenzile executate de către global și v comenzile nu prezintă rapoarte, este istoric
practică. POSIX.1‐2008 extinde practica istorică prin solicitarea ca execuția tampon să fie
tratate în mod similar. Motivele pentru aceasta sunt duble. Din punct de vedere istoric, doar raportul de către
ultima comandă executată din buffer va fi văzută de utilizator, la fel ca fiecare nou raport
suprascrie ultimul. În plus, dezvoltatorii standard credeau că execuția tampon
avea mai multe în comun cu global și v comenzi decât a făcut-o cu altele ex comenzi și
ar trebui să se comporte similar, pentru coerența și simplitatea specificațiilor.

meci show, sm
Durata de timp pe care cursorul o petrece pe caracterul care se potrivește este nespecificată, deoarece
capabilitățile de sincronizare ale sistemelor sunt adesea inexacte și variabile. Timpul ar trebui să fie lung
suficient pentru ca utilizatorul să observe, dar nu suficient pentru ca utilizatorul să devină enervat. niste
implementari ale vi au adăugat o ora de meci opțiune care permite utilizatorilor să seteze numărul
la intervale de 0,1 secunde, cursorul se oprește pe caracterul potrivit.

modul show
modul show opțiunea a fost folosită în unele implementări istorice ale ex și vi la
afișați modul de editare curent când sunteți în modul deschis sau vizual. Modurile de editare au
în general includeau „comandă” și „input” și, uneori, alte moduri, cum ar fi
„Înlocuiți” și „schimbați”. Șirul era de obicei afișat pe linia de jos a
ecran din colțul din dreapta. În plus, un precedent '*' caracter adesea notat
dacă conținutul buffer-ului de editare a fost modificat. Ultimul display are
uneori făcut parte din modul show opțiune și, uneori, pe baza unei alte opțiuni. Acest
opțiunea nu a fost disponibilă în implementarea istorică a 4 BSD a vi, dar a fost privit ca
în general util, în special pentru utilizatorii începători, și este cerut de POSIX.1‐2008.

smd shorthand pentru modul show opțiunea nu a fost prezentă în toate istoricele
implementări ale editorului. POSIX.1‐2008 o cere, pentru consecvență.

Nu toate implementările istorice ale editorului au afișat un șir de mod pentru modul de comandă,
diferențierea modului de comandă de modul de introducere a textului prin absența unui șir de mod.
POSIX.1‐2008 permite acest comportament pentru coerență cu practica istorică, dar
implementările sunt încurajate să ofere un șir de afișare pentru ambele moduri.

lent deschis
Istoric, lent deschis opțiunea a fost setată automat dacă viteza de transmisie a terminalului era mai mică
mai mult de 1200 baud, sau dacă viteza de transmisie a fost de 1200 baud și redesenare opțiunea nu a fost setată. The
lent deschis opțiunea a avut două efecte. În primul rând, când inserați caractere în mijlocul unei linii,
caracterele de după cursor nu ar fi împinse înainte, dar ar părea suprascrise.
În al doilea rând, atunci când creați o nouă linie de text, liniile după linia curentă nu ar fi
derulat în jos, dar ar părea suprascris. În ambele cazuri, se încheie modul de introducere a textului
ar face ca ecranul să fie reîmprospătat pentru a se potrivi cu conținutul real al tamponului de editare.
În cele din urmă, terminalele care erau suficient de inteligente au determinat editorul să ignore
lent deschis opțiune. POSIX.1‐2008 permite majoritatea comportamentului istoric, extinzându-se istoric
practica a cere lent deschis comportamente dacă opțiunea de editare este setată de utilizator.

tag-uri
Calea implicită pentru fișierele de etichete este lăsată nespecificată, deoarece implementările pot avea propriile lor
tag-uri implementari care nu corespund cu cele istorice. Implicit tag-uri
valoarea opțiunii ar trebui să includă cel puțin fișierul ./Etichete.

durată
Implementări istorice ale ex și vi a ignorat modificările la durată opțiunea de editare după
informațiile inițiale ale terminalului au fost încărcate. Acest lucru este permis de POSIX.1‐2008; in orice caz,
implementările sunt încurajate să permită utilizatorului să-și modifice tipul terminalului oricând
timp.

concis
Istoric, concis opțiunea de editare a oferit opțional o eroare mai scurtă, mai puțin descriptivă
mesaj, pentru unele mesaje de eroare. Acest lucru este permis, dar nu obligatoriu, de către POSIX.1‐2008.
Din punct de vedere istoric, cele mai frecvente erori ale modului vizual (de exemplu, încercarea de a muta cursorul peste
sfârșitul unei linii) nu a rezultat într-un mesaj de eroare, ci pur și simplu a alertat terminalul.
Implementările care doresc să furnizeze mesaje pentru utilizatorii începători sunt îndemnate să facă acest lucru pe baza
il edita opțiune prolix, si nu concis.

fereastră
În implementările istorice, valoarea implicită pentru fereastră opțiunea de editare s-a bazat pe
rata baud după cum urmează:

1. Dacă viteza de transmisie a fost mai mică de 1200, edita opțiune w300 setați valoarea ferestrei; pentru
exemplu, linia:

set w300=12

ar seta opțiunea fereastră la 12 dacă rata de transmisie a fost mai mică de 1200.

2. Dacă viteza de transmisie a fost egală cu 1200, edita opțiune w1200 setați valoarea ferestrei.

3. Dacă viteza de transmisie a fost mai mare de 1200, edita opțiune w9600 setați valoarea ferestrei.

w300, w1200, și w9600 opțiunile nu apar în POSIX.1‐2008 din cauza lor
dependență de ratele baud specifice.

În implementările istorice, dimensiunea ferestrei afișate de diverse comenzi a fost
legate de, dar nu neapărat la fel ca fereastră opțiunea de editare. De exemplu, dimensiunea
a ferestrei a fost stabilit de către ex comandă vizual 10, dar nu a schimbat valoarea lui
fereastră opțiunea de editare. Cu toate acestea, modificarea valorii fereastră opțiunea de editare a schimbat
numărul de linii care au fost afișate când ecranul a fost revopsit. POSIX.1‐2008 nu
permite acest comportament în interesul coerenței și simplității specificațiilor și
necesită ca toate comenzile care modifică numărul de linii care sunt afișate să o facă
stabilirea valorii fereastră opțiunea de editare.

wrapmargin, wm
Istoric, wrapmargin opțiunea nu a afectat hărțile inserând caractere care aveau și ele
asociate contas; de exemplu :Hartă K 5aABC DEF. Din păcate, sunt utilizate pe scară largă
hărți care depind de acest comportament. Pentru coerența și simplitatea specificațiilor,
POSIX.1‐2008 nu permite acest comportament.

Punct de vedere istoric, wrapmargin a fost calculat folosind lățimea de afișare a coloanei a tuturor caracterelor
pe ecran. De exemplu, o implementare folosind "^I" a reprezenta personaje
când listă opțiunea de editare a fost setată, unde '^' și "eu" fiecare ocupa o singură coloană pe
ecran, ar calcula wrapmargin pe baza unei valori de 2 pentru fiecare . The număr
opțiunea de editare a schimbat în mod similar și lungimea efectivă a liniei. POSIX.1‐2008
necesită conformitatea cu practica istorică.

Versiunile anterioare ale acestui standard permiteau implementări cu alți octeți decât opt
biți, dar acest lucru a fost modificat în această versiune.

VIITOR INSTRUCTIUNI


Nici unul.

Utilizați exposix online folosind serviciile onworks.net


Servere și stații de lucru gratuite

Descărcați aplicații Windows și Linux

  • 1
    Phaser
    Phaser
    Phaser este o deschidere rapidă, gratuită și distractivă
    cadru de joc HTML5 sursă care oferă
    Redare WebGL și Canvas
    browsere web desktop și mobile. Jocuri
    poate fi co...
    Descărcați Phaser
  • 2
    Motor VASSAL
    Motor VASSAL
    VASSAL este un motor de joc pentru creare
    versiuni electronice ale plăcii tradiționale
    și jocuri de cărți. Oferă suport pentru
    redarea și interacțiunea pieselor de joc,
    și ...
    Descărcați VASSAL Engine
  • 3
    OpenPDF - Furk of iText
    OpenPDF - Furk of iText
    OpenPDF este o bibliotecă Java pentru creare
    și editarea fișierelor PDF cu un LGPL și
    Licență open source MPL. OpenPDF este
    Succesorul LGPL/MPL open source al iText,
    o ...
    Descărcați OpenPDF - Furk of iText
  • 4
    SAGA GIS
    SAGA GIS
    SAGA - Sistem pentru automatizare
    Analize Geoștiințifice - este un Geografic
    Sistemul informatic (GIS) software cu
    capacități imense pentru geodate
    procesare și ana...
    Descărcați SAGA GIS
  • 5
    Caseta de instrumente pentru Java/JTOpen
    Caseta de instrumente pentru Java/JTOpen
    IBM Toolbox for Java / JTOpen este un
    biblioteca de clase Java care acceptă
    programare client/server și internet
    modele către un sistem care rulează OS/400,
    i5/OS, o...
    Descărcați Toolbox pentru Java/JTOpen
  • 6
    D3.js
    D3.js
    D3.js (sau D3 pentru documente bazate pe date)
    este o bibliotecă JavaScript care vă permite
    pentru a produce date dinamice, interactive
    vizualizări în browsere web. Cu D3
    tu...
    Descărcați D3.js
  • Mai mult »

Comenzi Linux

  • 1
    abidiff
    abidiff
    abidiff - comparați ABI-urile fișierelor ELF
    abidiff compară aplicația binară
    Interfețe (ABI) a două biblioteci partajate
    în format ELF. Emite un sens
    repor ...
    Fugi abidiff
  • 2
    abidw
    abidw
    abidw - serializați ABI-ul unui ELF
    fișierul abidw citește o bibliotecă partajată în ELF
    format și emite o reprezentare XML
    a ABI-ului său la ieșirea standard. The
    emis...
    Run abidw
  • 3
    copac2xml
    copac2xml
    bibutils - conversie bibliografie
    utilitati...
    Rulați copac2xml
  • 4
    Copt
    Copt
    copt - optimizator peephole SYSNOPIS:
    fișier copt.. DESCRIERE: copt este a
    optimizator de uz general pentru vizor. Aceasta
    citește codul din intrarea sa standard și
    scrie un...
    Fugi copt
  • 5
    gather_stx_titles
    gather_stx_titles
    gather_stx_titles - aduna titlul
    declarații din documentele Stx...
    Rulați gather_stx_titles
  • 6
    gatling-banc
    gatling-banc
    bench - http benchmark...
    Alerga gatling-bench
  • Mai mult »

Ad