InglêsFrancêsEspanhol

Ad


favicon do OnWorks

exposix - Online na nuvem

Execute exposix no provedor de hospedagem gratuita OnWorks no Ubuntu Online, Fedora Online, emulador online do Windows ou emulador online do MAC OS

Este é o comando exposix que pode ser executado no provedor de hospedagem gratuita OnWorks usando uma de nossas várias estações de trabalho online gratuitas, como Ubuntu Online, Fedora Online, emulador online do Windows ou emulador online do MAC OS

PROGRAMA:

NOME


ex - editor de texto

SINOPSE


ex [−rR] [−s | −v] [-c comando] [-t string de tag] [−w tamanho] [lima...]

DESCRIÇÃO


A ex utilitário é um editor de texto orientado por linha. Existem dois outros modos do editor—
aberto e visual - no qual a edição orientada para a tela está disponível. Isso é mais descrito
totalmente pelo ex aberto e visual comandos e em vi.

Se um operando for '-', os resultados não são especificados.

Esta seção usa o termo editar amortecer para descrever o texto de trabalho atual. Não específico
implementação está implícita neste termo. Todas as alterações de edição são realizadas na edição
buffer, e nenhuma mudança afetará qualquer arquivo até que um comando do editor escreva o
arquivo.

Certos terminais não têm todos os recursos necessários para suportar o completo ex
definição, como os comandos de edição em tela inteira (visual modo or aberto modo) Quando
esses comandos não podem ser suportados em tais terminais, esta condição não deve produzir um
mensagem de erro como `` não é um comando do editor '' ou relata um erro de sintaxe. O
implementação pode aceitar os comandos e produzir resultados na tela que são
o resultado de uma tentativa malsucedida de atender aos requisitos deste volume de
POSIX.1‐2008 ou relatar um erro descrevendo a deficiência relacionada ao terminal.

OPÇÕES


A ex utilitário deve estar em conformidade com o volume de Definições de Base de POSIX.1‐2008, Seção 12.2,
Utilidade Sintaxe orientações, exceto para o uso não especificado de '-'E isso '+' pode ser
reconhecido como um delimitador de opção, bem como '-'.

As seguintes opções devem ser suportadas:

-c comando
Especifique um comando inicial a ser executado no primeiro buffer de edição carregado de
um arquivo existente (consulte a seção DESCRIÇÃO ESTENDIDA). Implementações podem
apoiar mais de um -c opção. Em tais implementações, o especificado
os comandos devem ser executados na ordem especificada na linha de comando.

−r Recupere os arquivos nomeados (veja a seção DESCRIÇÃO ESTENDIDA). Recuperação
as informações de um arquivo devem ser salvas durante uma falha do editor ou do sistema (para
exemplo, quando o editor é encerrado por um sinal que o editor pode captar),
ou após o uso de um ex preservar comando.

A batida neste contexto é uma falha inesperada do sistema ou utilitário que
requer a reinicialização do sistema ou utilitário com falha. Uma falha do sistema implica que
quaisquer utilitários em execução no momento também travam. No caso de um editor ou sistema
crash, o número de mudanças no buffer de edição (desde o mais recente preservar
comando) que será recuperado não é especificado.

Se nenhum lima operandos são dados e o -t opção não é especificada, todas as outras
opções, o SAIR variável, e qualquer .exrc os arquivos devem ser ignorados; uma lista de
todos os arquivos recuperáveis ​​disponíveis para o usuário de chamada devem ser gravados, e o
o editor deve sair normalmente sem nenhuma ação adicional.

−R Conjunto somente leitura opção de edição.

-S Preparar ex para uso em lote, realizando as seguintes ações:

* Suprima a escrita de prompts e mensagens informativas (mas não de diagnóstico).

* Ignore o valor de PRAZO e qualquer tipo de terminal padrão de implementação e
assumir que o terminal é um tipo incapaz de suportar modos abertos ou visuais;
ver o visual comando e a descrição de vi.

* Suprimir o uso do SAIR variável de ambiente e a leitura de qualquer
.exrc Arquivo; veja a seção DESCRIÇÃO ESTENDIDA.

* Suprime a indentação automática, ignorando o valor do recuo automático opção de edição.

-t string de tag
Edite o arquivo que contém o especificado string de tag; Vejo ctags. O recurso de tags
representado por -t string de tag e os votos de etiqueta o comando é opcional. Deve ser
fornecido em qualquer sistema que também fornece uma implementação em conformidade de ctags;
caso contrário, o uso de -t produz resultados indefinidos. Em qualquer sistema, deve ser
um erro ao especificar mais de um -t opção.

−v Comece no modo visual (veja vi).

−w tamanho Defina o valor do janela opção do editor para tamanho.

OPERANDOS


O seguinte operando deve ser suportado:

lima O nome do caminho de um arquivo a ser editado.

STDIN


A entrada padrão consiste em uma série de comandos e texto de entrada, conforme descrito no
Seção DESCRIÇÃO ESTENDIDA. A implementação pode limitar cada linha de entrada padrão a
um comprimento de {LINE_MAX}.

Se a entrada padrão não for um dispositivo terminal, será como se o -S opção tinha sido
Especificadas.

Se uma leitura da entrada padrão retornar um erro, ou se o editor detectar um fim de
condição do arquivo da entrada padrão, deve ser equivalente a um SIGHUP assíncrono
evento.

INPUT ARQUIVOS


Os arquivos de entrada devem ser arquivos de texto ou arquivos que seriam arquivos de texto, exceto por um
última linha que não é maior que {LINE_MAX} -1 bytes de comprimento e não contém NUL
personagens. Por padrão, qualquer última linha incompleta deve ser tratada como se tivesse um final
. A edição de outras formas de arquivos pode, opcionalmente, ser permitida por ex
implementações.

A .exrc arquivos e arquivos de origem devem ser arquivos de texto consistindo de ex comandos; Veja o
Seção DESCRIÇÃO ESTENDIDA.

Por padrão, o editor deve ler as linhas dos arquivos a serem editados sem interpretar
qualquer uma dessas linhas como qualquer forma de comando do editor.

MEIO AMBIENTE VARIÁVEIS


As seguintes variáveis ​​de ambiente devem afetar a execução de ex:

COLUNAS Substitua o tamanho da tela horizontal selecionada pelo sistema. Veja as definições básicas
volume de POSIX.1‐2008, Capítulo 8, Meio Ambiente Variáveis para valores válidos e
resulta quando não está definido ou é nulo.

SAIR Determine uma lista de ex comandos que são executados na inicialização do editor. Veja o
Seção DESCRIÇÃO ESTENDIDA para mais detalhes da fase de inicialização.

EMPRESA Determine um caminho de um diretório que deve ser pesquisado para um editor iniciar-
arquivo chamado .exrc; veja a seção DESCRIÇÃO ESTENDIDA.

GRANDE Forneça um valor padrão para as variáveis ​​de internacionalização que não estão definidas ou
nulo. (Veja o volume de Definições de Base de POSIX.1‐2008, Seção 8.2,
Internacionalização Variáveis pela precedência de internacionalização
variáveis ​​usadas para determinar os valores das categorias de local.)

LC_ALL Se definido como um valor de string não vazio, substitui os valores de todos os outros
variáveis ​​de internacionalização.

LC_COLLATE
Determine a localidade para o comportamento de intervalos, classes de equivalência e
caractere agrupar elementos em expressões regulares.

LC_CTYPE Determine o local para a interpretação de sequências de bytes de dados de texto
como caracteres (por exemplo, caracteres de byte único em oposição a caracteres de bytes múltiplos em
argumentos e arquivos de entrada), o comportamento das classes de caracteres dentro
expressões, a classificação de caracteres como letras maiúsculas ou minúsculas,
a conversão de maiúsculas e minúsculas de letras e a detecção de limites de palavras.

LC_MESSAGES
Determine a localidade que deve ser usada para afetar o formato e o conteúdo do
mensagens de diagnóstico gravadas no erro padrão.

LINHAS Substitui o tamanho da tela vertical selecionado pelo sistema, usado como o número de linhas
em uma tela cheia e o tamanho da tela vertical no modo visual. Veja a Base
Volume de definições de POSIX.1‐2008, Capítulo 8, Meio Ambiente Variáveis para válido
valores e resultados quando não está definido ou nulo.

NLSPAT Determine a localização dos catálogos de mensagens para o processamento de LC_MESSAGES.

PATH Determine o caminho de pesquisa para o comando shell especificado no ex editor
comandos !, concha, ler e escrever, e o comando de modo aberto e visual !; Vejo
a descrição da pesquisa de comando e execução em Seção 2.9.1.1, Command
Pesquisar e Execução.

SHELL Determine o interpretador de linha de comando preferido para usar como o valor padrão de
que o concha opção de edição.

PRAZO Determine o nome do tipo de terminal. Se esta variável não estiver definida ou for nula, um
deve ser usado o tipo de terminal padrão não especificado.

ASSÍNCRONO EVENTOS


O termo a seguir é usado nesta e nas seções seguintes para especificar o comando e
ações de eventos assíncronos:

completar escrever
Uma gravação completa é uma gravação de todo o conteúdo do buffer de edição em um arquivo
de um tipo diferente de um dispositivo de terminal, ou o salvamento do buffer de edição causado
pelo usuário executando o ex preservar comando. Escrevendo o conteúdo da edição
buffer para um arquivo temporário que será removido quando o editor sair não deve
ser considerada uma gravação completa.

As seguintes ações devem ser tomadas após o recebimento dos sinais:

SIGINT Se a entrada padrão não for um dispositivo terminal, ex não deve gravar o arquivo ou
retornar ao modo de comando ou entrada de texto e deverá sair com uma saída diferente de zero
estado.

Caso contrário, se estiver executando um comando de modo de entrada de texto aberto ou visual, ex No recibo
da SIGINT deve se comportar de forma idêntica ao recebimento do personagem.

De outra forma:

1. Se estiver executando um ex comando do modo de entrada de texto, todas as linhas de entrada que foram
inseridos completamente devem ser resolvidos no buffer de edição, e qualquer
linha inserida deve ser descartada.

2. Se houver um comando em execução no momento, ele será abortado e uma mensagem
exibido. A menos que especificado de outra forma pelo ex or vi descrições de comando,
não é especificado se alguma linha modificada pelo comando em execução aparece
modificados, ou como estavam antes de serem modificados pelo comando de execução, em
o buffer.

Se o comando em execução no momento era um comando de movimento, está associado
comando deve ser descartado.

3. Se estiver no modo de comando aberto ou visual, o terminal deve ser alertado.

4. O editor deve então retornar ao modo de comando.

SIGCONT A tela deve ser atualizada se estiver no modo aberto ou visual.

SIGHUP Se o buffer de edição foi modificado desde a última gravação completa, ex deve
tente salvar o buffer de edição para que possa ser recuperado mais tarde usando o −r
opção ou o ex recuperar comando. O editor não deve escrever o arquivo ou devolver
para o modo de entrada de comando ou texto, e deve terminar com um status de saída diferente de zero.

SIGTERM Consulte SIGHUP.

A ação realizada para todos os outros sinais não é especificada.

STDOUT


A saída padrão deve ser usada apenas para escrever prompts para o usuário, para fins informativos
mensagens e para escrever linhas do arquivo.

STDERR


O erro padrão deve ser usado apenas para mensagens de diagnóstico.

SAÍDA ARQUIVOS


A saída de ex devem ser arquivos de texto.

ESTENDIDO DESCRIÇÃO


Apenas o ex o modo do editor é descrito nesta seção. Ver vi para edição adicional
capacidades disponíveis em ex.

Quando ocorre um erro, ex deve escrever uma mensagem. Se o terminal suporta um modo destacado
(como vídeo inverso), a mensagem deve ser escrita em modo destacado. Se o terminal
não suporta um modo de destaque, e a opção de edição sinos de erro está definido, uma ação de alerta
deve preceder a mensagem de erro.

Por padrão, o ex deve iniciar no modo de comando, que deve ser indicado por um : mensagem; Vejo
que o pronto comando. O modo de entrada de texto pode ser inserido pelo anexar, inserirou alterar
comandos; pode-se sair (e entrar no modo de comando novamente) digitando um ('.') sozinho
no início de uma linha.

Inicialização in ex e vi
Os símbolos a seguir são usados ​​nesta e nas seções seguintes para especificar locais no
editar buffer:

alternado e atual nomes de caminho
Dois nomes de caminho, chamados atual e alternado, são mantidos pelo editor. Qualquer ex
comandos que tomam nomes de arquivos como argumentos devem defini-los da seguinte forma:

1. Se um lima argumento é especificado para o ex editar, exou recuperar comandos, ou se
an ex etiqueta comando substitui o conteúdo do buffer de edição.

uma. Se o comando substituir o conteúdo do buffer de edição, o atual
nome do caminho deve ser definido para o lima argumento ou o arquivo indicado pela tag,
e o caminho alternativo deve ser definido para o valor anterior do atual
nome do caminho.

b. Caso contrário, o caminho alternativo deve ser definido para o lima argumento.

2. Se um lima argumento é especificado para o ex Próximo comando:

uma. Se o comando substituir o conteúdo do buffer de edição, o atual
o nome do caminho deve ser definido para o primeiro lima argumento, e o caminho alternativo
deve ser definido com o valor anterior do caminho atual.

3. Se um lima argumento é especificado para o ex lima comando, o nome do caminho atual
deve ser definido para o lima argumento, e o nome do caminho alternativo deve ser definido como
o valor anterior do nome do caminho atual.

4. Se um lima argumento é especificado para o ex ler e escrever comandos (isto é, quando
lendo ou gravando um arquivo, e não para o programa nomeado pelo concha editar
opção), ou um lima argumento é especificado para o ex xit comando:

uma. Se o nome do caminho atual não tem valor, o nome do caminho atual deve ser definido para
que o lima argumento.

b. Caso contrário, o caminho alternativo deve ser definido para o lima argumento.

Se o nome do caminho alternativo for definido com o valor anterior do nome do caminho atual quando
o nome do caminho atual não tinha valor anterior, então o nome do caminho alternativo deve ter
nenhum valor como resultado.

atual linha
A linha do buffer de edição referenciada pelo cursor. Cada descrição de comando
especifica a linha atual após o comando ter sido executado, pois o atual linha
valor. Quando o buffer de edição não contém linhas, a linha atual deve ser zero; Vejo
Endereçando in ex.

atual coluna
A coluna da linha de exibição atual ocupada pelo cursor. (As colunas devem ser
numerado começando em 1.) Cada descrição de comando especifica a coluna atual
depois que o comando foi executado, como o atual coluna valor. Esta coluna é um
ideal coluna que é lembrada durante a vida útil do editor. A exibição real
a coluna de linha sobre a qual o cursor repousa pode ser diferente da coluna atual;
veja a discussão de posicionamento do cursor em Command Descrição in vi.

conjunto para não-
Uma descrição para um valor de coluna atual, o que significa que a coluna atual deve ser
definido para a última coluna da linha de exibição na qual é exibida qualquer parte do primeiro
não- da linha. Se a linha não tiver não- personagens,
a coluna atual deve ser definida para a última coluna da linha de exibição na qual é
exibiu qualquer parte do último personagem na linha. Se a linha for
vazio, a coluna atual deve ser definida para a posição 1 da coluna.

O comprimento das linhas no buffer de edição pode ser limitado a {LINE_MAX} bytes. Em aberto e
modo visual, o comprimento das linhas no buffer de edição pode ser limitado ao número de
caracteres que vão caber no display. Se qualquer um dos limites for excedido durante a edição, um
mensagem de erro deve ser escrita. Se qualquer um dos limites for excedido por uma linha lida de um arquivo,
uma mensagem de erro deve ser escrita e a sessão de edição pode ser encerrada.

Se o editor parar de funcionar por qualquer motivo diferente de um comando do usuário, e a edição
buffer foi modificado desde a última gravação completa, deve ser equivalente a um SIGHUP
evento assíncrono. Se o sistema travar, será equivalente a um SIGHUP assíncrono
evento.

Durante a inicialização (antes do primeiro arquivo ser copiado para o buffer de edição ou para qualquer usuário
os comandos do terminal são processados) o seguinte deve ocorrer:

1. Se a variável de ambiente SAIR está definido, o editor deve executar o ex comandos
contida nessa variável.

2. Se o SAIR variável não está definida e todos os seguintes são verdadeiros:

a. O EMPRESA a variável de ambiente não é nula e não está vazia.

b. O arquivo .exrc no diretório referido pelo EMPRESA variável de ambiente:

eu. Existe

ii. Pertence ao mesmo ID de usuário que o ID de usuário real do processo ou o
processo tem privilégios apropriados

iii. Não pode ser escrito por ninguém que não seja o proprietário

o editor deve executar o ex comandos contidos naquele arquivo.

3. Se e somente se todas as opções a seguir forem verdadeiras:

uma. O diretório atual não é referido pelo EMPRESA variável de ambiente.

b. Um comando no SAIR variável de ambiente ou um comando no .exrc arquivo no
diretório referido pelo EMPRESA variável de ambiente define a opção do editor
exrc.

c. O .exrc arquivo no diretório atual:

eu. Existe

ii. Pertence ao mesmo ID de usuário que o ID de usuário real do processo, ou por um dos
um conjunto de IDs de usuário definidos pela implementação

iii. Não pode ser escrito por ninguém que não seja o proprietário

o editor deve tentar executar o ex comandos contidos naquele arquivo.

Linhas em qualquer .exrc arquivos que são linhas em branco devem ser ignorados. Caso existam .exrc o arquivo existe,
mas não é lido por motivos de propriedade ou permissão, deve ser um erro.

Após SAIR variável e qualquer .exrc arquivos são processados, o primeiro arquivo especificado por
o usuário deve ser editado da seguinte forma:

1. Se o usuário especificou o -t opção, o efeito será como se o ex etiqueta comando era
inserido com o argumento especificado, com a exceção de que, se o processamento da tag
não resultar em um arquivo a ser editado, o efeito será conforme descrito na etapa 3. abaixo.

2. Caso contrário, se o usuário especificou qualquer linha de comando lima argumentos, o efeito será
como se o ex editar comando foi inserido com o primeiro desses argumentos como seu lima
argumento.

3. Caso contrário, o efeito será como se o ex editar o comando foi inserido com um
nome de arquivo inexistente como seu lima argumento. Não é especificado se esta ação deve
definir o nome do caminho atual. Em uma implementação onde esta ação não define o
nome do caminho atual, qualquer comando do editor usando o nome do caminho atual deve falhar até que um
O comando do editor define o nome do caminho atual.

Se o −r opção foi especificada, a primeira vez que um arquivo na lista de argumentos inicial ou um
arquivo especificado pelo -t opção é editada, se a informação de recuperação foi anteriormente
salvo sobre isso, essa informação deve ser recuperada e o editor deve se comportar como se o
o conteúdo do buffer de edição já foi modificado. Se houver várias instâncias de
o arquivo a ser recuperado, aquele salvo mais recentemente será recuperado e um
mensagem informativa de que existem versões anteriores do arquivo que podem ser recuperadas
deve ser escrito. Se nenhuma informação de recuperação sobre um arquivo estiver disponível, um informativo
uma mensagem para esse efeito deverá ser escrita e a edição deverá prosseguir como de costume.

Se o -c opção foi especificada, a primeira vez que um arquivo que já existe (incluindo um
arquivo que pode não existir, mas para o qual as informações de recuperação estão disponíveis, quando o −r
opção for especificada) substitui ou inicializa o conteúdo do buffer de edição, o atual
linha deve ser definida para a última linha do buffer de edição, a coluna atual deve ser definida para
não- , e as ex comandos especificados com o -c opção deve ser executada. Nisso
caso, a linha atual e a coluna atual não devem ser definidas como descrito para o comando
associado à substituição ou inicialização do conteúdo do buffer de edição. No entanto, se
que o -t opção ou um etiqueta comando está associado a esta ação, o -c comandos de opção
deve ser executado e, em seguida, o movimento para a etiqueta deve ser executado.

A lista de argumentos atual deve ser inicialmente definida para os nomes de arquivos especificados pelo usuário em
a linha de comando. Se nenhum nome de arquivo for especificado pelo usuário, a lista de argumentos atual
deve estar vazio. Se o -t opção foi especificada, não é especificado se algum nome de arquivo
resultante do processamento de tag deve obrigatoriamente ser adicionado à lista de argumentos atual. Dentro do estojo
onde o nome do arquivo é adicionado como um prefixo à lista de argumentos atual, o argumento atual
a referência da lista deve ser definida para esse nome de arquivo. No caso em que o nome do arquivo não é adicionado
como um prefixo para a lista de argumentos atual, a referência da lista de argumentos atual deve
logicamente ser localizado antes do primeiro dos nomes de arquivo especificados na linha de comando (para
exemplo, um subsequente ex Próximo comando deve editar o primeiro nome do arquivo a partir do comando
linha). Se o -t opção não foi especificada, a referência da lista de argumentos atual deve ser para
o primeiro dos nomes de arquivo na linha de comando.

Endereçando in ex
Endereçando em ex relaciona-se com a linha atual e a coluna atual; o endereço de uma linha
é seu número de linha baseado em 1, o endereço de uma coluna é sua contagem baseada em 1 do
início da linha. Geralmente, a linha atual é a última linha afetada por um comando.
O número da linha atual é o endereço da linha atual. Em cada descrição de comando,
o efeito do comando no número da linha atual e na coluna atual é descrito.

Os endereços são construídos da seguinte forma:

1. O personagem '.' (ponto final) deve abordar a linha atual.

2. O personagem '$' deve endereçar a última linha do buffer de edição.

3. O número decimal positivo n deve abordar o na linha do buffer de edição.

4. O endereço "'x" refere-se à linha marcada com o caractere do nome da marca 'x', o qual
deve ser uma letra minúscula do conjunto de caracteres portáteis, o caractere de crase,
ou o caractere de aspas simples. Será um erro se a linha que foi marcada não for
atualmente presente no buffer de edição ou a marca não foi definida. As linhas podem ser marcadas
com o ex marca or k comandos, ou o vi m comando.

5. Uma expressão regular delimitada por personagens ('/') deve abordar a primeira linha
encontrado procurando para a frente a partir da linha seguindo a linha atual até o final de
o buffer de edição e parando na primeira linha para a qual a linha excluindo o
terminando corresponde à expressão regular. Como afirmado em Regular Expressões
in ex, um endereço que consiste em uma expressão regular nula delimitada por
personagens ("//") deve abordar a próxima linha para a qual a linha excluindo o
terminando corresponde à última expressão regular encontrada. Além disso,
o segundo pode ser omitido no final de uma linha de comando. Se o digitalizar editar
opção estiver definida, a pesquisa deve voltar ao início do buffer de edição e
continue até e incluindo a linha atual, de modo que todo o buffer de edição seja
pesquisado. Dentro da expressão regular, a sequência "\ /" deve representar um literal
em vez do delimitador de expressão regular.

6. Uma expressão regular entre personagens ('?') deve abordar o
primeira linha encontrada pesquisando para trás a partir da linha anterior à linha atual
em direção ao início do buffer de edição e parando na primeira linha para a qual o
linha excluindo o término corresponde à expressão regular. Um endereço
consistindo em uma expressão regular nula delimitada por personagens ("??")
deve abordar a linha anterior para a qual a linha excluindo o terminal
corresponde à última expressão regular encontrada. Além disso, o segundo
mark> pode ser omitido no final de uma linha de comando. Se o digitalizar opção de edição está definida,
a pesquisa deve envolver desde o início do buffer de edição até o final do
editar buffer e continuar até e incluindo a linha atual, de modo que toda a edição
buffer é pesquisado. Dentro da expressão regular, a sequência "\?" deve representar um
literal em vez do delimitador RE.

7. A ('+') ou um sinal de menos ('-') seguido por um número decimal deve abordar
a linha atual mais ou menos o número. UMA '+' or '-' não seguido por um decimal
número deve abordar a linha atual mais ou menos 1.

Os endereços podem ser seguidos por zero ou mais deslocamentos de endereço, opcionalmente -separated.
Os deslocamentos de endereço são construídos da seguinte forma:

1. A '+' or '-' imediatamente seguido por um número decimal deve adicionar (subtrair) o
número indicado de linhas para (de) o endereço. UMA '+' or '-' não seguido por um
o número decimal deve adicionar (subtrair) 1 ao (de) endereço.

2. Um número decimal adicionará o número indicado de linhas ao endereço.

Não deve ser um erro para um valor de endereço intermediário ser menor que zero ou maior
do que a última linha no buffer de edição. Deve ser um erro para o valor do endereço final para
ser menor que zero ou maior que a última linha no buffer de edição.

Os comandos aceitam zero, um ou dois endereços; veja as descrições de 1 endereço e 2 endereço in
Command Descrição in ex. Se mais do que o número necessário de endereços forem fornecidos para
um comando que requer zero endereços, será um erro. Caso contrário, se mais do que o
o número necessário de endereços é fornecido para um comando, os endereços especificados primeiro
devem ser avaliados e então descartados até que o número máximo de endereços válidos permaneça.

Os endereços devem ser separados uns dos outros por um (',') ou um (';').
Se nenhum endereço for especificado antes ou depois de um ou separador, deve ser
como se o endereço da linha atual fosse especificado antes ou depois do separador. No
caso de um separador, a linha atual ('.') deve ser definido para o primeiro
endereço, e só então o próximo endereço será calculado. Este recurso pode ser usado para
determinar a linha de partida para buscas para frente e para trás (consulte as regras 5 e 6).

UMA ('%') deve ser equivalente a inserir os dois endereços "1, $".

Qualquer delimitação caracteres entre endereços, separadores de endereço ou endereço
os offsets devem ser descartados.

Command Line Análise in ex
O símbolo a seguir é usado nesta seção e nas seguintes para descrever o comportamento de análise:

escapar Se um personagem é referido como `` -escaped '' ou `` ‐V-
escapou '', significa que o caractere adquiriu ou perdeu um significado especial
em virtude de ser precedido, respectivamente, por um ou ‐ V
personagem. A menos que especificado de outra forma, o caractere de escape deve ser descartado
naquele momento e não serão mais considerados para qualquer finalidade.

A análise da linha de comando deve ser feita nas etapas a seguir. Para cada etapa, personagens
já avaliado deve ser ignorado; ou seja, a frase "personagem principal" se refere a
o próximo personagem que ainda não foi avaliado.

1. Liderando os caracteres devem ser ignorados.

2. Liderando os caracteres devem ser ignorados.

3. Se o caractere inicial for aspas duplas, os caracteres até e
incluindo o próximo não -escaped devem ser descartados, e qualquer
os caracteres subsequentes devem ser analisados ​​como um comando separado.

4. Devem ser avaliados caracteres iniciais que possam ser interpretados como endereços; Vejo
Endereçando in ex.

5. Liderando os caracteres devem ser ignorados.

6. Se o próximo caractere for um personagem ou um :

uma. Se o próximo personagem for um :

eu. Se ex está em modo aberto ou visual, a linha atual deve ser definida para a última
endereço especificado, se houver.

ii. Caso contrário, se o último comando foi encerrado por um personagem,
nenhuma ação deve ser tomada; por exemplo, o comando "|| " deve
execute dois comandos implícitos, não três.

iii. Caso contrário, a etapa 6.b. pode aplicar.

b. Caso contrário, o comando implícito deve ser o impressão comando. O último #, p e l
sinalizadores especificados para qualquer ex comando deve ser lembrado e deve ser aplicado a este
comando implícito. Executando o ex número, impressãoou Lista comando deve definir o
bandeiras lembradas para #, nada e l, respectivamente, além de quaisquer outras sinalizações
especificado para a execução do número, impressãoou Lista comando.

If ex não está realizando um global or v comando, e nenhum endereço ou contagem
for especificado, a linha atual deve ser incrementada em 1 antes que o comando seja
executado. Se incrementar a linha atual resultaria em um endereço além do
última linha no buffer de edição, o comando deve falhar, e o incremento não deve
acontecer.

c. O ou personagem deve ser descartado e qualquer subseqüente
os caracteres devem ser analisados ​​como um comando separado.

7. O nome do comando deve ser composto pelo próximo caractere (se o caractere não for
alfabético), ou o próximo caractere e quaisquer caracteres alfabéticos subsequentes (se o
caractere é alfabético), com as seguintes exceções:

uma. Comandos que consistem em qualquer prefixo dos caracteres no nome do comando excluir,
seguido imediatamente por qualquer um dos personagens 'eu', 'p', '+', '-'ou '#' será
interpretado como um excluir comando, seguido por um , seguido pelos personagens
que não faziam parte do prefixo do excluir comando. O número máximo de
os caracteres devem ser combinados com o nome do comando excluir; por exemplo, "del" deve
não ser tratado como "de" seguido pela bandeira l.

b. Comandos que consistem no personagem 'k', seguido por um caractere que pode ser
usado como o nome de uma marca, deve ser equivalente ao comando de marca seguido por um
, seguido pelo caractere que seguiu o 'k'.

c. Comandos que consistem no personagem 's', seguido por caracteres que poderiam ser
interpretado como opções válidas para o s comando, deve ser o equivalente do s
comando, sem qualquer padrão ou valores de substituição, seguido por um ,
seguido pelos personagens após o 's'.

8. O nome do comando deve ser combinado com os nomes de comando possíveis, e um comando
nome que contém um prefixo correspondente aos caracteres especificados pelo usuário deve ser o
comando executado. No caso de comandos onde os caracteres especificados pelo usuário
pode ser ambíguo, o comando executado deve ser o seguinte:

┌───┬─────────┬┬───┬───────┬┬───┬────────┐
aanexar ││nPróximo ││tt
calterar ││pimpressão ││udesfazer
chalterar ││primpressão ││undesfazer
eeditar ││rler ││vv
mmover ││reler ││wescrever
mamarca ││ss ││ │ │
└───┴─────────┴┴───┴───────┴┴───┴────────┘
As extensões de implementação com nomes que causam ambigüidades semelhantes não devem ser verificadas
para uma correspondência até que todas as correspondências possíveis para comandos especificados por POSIX.1‐2008 tenham
foi verificado.

9. Se o comando for um ! comando, ou se o comando é um ler comando seguido de zero
ou mais personagens e um !, ou se o comando for um escrever comando seguido por
um ou mais personagens e um !, o resto do comando deve incluir todos
personagens até um não -escaped . O deverá ser
descartados e quaisquer caracteres subsequentes serão analisados ​​separadamente ex comando.

10. Caso contrário, se o comando for um editar, exou Próximo comando, ou um visual comandar enquanto
no modo aberto ou visual, a próxima parte do comando deve ser analisada da seguinte forma:

uma. Qualquer '!' caractere imediatamente após o comando deve ser pulado e fazer parte
do comando.

b. Qualquer líder os caracteres devem ser ignorados e fazer parte do comando.

c. Se o próximo personagem for um '+', caracteres até o primeiro não -escaped
ou não -escaped deve ser ignorado e fazer parte do
comando.

d. O resto do comando deve ser determinado pelas etapas especificadas no parágrafo
12.

11. Caso contrário, se o comando for um global, aberto, sou v comando, a próxima parte do
comando deve ser analisado da seguinte forma:

uma. Qualquer líder os caracteres devem ser ignorados e fazer parte do comando.

b. Se o próximo caractere não for alfanumérico, aspas duplas, ,
, ou personagem:

eu. O próximo caractere deve ser usado como um delimitador de comando.

ii. Se o comando for um global, abertoou v comando, caracteres até o primeiro
não- -escaped , ou primeiro não - delimitador com escape
caractere, deve ser ignorado e fazer parte do comando.

iii. Se o comando for um s comando, caracteres até o primeiro
não- -escaped , ou segundo não -escaped
caractere delimitador, deve ser ignorado e fazer parte do comando.

c. Se o comando for um global or v comando, caracteres até o primeiro
não- -escaped deve ser ignorado e fazer parte do comando.

d. Caso contrário, o resto do comando deve ser determinado pelas etapas especificadas em
parágrafo 12.

12. Caso contrário:

uma. Se o comando fosse um mapa,, desmapear, abreviarou não abreviar comando, personagens
até o primeiro não ‐ V-escaped , , ou duplo
o caractere de aspas deve ser ignorado e fazer parte do comando.

b. Caso contrário, personagens até o primeiro não -escaped ,
, ou aspas duplas devem ser ignoradas e fazer parte do
comando.

c. Se o comando fosse um anexar, alterarou inserir comando e a etapa 12.b. terminou
em um caractere, quaisquer caracteres subsequentes, até o próximo
não- -escaped deve ser usado como texto de entrada para o comando.

d. Se o comando foi encerrado por um caractere de aspas duplas, todos os caracteres subsequentes,
até o próximo não -escaped , devem ser descartados.

e. O término ou personagem deve ser descartado e qualquer
os caracteres subsequentes devem ser analisados ​​separadamente ex comando.

Os argumentos do comando devem ser analisados ​​conforme descrito pela Sinopse e Descrição de cada
Individual ex comando. Esta análise não deve ser -sensível, exceto para o !
argumento, que deve seguir o nome do comando sem intervir personagens e
onde de outra forma seria ambíguo. Por exemplo, contar e bandeira argumentos não precisam ser
-separado porque "d22p" não é ambíguo, mas lima argumentos para o ex Próximo
o comando deve ser separado por um ou mais personagens. Qualquer no comando
argumentos para o abreviar, não abreviar, mapa, e desmapear comandos podem ser ‐V-
escapou, caso em que o não deve ser usado como um delimitador de argumento. Qualquer
no argumento de comando para qualquer outro comando pode ser -escaped, caso em que
naquela não deve ser usado como um delimitador de argumento.

Dentro dos argumentos de comando para o abreviar, não abreviar, mapa, e desmapear comandos, qualquer
personagem pode ser -V com escape. Todos esses caracteres escapados devem ser tratados
literalmente e não deve ter nenhum significado especial. Dentro dos argumentos de comando para todos os outros ex
comandos que não são expressões regulares ou strings de substituição, qualquer caractere que
caso contrário, ter um significado especial pode ser -escaped. Personagens com escape devem ser
tratados literalmente, sem significado especial como caracteres de expansão de shell ou '!', '%' e
'#' caracteres de expansão. Ver Regular Expressões in ex e Substituição Cordas in ex para
descrições de argumentos de comando que são expressões regulares ou strings de substituição.

Não- -escaped '%' personagens que aparecem em lima argumentos para qualquer ex o comando deve
ser substituído pelo nome do caminho atual; sem escape '#' caracteres devem ser substituídos pelo
nome do caminho alternativo. Será um erro se '%' or '#' personagens aparecem sem escape em um
argumento e seus valores correspondentes não são definidos.

Não- -escaped '!' caracteres nos argumentos para o ex ! comando ou
o modo aberto e visual ! comando, ou nos argumentos para o ex ler comando, onde o
primeiro não depois que o nome do comando é um '!' personagem, ou nos argumentos para o
ex escrever comando onde o nome do comando é seguido por um ou mais personagens e
o primeiro não depois que o nome do comando é um '!' personagem, deve ser substituído por
os argumentos para o último desses três comandos como eles apareceram depois de tudo sem escape
'%', '#' e '!' personagens foram substituídos. Será um erro se '!' caracteres
aparecem sem escape em um desses comandos e não houve execução anterior de um
desses comandos.

Se ocorrer um erro durante a análise ou execução de um ex comando:

* Uma mensagem informativa para este efeito deve ser escrita. Execução do ex comando
deve parar, e o cursor (por exemplo, a linha e coluna atuais) não deve ser
modificado posteriormente.

* Se o ex comando resultou de uma expansão do mapa, todos os personagens desse mapa
expansão deve ser descartada, exceto quando especificado de outra forma pelo mapa, comando.

* Caso contrário, se o ex comando resultou do processamento de um SAIR meio Ambiente
variável, um .exrc arquivo, um :fonte comando, um -c opção, ou um +comando especificado para um
ex editar, ex, Próximoou visual comando, nenhum comando adicional da fonte do
os comandos devem ser executados.

* Caso contrário, se o ex comando resultou da execução de um buffer ou um global or v
comando, nenhum comando adicional causado pela execução do buffer ou o global or v
comando deve ser executado.

* Caso contrário, se o ex comando não foi terminado por um , todos os personagens até
e incluindo o próximo não -escaped devem ser descartados.

Entrada Edição in ex
O seguinte símbolo é usado nesta e nas seguintes seções para especificar o comando
ações:

palavra No local POSIX, uma palavra consiste em uma sequência máxima de letras, dígitos,
e sublinhados, delimitados em ambas as extremidades por caracteres diferentes de letras,
dígitos ou sublinhados, ou no início ou no final de uma linha ou no buffer de edição.

Ao aceitar caracteres de entrada do usuário, em qualquer ex modo de comando ou ex entrada de texto
Modo, ex deve habilitar o processamento de entrada de modo canônico, conforme definido nas interfaces do sistema
volume de POSIX.1‐2008.

Se em ex modo de entrada de texto:

1. Se o número opção de edição está definida, ex deve solicitar a entrada usando o número da linha que
seria atribuído à linha se fosse inserido, no formato especificado para o ex
número comando.

2. Se o recuo automático opção de edição está definida, ex deve solicitar entrada usando recuo automático
personagens, conforme descrito pelo recuo automático opção de edição. recuo automático personagens devem
siga o número da linha, se houver.

Se em ex modo de comando:

1. Se o pronto opção de edição está definida, a entrada deve ser solicitada usando um único ':'
personagem; caso contrário, não haverá solicitação.

Os caracteres de entrada nas seções a seguir devem ter os seguintes efeitos no
linha de entrada.

Rolagem
Sinopse:
eof

Veja a descrição do chiqueiro eof personagem em chiqueiro.

Se em ex modo de comando:

Se o eof caractere é o primeiro caractere inserido na linha, a linha deve ser
avaliado como se contivesse dois caracteres: a ‐D e um .

Caso contrário, o eof personagem não deve ter nenhum significado especial.

Se em ex modo de entrada de texto:

Se o cursor seguir um recuo automático personagem, o recuo automático personagens no
linha deve ser modificada para que uma parte do próximo caractere de entrada de texto seja
exibido na primeira coluna na linha após o anterior largura de deslocamento opção de edição
limite da coluna, e o usuário deverá ser solicitado novamente para inserir a mesma linha.

Caso contrário, se o cursor seguir um '0', que segue um recuo automático personagem, e
que o '0' era o caractere de entrada de texto anterior, o '0' e todos recuo automático
caracteres na linha devem ser descartados, e o usuário deve ser solicitado novamente para
entrada para a mesma linha.

Caso contrário, se o cursor seguir um '^', que segue um recuo automático personagem, e
que o '^' era o caractere de entrada de texto anterior, o '^' e todos recuo automático
caracteres na linha devem ser descartados, e o usuário deve ser solicitado novamente para
entrada para a mesma linha. Além disso, o recuo automático nível para a próxima linha de entrada
deve ser derivado da mesma linha da qual o recuo automático nível para o atual
linha de entrada foi derivada.

Caso contrário, se não houver recuo automático ou caracteres de entrada de texto na linha, o eof
personagem deve ser descartado.

Caso contrário, o eof personagem não deve ter nenhum significado especial.


Sinopse:

-J

Se em ex modo de comando:

Faz com que a linha de comando seja analisada; ‐J deve ser mapeado para o
para esta finalidade.

Se em ex modo de entrada de texto:

Encerrar a linha atual. Se não houver caracteres diferentes de recuo automático
caracteres na linha, todos os caracteres na linha devem ser descartados.

Solicita a entrada de texto em uma nova linha após a linha atual. Se o recuo automático editar
opção é definida, um número apropriado de recuo automático caracteres devem ser adicionados como um
prefixo para a linha, conforme descrito pelo ex recuo automático opção de edição.


Sinopse:


Permitir a entrada de um subseqüente ou ‐J como um personagem literal, removendo
qualquer significado especial que possa ter para o editor durante o modo de entrada de texto. O
caractere deve ser retido e avaliado quando a linha de comando é analisada, ou retida e
incluído quando o texto de entrada se torna parte do buffer de edição.

‐ V
Sinopse:
-V

Permitir a entrada de qualquer caractere subsequente como um caractere literal, removendo qualquer caractere especial
o que significa que pode ser necessário para o editor durante o modo de entrada de texto. O ‐ Personagem V
deve ser descartado antes que a linha de comando seja analisada ou o texto de entrada se torne parte do
editar buffer.

Se a funcionalidade `` literal próximo '' for realizada pelo sistema subjacente, é
definido pela implementação se um caractere diferente de ‐V executa esta função.

-C
Sinopse:
-C

Descarte o ‐W, e a palavra anterior a ela na linha de entrada, incluindo qualquer
caracteres após a palavra e precedendo o -C. Se a palavra ``
a funcionalidade de apagar '' é realizada pelo sistema subjacente, é definida pela implementação
se um personagem diferente de ‐W executa esta função.

Command Descrição in ex
Os símbolos a seguir são usados ​​nesta seção para representar modificadores de comando. Alguns
esses modificadores podem ser omitidos, caso em que os padrões especificados devem ser usados.

1 endereço Um endereço de linha única, fornecido em qualquer uma das formas descritas em Endereçando in ex;
o padrão deve ser a linha atual ('.'), a menos que especificado de outra forma.

Se o endereço da linha for zero, deve ser um erro, a menos que especificado de outra forma em
as seguintes descrições de comando.

Se o buffer de edição estiver vazio e o endereço for especificado com um comando outro
do que =, anexar, inserir, aberto, colocar, lerou visual, ou o endereço não é zero,
será um erro.

2 endereço Dois endereços especificando um intervalo inclusivo de linhas. Se nenhum endereço for
especificado, o padrão para 2 endereço deve ser apenas a linha atual (".,."), a não ser que
especificado de outra forma nas seguintes descrições de comando. Se um endereço for
Especificadas, 2 endereço deve especificar essa linha apenas, a menos que especificado de outra forma no
as seguintes descrições de comando.

Será um erro se o primeiro endereço for maior que o segundo endereço.

Se o buffer de edição estiver vazio e os dois endereços forem especificados com um comando
diferente do !, escrever, wqou xit comandos, ou o endereço não é zero,
deve ser um erro.

contar Um número decimal positivo. Se contar é especificado, deve ser equivalente a
especificando um endereço adicional para o comando, a menos que especificado de outra forma por
as seguintes descrições de comando. O endereço adicional deve ser igual ao
último endereço especificado para o comando (explicitamente ou por padrão) mais
contar−1.

Se isso resultasse em um endereço maior do que a última linha da edição
buffer, deve ser corrigido para igualar a última linha do buffer de edição.

bandeiras Um ou mais dos personagens '+', '-', '#', 'p'ou 'eu' (ell). A bandeira
personagens podem ser -separados e em qualquer ordem ou combinação. O
caracteres '#', 'p' e 'eu' deve fazer com que as linhas sejam escritas no formato
especificado pelo impressão comando com o especificado bandeiras.

As linhas a serem escritas são as seguintes:

1. Todas as linhas de buffer de edição escritas durante a execução do ex &, ~, Lista,
número, aberto, impressão, s, visual e z os comandos devem ser escritos conforme especificado
by bandeiras.

2. Após a conclusão de um ex comando com uma bandeira como argumento, o
linha atual deve ser escrita conforme especificado por bandeiras, a menos que a linha atual
foi a última linha escrita pelo comando.

Os personagens '+' e '-' fazer com que o valor da linha atual após o
execução do ex comando a ser ajustado pelo endereço de deslocamento, conforme descrito em
Endereçando in ex. Este ajuste deve ocorrer antes que a linha atual seja
escrito conforme descrito em 2. acima.

O padrão para bandeiras será nenhum.

amortecer Uma das várias áreas nomeadas para conter texto. Os buffers nomeados são especificados
pelos caracteres alfanuméricos da localidade POSIX. Haverá também um
buffer `` sem nome ''. Quando nenhum buffer é especificado para comandos do editor que usam um
buffer, o buffer sem nome deve ser usado. Comandos que armazenam texto em buffers
deve armazenar o texto como estava antes de o comando entrar em vigor, e deve armazenar
texto ocorrendo anteriormente no arquivo antes do texto ocorrer posteriormente no arquivo,
independentemente de como a região do texto foi especificada. Comandos que armazenam texto em
os buffers devem armazenar o texto no buffer não nomeado, bem como em qualquer
tampão.

In ex comandos, nomes de buffer são especificados como o próprio nome. Em aberto ou
o modo visual comanda o nome é precedido por aspas duplas ('"') personagem.

Se o nome do buffer especificado for um caractere maiúsculo, e o conteúdo do buffer
devem ser modificados, o buffer deve ser anexado ao invés de ser
sobrescrito. Se o buffer não está sendo modificado, especificando o nome do buffer em
letras minúsculas e maiúsculas devem ter resultados idênticos.

Também deve haver buffers nomeados pelos números de 1 a 9. Em aberto e visual
modo, se uma região de texto incluindo caracteres de mais de uma linha for
sendo modificado pelo vi c or d comandos, o personagem de movimento associado com
que o c or d comandos especifica que o texto do buffer deve estar em modo de linha, ou o
comandos %, `, /, ?, (, ), N, n, {ou } são usados ​​para definir uma região de texto para
que o c or d comandos, o conteúdo dos buffers 1 a 8 deve ser movido para o
buffer nomeado pelo próximo valor numericamente maior, o conteúdo do buffer 9
deve ser descartado, e a região do texto deve ser copiada para o buffer 1. Este
deve ser, além de copiar o texto em um buffer especificado pelo usuário ou sem nome
buffer, ou ambos. Buffers numéricos podem ser especificados como um buffer de origem para
e comandos de modo visual; no entanto, especificando um buffer numérico como a gravação
o alvo de um comando de modo aberto ou visual deve ter resultados não especificados.

O texto de cada buffer deve ter a característica de estar em qualquer linha ou
modo de personagem. Anexar texto a um buffer não vazio deve definir o modo para corresponder
a característica do texto que está sendo anexado. Anexar texto a um buffer deve
causar a criação de pelo menos uma linha adicional no buffer. Todo o texto
armazenado em buffers por ex os comandos devem estar em modo de linha. O ex comanda que
usar buffers como fonte de texto especifica individualmente como buffers de diferentes
modos são tratados. Cada comando de modo aberto ou visual que usa buffers para qualquer
propósito especifica individualmente o modo do texto armazenado no buffer e
como buffers de modos diferentes são tratados.

lima Texto de comando usado para derivar um nome de caminho. O padrão deve ser o atual
nome do caminho, conforme definido anteriormente, caso em que, se nenhum nome do caminho atual ainda
foi estabelecido que será um erro, exceto quando especificamente indicado no
descrições de comandos individuais que se seguem. Se o texto do comando contém qualquer
dos personagens '~', '{', '[', '*', '?', '$', '"', crase, aspa simples,
e , deve ser submetido ao processo de `` expansão de casca '',
como descrito abaixo; se mais de um único caminho resultar e o comando
espera apenas um, será um erro.

O processo de expansões de shell no editor deve ser feito da seguinte forma. O ex
o utilitário deve passar dois argumentos para o programa nomeado pela opção de edição do shell;
o primeiro será -c, e o segundo deve ser a corda "eco" e o comando
texto como um único argumento. A saída padrão e o erro padrão desse
comando deve substituir o texto do comando.

! Um caractere que pode ser anexado ao nome do comando para modificar sua operação, como
detalhado nas descrições de comandos individuais. Com exceção do ex
ler, escrever e ! comandos, o '!' personagem só deve atuar como um modificador se
não há caracteres entre ele e o nome do comando.

lembrado search direção
A vi comandos N e n comece a pesquisar para a frente ou para trás em
o buffer de edição com base em uma direção de pesquisa lembrada, que é inicialmente
não definido, e é definido pelo ex global, v, s e etiqueta comandos, e o vi / e ?
comandos.

Abreviar
Sinopse:
ab [breviar][lhs rhs]

If lhs e rhs não são especificados, escreva a lista atual de abreviações e não faça nada
mais.

As implementações podem restringir o conjunto de caracteres aceitos em lhs or rhs, exceto que
caracteres imprimíveis e os caracteres não devem ser restritos. Adicional
as restrições devem ser definidas pela implementação.

Em ambos lhs e rhs, qualquer caractere pode ser escapado com um ‐ V, caso em que o
caractere não deve ser usado para delimitar lhs da rhs, e a fuga ‐V deve ser
descartado.

No modo de entrada de texto aberto e visual, se não for uma palavra ou personagem que não tem escape
por um O caractere ‐ V é inserido após um caractere de palavra, uma verificação deve ser feita para um
conjunto de caracteres correspondentes lhs, na entrada de texto inserida durante este comando. Se for
encontrado, o efeito será como se rhs foi inserido em vez de lhs.

O conjunto de caracteres verificados é definido da seguinte forma:

1. Se não houver caracteres inseridos antes da palavra e não palavra ou personagens
que desencadeou a verificação, o conjunto de caracteres deve ser composto pela palavra caractere.

2. Se o caractere inserido antes da palavra e não palavra ou personagens que
acionado a verificação é um caractere de palavra, o conjunto de caracteres deve consistir no
caracteres inseridos imediatamente antes dos caracteres desencadeadores que são palavras
caracteres, além do caractere da palavra de acionamento.

3. Se o caractere inserido antes da palavra e não palavra ou personagens que
acionado a verificação não é um caractere de palavra, o conjunto de caracteres deve consistir em
os caracteres que foram inseridos antes dos caracteres desencadeadores que não são nem
caracteres nem caracteres de palavras, mais o caractere de palavra de ativação.

Não é especificado se o lhs argumento inserido para o ex abreviar e não abreviar
comandos são substituídos desta forma. Independentemente de a substituição ocorrer ou não,
o efeito do comando será como se a substituição não tivesse ocorrido.

Atual linha: Inalterado.

Atual coluna: Inalterado.

Acrescentar
Sinopse:
[1 endereço] a[anexar][!]

Entrar ex modo de entrada de texto; o texto de entrada deve ser colocado após a linha especificada. Se linha
zero for especificado, o texto deve ser colocado no início do buffer de edição.

Este comando deve ser afetado pelo número e recuo automático editar opções; seguindo o
nome do comando com '!' deve causar o recuo automático editar configuração de opção a ser alternada para
a duração deste comando apenas.

Atual linha: Defina para a última linha de entrada; se nenhuma linha foi inserida, defina para o especificado
linha, ou para a primeira linha do buffer de edição se uma linha de zero foi especificada, ou zero se
o buffer de edição está vazio.

Atual coluna: Definir como não- .

Argumentos
Sinopse:
ar [gs]

Escreva a lista de argumentos atual, com a entrada da lista de argumentos atual, se houver, entre '['
e ']' caracteres.

Atual linha: Inalterado.

Atual coluna: Inalterado.

Mudar
Sinopse:
[2 endereço] c[hange][!][contar]

Entrar ex modo de entrada de texto; o texto de entrada deve substituir as linhas especificadas. O especificado
as linhas devem ser copiadas para o buffer sem nome, que se tornará um buffer de modo de linha.

Este comando deve ser afetado pelo número e recuo automático editar opções; seguindo o
nome do comando com '!' deve causar o recuo automático editar configuração de opção a ser alternada para
a duração deste comando apenas.

Atual linha: Defina para a última linha de entrada; se nenhuma linha foi inserida, defina para a linha anterior
o primeiro endereço, ou para a primeira linha do buffer de edição se não houver linhas anteriores
o primeiro endereço ou para zero se o buffer de edição estiver vazio.

Atual coluna: Definir como não- .

Mudar Diretório
Sinopse:
chd [ir][!][anuário]
cd[!][anuário]

Altere o diretório de trabalho atual para anuário.

Se nenhum anuário argumento é especificado, e o EMPRESA variável de ambiente é definida como não
valor nulo e não vazio, anuário deve ser padronizado para o valor nomeado no EMPRESA
variável de ambiente. Se o EMPRESA variável de ambiente está vazia ou indefinida, o
valor padrão de anuário é definido pela implementação.

Se nenhum '!' é anexado ao nome do comando, e o buffer de edição foi modificado desde
a última gravação completa, e o nome do caminho atual não começa com um '/', deve ser
um erro.

Atual linha: Inalterado.

Atual coluna: Inalterado.

Copiar
Sinopse:
[2 endereço] co[py] 1 endereço [bandeiras]
[2 endereço] t 1 endereço [bandeiras]

Copie as linhas especificadas após a linha de destino especificada; linha zero especifica que
as linhas devem ser colocadas no início do buffer de edição.

Atual linha: Defina para a última linha copiada.

Atual coluna: Definir como não- .

Apagar
Sinopse:
[2 endereço] d[eleito][amortecer][contar][bandeiras]

Exclua as linhas especificadas em um buffer (padronizando para o buffer sem nome), que deve
tornar-se um buffer de modo de linha.

Os sinalizadores podem seguir imediatamente o nome do comando; Vejo Command Line Análise in ex.

Atual linha: Defina para a linha após as linhas excluídas ou para a última linha na edição
buffer se essa linha ultrapassar o final do buffer de edição, ou zero se o buffer de edição for
esvaziar.

Atual coluna: Definir como não- .

Editar
Sinopse:
e[dit][!][+comando][lima]
ex[!][+comando][lima]

Se nenhum '!' é anexado ao nome do comando, e o buffer de edição foi modificado desde
a última gravação completa, será um erro.

If lima for especificado, substitua o conteúdo atual do buffer de edição pelo atual
conteúdo de lima, e defina o nome do caminho atual para lima. Se lima não é especificado, substitua
o conteúdo atual do buffer de edição com o conteúdo atual do arquivo nomeado pelo
nome do caminho atual. Se por algum motivo o conteúdo atual do arquivo não puder ser acessado,
o buffer de edição deve estar vazio.

A +comando opção deve ser -delimitado; personagens dentro do +comando pode
ser escapado precedendo-os com um personagem. O +comando será
interpretado como um ex imediatamente após o conteúdo do buffer de edição ter sido
substituído e a linha e coluna atuais foram definidas.

Se o buffer de edição estiver vazio:

Atual linha: Defina como 0.

Atual coluna: Defina como 1.

Caso contrário, se executado enquanto em ex modo de comando ou se o +comando o argumento é especificado:

Atual linha: Defina para a última linha do buffer de edição.

Atual coluna: Definir como não- .

Caso contrário, se lima é omitido ou resulta no caminho atual:

Atual linha: Defina para a primeira linha do buffer de edição.

Atual coluna: Definir como não- .

Caso contrário, se lima é o mesmo que o último arquivo editado, a linha e a coluna devem ser definidas
do seguinte modo; se o arquivo foi editado anteriormente, a linha e a coluna podem ser definidas da seguinte forma:

Atual linha: Definido para o último valor mantido quando o arquivo foi editado pela última vez. Se este valor for
não é uma linha válida no novo buffer de edição, definida como a primeira linha do buffer de edição.

Atual coluna: Se a linha atual foi definida com o último valor mantido quando o arquivo foi pela última vez
editado, definido com o último valor mantido quando o arquivo foi editado pela última vez. Caso contrário, ou se o
o último valor não é uma coluna válida no novo buffer de edição, definido como não .

De outra forma:

Atual linha: Defina para a primeira linha do buffer de edição.

Atual coluna: Definir como não- .

Envie o
Sinopse:
f[s][lima]

Se um lima argumento for especificado, o nome do caminho alternativo deve ser definido para o atual
nome do caminho, e o nome do caminho atual deve ser definido para lima.

Escreva uma mensagem informativa. Se o arquivo tiver um nome de caminho atual, ele deve ser incluído
nesta mensagem; caso contrário, a mensagem indicará que não há nome de caminho atual.
Se o buffer de edição contém linhas, o número da linha atual e o número de linhas no
o buffer de edição deve ser incluído nesta mensagem; caso contrário, a mensagem deve indicar que
o buffer de edição está vazio. Se o buffer de edição foi modificado desde o último
escrever, este fato será incluído nesta mensagem. Se o somente leitura opção de edição está definida,
este fato será incluído nesta mensagem. A mensagem pode conter outros não especificados
informações.

Atual linha: Inalterado.

Atual coluna: Inalterado.

Global
Sinopse:
[2 endereço] g[lobal] /de cinto de segurança/ [comandos]
[2 endereço] v/de cinto de segurança/ [comandos]

O opcional '!' personagem após o global comando deve ser o mesmo que executar o v
comando.

If de cinto de segurança está vazio (por exemplo, "//") ou não especificado, a última expressão regular usada
no comando do editor deve ser usado como o de cinto de segurança. O de cinto de segurança pode ser delimitado por
caracteres (mostrados na sinopse), bem como quaisquer caracteres não alfanuméricos ou não
outro que não seja , , , ou aspas duplas.

Se nenhuma linha for especificada, as linhas devem ser padronizadas para todo o arquivo.

A global e v comandos são logicamente operações de duas passagens. Primeiro, marque as linhas dentro
as linhas especificadas para as quais a linha excluindo o terminal fósforos
(global) ou não corresponde (v or global!) o padrão especificado. Em segundo lugar, execute o ex
comandos dados por comandos, com a linha atual ('.') definido para cada linha marcada. Se um
ocorre um erro durante este processo, ou o conteúdo do buffer de edição é substituído (por
exemplo, pelo ex edit: comando) uma mensagem de erro deve ser escrita e não mais comandos
resultantes da execução deste comando serão processados.

Múltiplo ex os comandos podem ser especificados inserindo vários comandos em uma única linha usando
uma para delimitá-los, ou um por linha, escapando de cada com um
.

Se nenhum comando for especificado:

1. Se em ex modo de comando, será como se o impressão comando foram especificados.

2. Caso contrário, nenhum comando deve ser executado.

Para o anexar, alterar e inserir comandos, o texto de entrada deve ser incluído como parte de
o comando e o término pode ser omitido se o comando terminar a lista de
comandos. o aberto e visual comandos podem ser especificados como um dos comandos, nos quais
caso, cada linha marcada deve fazer com que o editor entre no modo aberto ou visual. Se aberto ou
modo visual é encerrado usando o vi Q comando, a linha atual deve ser definida para a próxima
linha marcada e modo aberto ou visual reentrado, até que a lista de linhas marcadas seja
Exausta.

A global, v e desfazer comandos não podem ser usados ​​em comandos. As linhas marcadas podem ser excluídas
por comandos executados para linhas que ocorrem mais cedo no arquivo do que as linhas marcadas. Dentro
neste caso, nenhum comando deve ser executado para as linhas excluídas.

Se a direção de pesquisa lembrada não for definida, o global e v os comandos devem configurá-lo para
frente.

A impressão automática e recuo automático opções de edição devem ser inibidas durante o g or
v comando.

Atual linha: Se nenhum comando for executado, defina para a última linha marcada. Caso contrário, como
especificado para o executado ex comandos.

Atual coluna: Se nenhum comando for executado, defina como não ; caso contrário, conforme especificado
para o indivíduo ex comandos.

inserção
Sinopse:
[1 endereço] i[inserir][!]

Entrar ex modo de entrada de texto; o texto de entrada deve ser colocado antes da linha especificada. Se o
linha for zero ou 1, o texto deve ser colocado no início do buffer de edição.

Este comando deve ser afetado pelo número e recuo automático editar opções; seguindo o
nome do comando com '!' deve causar o recuo automático editar configuração de opção a ser alternada para
a duração deste comando apenas.

Atual linha: Defina para a última linha de entrada; se nenhuma linha foi inserida, defina para a linha anterior
a linha especificada, ou para a primeira linha do buffer de edição se não houver linhas
precedendo a linha especificada ou zero se o buffer de edição estiver vazio.

Atual coluna: Definir como não- .

Cadastrar
Sinopse:
[2 endereço] j[oin][!][contar][bandeiras]

If contar é especificado:

Se nenhum endereço foi especificado, o juntar comando deve se comportar como se 2 endereço foram a
linha atual e a linha atual mais contar (.,. + contar).

Se um endereço foi especificado, o juntar comando deve se comportar como se 2 endereço foram a
endereço especificado e o endereço especificado mais contar (addr,addr + contar).

Se dois endereços foram especificados, o juntar comando deve se comportar como se um
endereço, igual ao último endereço mais contar -1 (endereço1,endereço2,endereço2 + contar -1),
foi especificado.

Se isso resultasse em um segundo endereço maior do que a última linha da edição
buffer, deve ser corrigido para ser igual à última linha do buffer de edição.

Se nenhum contar é especificado:

Se nenhum endereço foi especificado, o juntar comando deve se comportar como se 2 endereço foram a
linha atual e a próxima linha (.,. +1).

Se um endereço foi especificado, o juntar comando deve se comportar como se 2 endereço foram a
endereço especificado e a próxima linha (addr,addr + 1).

Junte o texto das linhas especificadas em uma única linha, que deve substituir
as linhas especificadas.

Se um '!' caractere é acrescentado ao nome do comando, o juntar será sem
modificação de qualquer linha, independente do local atual.

Caso contrário, no local POSIX, defina a linha atual para a primeira das linhas especificadas,
e então, para cada linha subsequente, proceda da seguinte forma:

1. Descartar a liderança caracteres da linha a ser unida.

2. Se a linha a ser unida agora estiver vazia, exclua-a e pule as etapas 3 a 5.

3. Se a linha atual terminar em um , ou o primeiro caractere da linha a ser unida
é um ')' caractere, junte as linhas sem modificações adicionais.

4. Se o último caractere da linha atual for um '.', junte as linhas com dois
personagens entre eles.

5. Caso contrário, junte as linhas com um único entre eles.

Atual linha: Defina para a primeira linha especificada.

Atual coluna: Definir como não- .

Lista
Sinopse:
[2 endereço] l[é][contar][bandeiras]

Este comando deve ser equivalente ao ex comando:

[2 endereço] p[rint][contar] l[bandeiras]

See Impressão.

Mapa
Sinopse:
mapa[!][lhs rhs]

If lhs e rhs não são especificados:

1. E se '!' for especificado, escreva a lista atual de mapas de modo de entrada de texto.

2. Caso contrário, escreva a lista atual de mapas do modo de comando.

3. Não faça mais nada.

As implementações podem restringir o conjunto de caracteres aceitos em lhs or rhs, exceto que
caracteres imprimíveis e os caracteres não devem ser restritos. Adicional
as restrições devem ser definidas pela implementação. Em ambos lhs e rhs, qualquer personagem pode ser
escapou com um ‐V, caso em que o caractere não deve ser usado para delimitar lhs
da rhs, e a fuga ‐V deve ser descartado.

Se o personagem '!' é anexado ao mapa, nome do comando, o mapeamento deve ser eficaz
durante o modo de entrada de texto aberto ou visual, em vez de aberto or visual modo de comando. Isso permite
lhs ter dois diferentes mapa, definições ao mesmo tempo: uma para o modo de comando e outra
para o modo de entrada de texto.

Para mapeamentos de modo de comando:

Quando o lhs é inserido como qualquer parte de um vi comando em modo aberto ou visual (mas não
como parte dos argumentos do comando), a ação será como se o
correspondente rhs foi inserido.

Se qualquer caractere no comando, diferente do primeiro, for escapado usando um
‐V personagem, esse personagem não deve ser parte de uma correspondência com um lhs.

Não é especificado se as implementações devem suportar mapa, comandos onde o lhs
tem mais do que um único caractere de comprimento, onde o primeiro caractere do lhs is
para impressão.

If lhs contém mais de um caractere e o primeiro caractere é '#', Seguido por
uma sequência de dígitos correspondente a uma tecla de função numerada, então quando esta
a tecla de função é digitada e deve ser mapeada para rhs. Caracteres diferentes de dígitos
Depois de uma '#' caractere também representa a tecla de função nomeada pelos caracteres
no lhs seguindo o '#' e pode ser mapeado para rhs. Não é especificado como
as teclas de função são nomeadas ou quais teclas de função são suportadas.

Para mapeamentos de modo de entrada de texto:

Quando o lhs é inserido como qualquer parte do texto inserido na entrada de texto aberto ou visual
modos, a ação deve ser como se o correspondente rhs foi inserido.

Se qualquer caractere no texto de entrada for escapado usando um ‐ Personagem V, que
personagem não deve ser parte de uma correspondência com um lhs.

Não é especificado se o lhs texto inserido para subsequente mapa, or desmapear comandos
é substituído pelo rhs texto para fins de exibição na tela; não obstante
se o display aparece ou não como se o rhs o texto foi inserido,
o efeito do comando será como se o lhs o texto foi inserido.

Se apenas parte do lhs é inserido, não é especificado quanto tempo o editor irá esperar
caracteres adicionais, possivelmente correspondentes, antes de tratar os caracteres já inseridos como
não combinando com o lhs.

A rhs caracteres devem estar sujeitos a remapeamento, a menos que especificado de outra forma por
que o remapear opção de edição, exceto se os caracteres em lhs ocorrem como caracteres de prefixo em
rhs, esses caracteres não serão remapeados.

Em terminais de modo de bloco, o mapeamento não precisa ocorrer imediatamente (por exemplo, pode ocorrer
depois que o terminal transmite um grupo de caracteres para o sistema), mas deve atingir
os mesmos resultados como se ocorresse imediatamente.

Atual linha: Inalterado.

Atual coluna: Inalterado.

Mark
Sinopse:
[1 endereço] ma[rk] personagem
[1 endereço] k personagem

As implementações devem apoiar personagem valores de uma única letra minúscula do POSIX
locale e aspas crônicas e caracteres de aspas simples; suporte de outros personagens é
definido pela implementação.

Se estiver executando o vi m comando, defina a marca especificada para a linha atual e baseada em 1
caractere numerado referenciado pela coluna atual, se houver; caso contrário, a posição da coluna 1.

Caso contrário, defina a marca especificada para a linha especificada e com base em 1 numerada primeiro
não- não- na linha, se houver; caso contrário, o último não no
linha, se houver; caso contrário, a posição da coluna 1.

A marca deve permanecer associada à linha até que a marca seja reiniciada ou a linha seja
excluído. Se uma linha excluída for restaurada por um subsequente desfazer comando, qualquer marca anterior
associados à linha, que não foram redefinidos, também devem ser restaurados. Qualquer uso de
uma marca não associada a uma linha atual no buffer de edição deve ser um erro.

As marcas ` e ' deve ser definido conforme descrito anteriormente, imediatamente antes do seguinte
eventos ocorrem no editor:

1. O uso de '$' como ex endereço

2. O uso de um número decimal positivo como um ex endereço

3. O uso de um comando de pesquisa como um ex endereço

4. O uso de uma referência de marca como um ex endereço

5. O uso dos seguintes comandos de modo aberto e visual: -], %, (, ), [, ], {,
}

6. O uso dos seguintes comandos de modo aberto e visual: ', G, H, L, M, z se o
a linha atual mudará como resultado do comando

7. O uso dos comandos de modo aberto e visual: /, ?, N, `, n se a linha atual ou
coluna irá mudar como resultado do comando

8. O uso do ex comandos de modo: z, desfazer, global, v

Para as regras 1., 2., 3. e 4., o ` e ' as marcas não devem ser definidas se o ex comando é
analisado conforme especificado pela regra 6.a. dentro Command Line Análise in ex.

Para as regras 5., 6. e 7., o ` e ' as marcas não devem ser definidas se os comandos forem usados ​​como
comandos de movimento no modo aberto e visual.

Para as regras 1., 2., 3., 4., 5., 6., 7. e 8., o ` e ' as marcas não devem ser definidas se o
comando falha.

A ` e ' as marcas devem ser definidas conforme descrito anteriormente, cada vez que o conteúdo da edição
buffer são substituídos (incluindo a edição do buffer inicial), se em aberto ou visual
modo, ou se em ex modo e o buffer de edição não está vazio, antes de qualquer comando ou movimento
(incluindo comandos ou movimentos especificados pelo -c or -t opções ou o +comando
argumento) são executados no buffer de edição. Se estiver no modo aberto ou visual, as marcas devem ser
definido como se estivesse executando o vi m comando; caso contrário, como se estivesse executando o ex marca comando.

Ao mudar de ex modo para abrir ou modo visual, se o ` e ' marcas já não são
colocou o ` e ' as marcas devem ser definidas conforme descrito anteriormente.

Atual linha: Inalterado.

Atual coluna: Inalterado.

Mover
Sinopse:
[2 endereço] m[ove] 1 endereço [bandeiras]

Mova as linhas especificadas após a linha de destino especificada. Um destino da linha zero
especifica que as linhas devem ser colocadas no início do buffer de edição. Deve ser
um erro se a linha de destino estiver dentro do intervalo de linhas a serem movidas.

Atual linha: Defina para a última das linhas movidas.

Atual coluna: Definir como não- .

Próximo
Sinopse:
n[ext][!][+comando][lima ...]

Se nenhum '!' é anexado ao nome do comando, e o buffer de edição foi modificado desde
a última gravação completa, será um erro, a menos que o arquivo seja gravado com sucesso como
especificado pelo gravação automática opção.

Se um ou mais arquivos forem especificados:

1. Defina a lista de argumentos para os nomes de arquivos especificados.

2. Defina a referência da lista de argumentos atual como a primeira entrada na lista de argumentos.

3. Defina o nome do caminho atual como o primeiro nome de arquivo especificado.

De outra forma:

1. Deve ser um erro se não houver mais nomes de arquivos na lista de argumentos após o
nome do arquivo atualmente referenciado.

2. Defina o caminho atual e a referência da lista de argumentos atual para o nome do arquivo após
o nome do arquivo atualmente referenciado na lista de argumentos.

Substitua o conteúdo do buffer de edição pelo conteúdo do arquivo nomeado pelo atual
nome do caminho. Se por algum motivo o conteúdo do arquivo não puder ser acessado, o buffer de edição
deve estar vazio.

Este comando deve ser afetado pelo gravação automática e escrever qualquer coisa editar opções.

A +comando opção deve ser -delimitado; caracteres podem ser escapados por
precedendo-os com um personagem. O +comando deve ser interpretado como um ex
imediatamente após o conteúdo do buffer de edição ter sido substituído e o
a linha e a coluna atuais foram definidas.

Atual linha: Defina conforme descrito para o editar comando.

Atual coluna: Defina conforme descrito para o editar comando.

Sessão
Sinopse:
[2 endereço] nu[âmbar][contar][bandeiras]
[2 endereço] #[contar][bandeiras]

Esses comandos devem ser equivalentes ao ex comando:

[2 endereço] p[rint][contar] #[bandeiras]

See Impressão.

Abra
Sinopse:
[1 endereço] o[caneta] /de cinto de segurança/ [bandeiras]

Este comando não precisa ser suportado em terminais em modo de bloco ou terminais com
capacidades. Se a entrada padrão, a saída padrão ou o erro padrão não forem terminais
dispositivos, os resultados não são especificados.

Entre no modo aberto.

O delimitador final pode ser omitido de de cinto de segurança no final da linha de comando. Se
de cinto de segurança está vazio (por exemplo, "//") ou não especificado, a última expressão regular usada em
o editor deve ser usado como padrão. O padrão pode ser delimitado por
caracteres (mostrados na sinopse), bem como qualquer alfanumérico ou não outro que não seja
, , , ou aspas duplas.

Atual linha: Defina para a linha especificada.

Atual coluna: Definir como não- .

Preservar
Sinopse:
pré[servir]

Salve o buffer de edição em um formato que possa ser recuperado posteriormente usando o −r opção ou por
usando o ex recuperar comando. Depois que o arquivo for preservado, uma mensagem de correio será
enviado ao usuário. Esta mensagem deve ser lida invocando o e-mail x Utilitário. o
mensagem deve conter o nome do arquivo, o tempo de preservação e um ex comando
que pode ser usado para recuperar o arquivo. Informações adicionais podem ser incluídas no correio
mensagem.

Atual linha: Inalterado.

Atual coluna: Inalterado.

Impressão
Sinopse:
[2 endereço] p[rint][contar][bandeiras]

Escreva as linhas endereçadas. O comportamento não é especificado se o número de colunas no
display é menor do que o número de colunas necessárias para escrever qualquer caractere único no
linhas sendo escritas.

Caracteres não imprimíveis, exceto para o , deve ser escrito conforme definido pela implementação
sequências de vários caracteres.

Se o # sinalizador é especificado ou o número opção de edição é definida, cada linha deve ser precedida
por seu número de linha no seguinte formato:

"% 6d ", <linha número>

Se o l sinalizador é especificado ou o Lista opção de edição está definida:

1. Os personagens listados no volume de Definições de Base de POSIX.1‐2008, mesa 5-1,
fuga Seqüências e Associado Opções deve ser escrito como o escape correspondente
seqüência.

2. Caracteres não imprimíveis que não estão no volume de Definições de Base de POSIX.1‐2008, mesa
5-1, fuga Seqüências e Associado Opções deve ser escrito como um octal de três dígitos
número (com um precedente ) para cada byte no caractere (mais significativo
byte primeiro).

3. O final de cada linha deve ser marcado com um '$', e literal '$' personagens dentro do
linha deve ser escrita com um precedente .

Longas linhas devem ser dobradas; o comprimento em que ocorre a dobragem não é especificado, mas deve
ser apropriado para o terminal de saída, considerando o número de colunas do terminal.

Se uma linha for dobrada, e o l sinalizador não é especificado e o Lista opção de edição não está definida,
não é especificado se um caractere de várias colunas na posição de dobra é separado;
não deve ser descartado.

Atual linha: Defina para a última linha escrita.

Atual coluna: Inalterado se a linha atual permanecer inalterada; caso contrário, defina como não .

colocar
Sinopse:
[1 endereço] pu[t][amortecer]

Anexa texto do buffer especificado (por padrão, o buffer sem nome) ao especificado
linha; a linha zero especifica que o texto deve ser colocado no início da edição
amortecedor. Cada parte de uma linha no buffer deve se tornar uma nova linha no buffer de edição,
independentemente do modo do buffer.

Atual linha: Defina para a última linha inserida no buffer de edição.

Atual coluna: Definir como não- .

desistir
Sinopse:
q[observar][!]

Se nenhum '!' é anexado ao nome do comando:

1. Se o buffer de edição foi modificado desde a última gravação completa, deve ser um
erro.

2. Se houver nomes de arquivos na lista de argumentos após o nome do arquivo atualmente referenciado,
e o último comando não foi um desistir, wq, xitou ZZ (Vejo saída) comando, será um
erro.

Caso contrário, encerre a sessão de edição.

Leia
Sinopse:
[1 endereço] r[ead][!][lima]

If '!' não é o primeiro não para seguir o nome do comando, uma cópia do especificado
o arquivo deve ser anexado ao buffer de edição após a linha especificada; linha zero especifica
que a cópia deve ser colocada no início do buffer de edição. O número de linhas e
bytes lidos devem ser gravados. Se não lima é nomeado, o nome do caminho atual deve ser o
padrão. Se não houver um nome de caminho atual, então lima deve se tornar o nome do caminho atual. Se
não há nome de caminho atual ou lima operando, será um erro. Especificando um lima que
não é do tipo regular deve ter resultados não especificados.

Caso contrário, se lima é precedido por '!', o resto da linha após o '!' deve ter '%',
'#' e '!' caracteres expandidos conforme descrito em Command Line Análise in ex.

A ex utilitário deve então passar dois argumentos para o programa nomeado pela edição do shell
opção; o primeiro será -c e o segundo deve ser os argumentos expandidos para o ler
comando como um único argumento. A entrada padrão do programa deve ser definida para o
entrada padrão do ex programa quando foi invocado. O erro padrão e padrão
a saída do programa deve ser anexada ao buffer de edição após a linha especificada.

Cada linha no arquivo copiado ou saída do programa (conforme delimitado por personagens ou
o final do arquivo ou saída, se não for imediatamente precedido por um ), deverá ser
uma linha separada no buffer de edição. Quaisquer ocorrências de e
pares na saída devem ser tratados como únicos personagens.

O significado especial do '!' seguindo o ler comando pode ser sobrescrito escapando
com um personagem.

Atual linha: Se nenhuma linha for adicionada ao buffer de edição, permanece inalterada. Caso contrário, se estiver aberto
ou modo visual, definido para a primeira linha inserida no buffer de edição. Caso contrário, defina como
última linha inserida no buffer de edição.

Atual coluna: Definir como não- .

Recuperar
Sinopse:
gravando[Acima de][!] lima

Se nenhum '!' é anexado ao nome do comando, e o buffer de edição foi modificado desde
a última gravação completa, será um erro.

Se nenhum lima operando for especificado, então o nome do caminho atual deve ser usado. Se não há
nome do caminho atual ou lima operando, será um erro.

Se nenhuma informação de recuperação foi salva anteriormente sobre lima, recuperar o comando deve
comportar-se de forma idêntica ao editar comando, e uma mensagem informativa para esse efeito deve
ser escrito.

Caso contrário, defina o nome do caminho atual para limae substitua o conteúdo atual da edição
buffer com o conteúdo recuperado de lima. Se houver várias instâncias do arquivo
a ser recuperado, aquele salvo mais recentemente será recuperado, e um informativo
mensagem de que existem versões anteriores do arquivo que podem ser recuperadas deve ser
escrito. O editor deve se comportar como se o conteúdo do buffer de edição já tivesse sido
modificado.

Atual lima: Defina conforme descrito para o editar comando.

Atual coluna: Defina conforme descrito para o editar comando.

Rebobinar
Sinopse:
rew [ind][!]

Se nenhum '!' é anexado ao nome do comando, e o buffer de edição foi modificado desde
a última gravação completa, será um erro, a menos que o arquivo seja gravado com sucesso como
especificado pelo gravação automática opção.

Se a lista de argumentos estiver vazia, será um erro.

A referência da lista de argumentos atual e o nome do caminho atual devem ser definidos para o primeiro
nome do arquivo na lista de argumentos.

Substitua o conteúdo do buffer de edição pelo conteúdo do arquivo nomeado pelo atual
nome do caminho. Se por algum motivo o conteúdo do arquivo não puder ser acessado, o buffer de edição
deve estar vazio.

Este comando deve ser afetado pelo gravação automática e escrever qualquer coisa editar opções.

Atual linha: Defina conforme descrito para o editar comando.

Atual coluna: Defina conforme descrito para o editar comando.

Conjunto
Sinopse:
se [t][opção[=[valor]] ...][nãoopção ...][opção? ...][todos os]

Quando nenhum argumento for especificado, escreva o valor do prazo opção de edição e essas opções
cujos valores foram alterados das configurações padrão; quando a discussão todos os is
especificado, grava todos os valores da opção.

Dando um nome de opção seguido pelo caractere '?' deve causar o valor atual daquele
opção de ser escrito. O '?' pode ser separado do nome da opção por zero ou mais
personagens. O '?' será necessário apenas para opções com valor booleano. boleano
as opções podem receber valores pelo formulário conjunto opção para ligá-los ou conjunto nãoopção virar
eles fora; string e opções numéricas podem ser atribuídas pelo formulário conjunto opção=valor. Qualquer
caracteres em strings podem ser incluídos como estão precedendo cada com um
escapando . Mais de uma opção pode ser definida ou listada por um único comando set
especificando vários argumentos, cada um separado do próximo por um ou mais
caracteres.

See Editar Opções in ex para obter detalhes sobre opções específicas.

Atual linha: Inalterado.

Atual coluna: Inalterado.

concha
Sinopse:
sh [vara]

Invoque o programa nomeado no concha opção de edição com o único argumento −eu (interativo
modo). A edição deve ser retomada quando o programa termina.

Atual linha: Inalterado.

Atual coluna: Inalterado.

fonte
Sinopse:
tão[urcan para] lima

Leia e execute ex comandos de lima. As linhas do arquivo que são linhas em branco devem ser
ignorado.

Atual linha: Conforme especificado para o indivíduo ex comandos.

Atual coluna: Conforme especificado para o indivíduo ex comandos.

Substituto
Sinopse:
[2 endereço] s[ubstituto][/de cinto de segurança/substituir/[opções][contar][bandeiras]]
[2 endereço] &[opções][contar][bandeiras]]
[2 endereço] ~[opções][contar][bandeiras]]

Substitua a primeira instância do padrão de cinto de segurança pela corda substituir em cada especificado
linha. (Ver Regular Expressões in ex e Substituição Cordas in ex.) Qualquer não alfabético,
não- delimitador diferente de , '|', , ou aspas duplas podem ser usadas
em vez de '/'. caracteres podem ser usados ​​para delimitar delimitadores,
caracteres e outros caracteres especiais.

O delimitador final pode ser omitido de de cinto de segurança ou a partir de substituir no final do comando
linha. Se ambos de cinto de segurança e substituir não são especificados ou estão vazios (por exemplo, "//"), O
último s comando deve ser repetido. Se apenas de cinto de segurança não é especificado ou está vazio, o último
A expressão regular usada no editor deve ser usada como o padrão. Se apenas substituir não é
especificado ou está vazio, o padrão deve ser substituído por nada. Se todo o
padrão de substituição é '%', o último padrão de substituição para um s comando deve ser usado.

Entrando em um dentro substituir (o que requer um escape dentro ex modo
e uma fuga ‐ V em aberto ou vi modo) deve dividir a linha nesse ponto,
criando uma nova linha no buffer de edição. O devem ser descartados.

If opções inclui a carta 'g' (global), todas as instâncias não sobrepostas do padrão
na linha deve ser substituído.

If opções inclui a carta 'c' (confirme), então, antes de cada substituição, a linha deve
ser escrito; a linha escrita deve refletir todas as substituições anteriores. Na seguinte
linha, os caracteres devem ser escritos abaixo dos caracteres da linha que são
antes de o de cinto de segurança a ser substituído, e '^' caracteres escritos abaixo dos caracteres
incluído em de cinto de segurança ser substituído. O ex utilitário deve então esperar por uma resposta de
o usuário. Uma resposta afirmativa fará com que a substituição seja feita, enquanto qualquer outro
entrada não deve fazer a substituição. Uma resposta afirmativa deve consistir em uma linha
com a resposta afirmativa (conforme definido pelo local atual) no início do
linha. Esta linha estará sujeita a edição da mesma forma que o ex linha de comando.

Se interrompido (consulte a seção EVENTOS ASSÍNCRONOS), quaisquer modificações confirmadas pelo
o usuário deve ser preservado no buffer de edição após a interrupção.

Se a direção de pesquisa lembrada não for definida, o s comando deve configurá-lo para encaminhar.

Na segunda sinopse, o & comando deve repetir a substituição anterior, como se o &
comando foram substituídos por:

s/de cinto de segurança/substituir/

onde de cinto de segurança e substituir são conforme especificado no anterior s, &ou ~ comando.

Na terceira sinopse, o ~ comando deve repetir a substituição anterior, como se o '~'
foram substituídos por:

s/de cinto de segurança/substituir/

onde de cinto de segurança deve ser a última expressão regular especificada para o editor, e substituir deve
ser da substituição anterior (incluindo & e ~) comando.

Esses comandos devem ser afetados pelo LC_MESSAGES variável de ambiente.

Atual linha: Defina para a última linha em que ocorreu uma substituição ou, inalterado se não
substituição ocorreu.

Atual coluna: Definir como não- .

Suspender
Sinopse:
su [gastar][!]
st[op][!]

Permitir que o controle retorne ao processo de invocação; ex deve suspender-se como se tivesse
recebeu o sinal SIGTSTP. A suspensão deve ocorrer apenas se o controle de trabalho estiver habilitado em
o shell de invocação (veja a descrição de conjunto −m).

Esses comandos devem ser afetados pelo gravação automática e escrever qualquer coisa editar opções.

A corrente suspender personagem (ver chiqueiro) deve ser equivalente ao suspender comando.

etiqueta
Sinopse:
ta [g][!] string de tag

Os resultados não são especificados se o formato de um arquivo de tags não for o especificado pelo ctags
utilidade (ver ctags) Descrição.

A etiqueta comando deve procurar por string de tag nos arquivos de tag referidos pelo etiqueta editar
opção, na ordem em que são especificadas, até uma referência a string de tag seja encontrado. arquivos
deve ser revistado do início ao fim. Se nenhuma referência for encontrada, será um erro
e uma mensagem de erro para esse efeito deve ser escrita. Se a referência não for encontrada, ou se
ocorre um erro durante o processamento de um arquivo referido no etiqueta opção de edição, deve ser um
erro, e uma mensagem de erro deve ser escrita na primeira ocorrência de tal erro.

Caso contrário, se o arquivo de tags contiver um padrão, o padrão deve ser tratado como um padrão
expressão usada no editor; por exemplo, para os fins do s comando.

Se o string de tag está em um arquivo com um nome diferente do caminho atual, defina o
nome do caminho atual para o nome desse arquivo, e substitua o conteúdo do buffer de edição
com o conteúdo desse arquivo. Neste caso, se não '!' é anexado ao nome do comando,
e o buffer de edição foi modificado desde a última gravação completa, deve ser um erro,
a menos que o arquivo seja gravado com sucesso conforme especificado pelo gravação automática opção.

Este comando deve ser afetado pelo gravação automática, etiqueta, comprimento de tag e escrever qualquer coisa editar
opções.

Atual linha: Se o arquivo de tags contiver um número de linha, defina para esse número de linha. Se o
o número da linha é maior do que a última linha no buffer de edição, uma mensagem de erro deve ser
escrito e a linha atual deve ser definida conforme especificado para o editar comando.

Se o arquivo de tags contiver um padrão, defina para a primeira ocorrência do padrão no
Arquivo. Se nenhum padrão correspondente for encontrado, uma mensagem de erro deve ser escrita e o atual
linha deve ser definida conforme especificado para o editar comando.

Atual coluna: Se o arquivo de tags contiver uma referência de número de linha e esse número de linha
não era maior do que a última linha no buffer de edição, ou se o arquivo de tags continha um
padrão e esse padrão foi encontrado, definido como não . Caso contrário, defina conforme especificado para
que o editar comando.

Abreviado
Sinopse:
una [brev] lhs

If lhs não é uma entrada na lista atual de abreviações (veja Abreviar), deve ser
um erro. Caso contrário, exclua lhs da lista de abreviações.

Atual linha: Inalterado.

Atual coluna: Inalterado.

desfazer
Sinopse:
u[ndo]

Reverte as alterações feitas pelo último comando que modificou o conteúdo da edição
buffer, incluindo desfazer. Para este efeito, o global, v, aberto e visual comandos, e
comandos resultantes de execuções de buffer e expansões de caracteres mapeados, são considerados
comandos únicos.

Se nenhuma ação que pode ser desfeita precedeu o desfazer comando, será um erro.

Se o desfazer o comando restaura as linhas que foram marcadas, a marca também deve ser restaurada
a menos que tenha sido redefinido após a exclusão das linhas.

Atual linha:

1. Se linhas forem adicionadas ou alteradas no arquivo, defina como a primeira linha adicionada ou alterada.

2. Defina a linha antes da primeira linha excluída, se houver.

3. Defina como 1 se o buffer de edição não estiver vazio.

4. Defina como zero.

Atual coluna: Definir como não- .

Desmapear
Sinopse:
unm [ap][!] lhs

If '!' é anexado ao nome do comando, e se lhs não é uma entrada na lista de texto
definições de mapa de modo de entrada, deve ser um erro. Caso contrário, exclua lhs da lista de
definições de mapa do modo de entrada de texto.

Se nenhum '!' é anexado ao nome do comando, e se lhs não é uma entrada na lista de
definições de mapa de modo de comando, deve ser um erro. Caso contrário, exclua lhs da lista de
definições de mapa do modo de comando.

Atual linha: Inalterado.

Atual coluna: Inalterado.

Versão
Sinopse:
ve [rsão]

Escreva uma mensagem contendo informações de versão para o editor. O formato da mensagem
não é especificado.

Atual linha: Inalterado.

Atual coluna: Inalterado.

visual
Sinopse:
[1 endereço] vi[doce][tipo][contar][bandeiras]

If ex está atualmente em modo aberto ou visual, a Sinopse e comportamento do comando visual
deve ser o mesmo que o editar comando, conforme especificado por Editar.

Caso contrário, este comando não precisa ser suportado em terminais de modo de bloco ou terminais com
capacidades insuficientes. Se a entrada padrão, a saída padrão ou o erro padrão não forem
dispositivos terminais, os resultados não são especificados.

If contar é especificado, o valor do janela opção de edição deve ser definida para contar (Conforme
descrito em janela) Se o '^' caractere de tipo também foi especificado, o janela editar
opção deve ser definida antes de ser usada pelo caractere de tipo.

Entre no modo visual. Se tipo não for especificado, será como se um tipo of '+' foi
Especificadas. o tipo deve causar os seguintes efeitos:

+ Coloque o início da linha especificada no topo da tela.

- Coloque o final da linha especificada na parte inferior da tela.

. Coloque o início da linha especificada no meio da tela.

^ Se a linha especificada for menor ou igual ao valor de janela opção de edição,
defina a linha para 1; caso contrário, diminua a linha pelo valor de janela editar
opção menos 1. Coloque o início desta linha o mais próximo possível da parte inferior do
linhas exibidas quanto possível, enquanto ainda exibe o valor do janela editar
opção número de linhas.

Atual linha: Defina para a linha especificada.

Atual coluna: Definir como não- .

Escreva
Sinopse:
[2 endereço] w[rito][!][>>][lima]
[2 endereço] w[rito][!][lima]
[2 endereço] wq[!][>>][lima]

Se nenhuma linha for especificada, as linhas devem ser padronizadas para todo o arquivo.

O comando wq deve ser equivalente a um escrever comando seguido por um desistir comando; qq!
deve ser equivalente a escrever! seguido desistir. Em ambos os casos, se o escrever comando
falha, o desistir não deve ser tentado.

Se o nome do comando não for seguido por um ou mais personagens, ou lima não é
precedido por um '!' personagem, o escrever deve ser para um arquivo.

1. Se o >> argumento é especificado, e o arquivo já existe, as linhas devem ser
anexado ao arquivo em vez de substituir seu conteúdo. Se o >> argumento é
especificado, e o arquivo ainda não existe, não é especificado se a gravação
deve proceder como se o >> argumento não foi especificado ou se a gravação deve falhar.

2. Se o somente leitura opção de edição está definida (veja somente leitura), O escrever deve falhar.

3. E se lima é especificado, e não é o nome do caminho atual, e o arquivo existe, o escrever
deve falhar.

4. E se lima não for especificado, o nome do caminho atual deve ser usado. Se não houver corrente
nome do caminho, o escrever o comando falhará.

5. Se o nome do caminho atual é usado, e o nome do caminho atual foi alterado pelo lima
or ler comandos, e o arquivo existe, o escrever deve falhar. Se o escrever is
bem sucedido, subsequente escrevers não deve falhar por este motivo (a menos que o atual
o nome do caminho é alterado novamente).

6. Se todo o buffer de edição não estiver sendo gravado e o arquivo a ser gravado existir, o
escrever deve falhar.

Para as regras 1., 2., 3. e 5., o escrever pode ser forçado anexando o caractere '!' para
o nome do comando.

Para as regras 2., 3. e 5., o escrever pode ser forçado definindo o escrever qualquer coisa opção de edição.

Testes adicionais definidos pela implementação podem causar o escrever falhar.

Se o buffer de edição estiver vazio, um arquivo sem nenhum conteúdo deve ser gravado.

Uma mensagem informativa deve ser escrita observando o número de linhas e bytes escritos.

Caso contrário, se o comando for seguido por um ou mais caracteres, e o arquivo é
precedido por '!', o resto da linha após o '!' deve ter '%', '#' e '!'
caracteres expandidos conforme descrito em Command Line Análise in ex.

A ex utilitário deve então passar dois argumentos para o programa nomeado pelo concha editar
opção; o primeiro será -c e o segundo deve ser os argumentos expandidos para o escrever
comando como um único argumento. As linhas especificadas devem ser escritas na entrada padrão
do comando. O erro padrão e a saída padrão do programa, se houver, devem ser
escrito conforme descrito para o impressão comando. Se o último caractere nessa saída não for um
, uma deve ser escrito no final da saída.

O significado especial do '!' seguindo o escrever comando pode ser sobrescrito escapando
com um personagem.

Atual linha: Inalterado.

Atual coluna: Inalterado.

Escreva e saída
Sinopse:
[2 endereço] x[it][!][lima]

Se o buffer de edição não foi modificado desde o último escrever, xit será
equivalente ao desistir comando, ou se um '!' é anexado ao nome do comando, para Sair!.

Caso contrário, xit deve ser equivalente ao wq comando, ou se um '!' é anexado ao
nome do comando, para qq!.

Atual linha: Inalterado.

Atual coluna: Inalterado.

puxão
Sinopse:
[2 endereço] ya[nk][amortecer][contar]

Copie as linhas especificadas para o buffer especificado (por padrão, o buffer sem nome), que
deve se tornar um buffer de modo de linha.

Atual linha: Inalterado.

Atual coluna: Inalterado.

Adjust Janela
Sinopse:
[1 endereço] z[!][tipo ...][contar][bandeiras]

Se nenhuma linha for especificada, a linha atual deve ser a padrão; E se tipo é omitido como
bem, o valor da linha atual deve primeiro ser incrementado em 1. Se incrementar o atual
linha faria com que fosse maior do que a última linha no buffer de edição, deve ser um
erro.

Se houver personagens entre o tipo argumento e o anterior z nome do comando
ou opcional '!' personagem, será um erro.

If contar é especificado, o valor do janela opção de edição deve ser definida para contar (Conforme
descrito em janela). Se contar for omitido, o padrão será 2 vezes o valor do
scroll opção de edição, ou se ! foi especificado, o número de linhas no display menos 1.

If tipo é omitido, então contar linhas que começam com a linha especificada devem ser escritas.
Caso contrário, contar linhas começando com a linha especificada pelo tipo argumento deve ser
escrito.

A tipo argumento deve mudar as linhas a serem escritas. Os valores possíveis de tipo são tão
segue:

- A linha especificada deve ser diminuída pelo seguinte valor:

(((número of `` - '' personagens) x contar) -1)

Se o cálculo resultar em um número menor que 1, será um erro. Escrever
linhas do buffer de edição, começando com o novo valor da linha, até contar linhas ou
a última linha no buffer de edição foi gravada.

+ A linha especificada deve ser incrementada pelo seguinte valor:

(((número of `` + '' personagens) -1) x contar) +1

Se o cálculo resultar em um número maior do que a última linha da edição
buffer, será um erro. Escreva linhas do buffer de edição, começando no novo
valor da linha, até contar linhas ou a última linha no buffer de edição foi
escrito.

= ,. Se mais de um '.' or '=' for especificado, será um erro. A seguir
passos devem ser tomados:

1. E se contar é zero, nada deve ser escrito.

2. Escreva o máximo de N linhas antes da linha atual no buffer de edição como
existir. Se contar or '!' foi especificado, N deverá ser:

(contar -1) / 2

Caso contrário, N deverá ser:

(contar -3) /2

If N é um número menor que 3, nenhuma linha deve ser escrita.

3. E se '=' foi especificado como o caractere do tipo, escreva uma linha consistindo no
menor do que o número de colunas na exibição dividido por dois, ou 40 '-'
caracteres.

4. Escreva a linha atual.

5. Repita a etapa 3.

6. Escreva o máximo de N linhas após a linha atual no buffer de edição como existem.
N deve ser definido como na etapa 2. Se N é um número menor que 3, nenhuma linha deve ser
escrito. Se contar for menor que 3, nenhuma linha deve ser escrita.

^ A linha especificada deve ser diminuída pelo seguinte valor:

(((número of `` ^ '' personagens) + 1) x contar) -1

Se o cálculo resultar em um número menor que 1, será um erro. Escrever
linhas do buffer de edição, começando com o novo valor da linha, até contar linhas ou
a última linha no buffer de edição foi gravada.

Atual linha: Defina para a última linha escrita, a menos que o tipo seja =, nesse caso, defina como
a linha especificada.

Atual coluna: Definir como não- .

fuga
Sinopse:
! comando
[addr]! comando

O conteúdo da linha após o '!' deve ter '%', '#' e '!' personagens expandidos
como descrito em Command Line Análise in ex. Se a expansão causar o texto da linha
a mudar, deve ser reexibido, precedido de um único '!' personagem.

A ex utilitário deve executar o programa nomeado pelo concha opção de edição. Deve passar dois
argumentos para o programa; o primeiro será -c, e o segundo será o expandido
argumentos para o ! comando como um único argumento.

Se nenhuma linha for especificada, a entrada padrão, a saída padrão e o erro padrão do
programa deve ser definido para a entrada padrão, saída padrão e erro padrão do ex
programa quando foi invocado. Além disso, uma mensagem de aviso deve ser escrita se a edição
buffer foi modificado desde a última gravação completa, e o avisar opção de edição está definida.

Se as linhas forem especificadas, elas devem ser passadas para o programa como entrada padrão, e o
a saída padrão e o erro padrão do programa devem substituir essas linhas na edição
amortecedor. Cada linha na saída do programa (conforme delimitado por personagens ou o fim
da saída, se não for imediatamente precedido por um ), deve ser uma linha separada
no buffer de edição. Quaisquer ocorrências de e pares na saída
deve ser tratado como solteiro personagens. As linhas especificadas devem ser copiadas para
o buffer sem nome antes de serem substituídos, e o buffer sem nome deve se tornar uma linha
buffer de modo.

Se em ex modo, um único '!' caractere deve ser escrito quando o programa for concluído.

Este comando deve ser afetado pelo concha e avisar editar opções. Se nenhuma linha for
especificado, este comando deve ser afetado pelo gravação automática e escrever qualquer coisa editar opções. Se
linhas são especificadas, este comando deve ser afetado pelo impressão automática opção de edição.

Atual linha:

1. Se nenhuma linha for especificada, permanece inalterado.

2. Caso contrário, defina para a última linha lida, se alguma linha for lida.

3. Caso contrário, defina para a linha antes da primeira linha das linhas especificadas, se essa linha
existe.

4. Caso contrário, defina para a primeira linha do buffer de edição se o buffer de edição não estiver vazio.

5. Caso contrário, defina como zero.

Atual coluna: Se nenhuma linha for especificada, permanece inalterado. Caso contrário, defina como não .

Shift Esquerdo
Sinopse:
[2 endereço] <[<...][contar][bandeiras]

Desloca as linhas especificadas para o início da linha; o número de posições da coluna a ser
deslocado deve ser o número de caracteres de comando vezes o valor do largura de deslocamento editar
opção. Apenas liderando caracteres devem ser excluídos ou alterados para outros
personagens em mudança; outros personagens não serão afetados.

As linhas a serem deslocadas devem ser copiadas para o buffer sem nome, que deve se tornar uma linha
buffer de modo.

Este comando deve ser afetado pelo impressão automática opção de edição.

Atual linha: Defina para a última linha nas linhas especificadas.

Atual coluna: Definir como não- .

Shift Certo
Sinopse:
[2 endereço] >[> ...][contar][bandeiras]

Afasta as linhas especificadas do início da linha; o número de posições de coluna
a ser deslocado deve ser o número de caracteres de comando vezes o valor do largura de deslocamento
opção de edição. A mudança deve ser realizada adicionando caracteres como um prefixo para
a linha ou mudança de liderança personagens em outros personagens. Linhas vazias
não deve ser alterado.

As linhas a serem deslocadas devem ser copiadas para o buffer sem nome, que deve se tornar uma linha
buffer de modo.

Este comando deve ser afetado pelo impressão automática opção de edição.

Atual linha: Defina para a última linha nas linhas especificadas.

Atual coluna: Definir como não- .

‐D
Sinopse:
-D

Escreva o próximo n linhas, onde n é o mínimo dos valores do scroll opção de edição e
o número de linhas após a linha atual no buffer de edição. Se a linha atual é o
última linha do buffer de edição deve ser um erro.

Atual linha: Defina para a última linha escrita.

Atual coluna: Definir como não- .

Escreva Line Sessão
Sinopse:
[1 endereço] = [bandeiras]

If linha não for especificado, o padrão será a última linha no buffer de edição. Escreva o
número da linha da linha especificada.

Atual linha: Inalterado.

Atual coluna: Inalterado.

Execute
Sinopse:
[2 endereço] @ amortecer
[2 endereço] * amortecer

Se nenhum buffer for especificado ou for especificado como '@' or '*', o último buffer executado será
usava. Se nenhum buffer anterior foi executado, será um erro.

Para cada linha especificada pelos endereços, defina a linha atual ('.') para o especificado
linha, e executar o conteúdo do nome amortecer (como eles eram na época, o @ comando
foi executado) como ex comandos. Para cada linha de um buffer de modo de linha, e todos, exceto o último
linha de um buffer de modo de caractere, o ex o analisador de comandos deve se comportar como se a linha fosse
terminado por um .

Se ocorrer um erro durante este processo, ou uma linha especificada pelos endereços não
existe quando a linha atual seria configurada para ele, ou mais de uma linha foi especificada
pelos endereços, e o conteúdo do buffer de edição são substituídos (por exemplo, pelo ex
edit: comando) uma mensagem de erro deve ser escrita, e não mais comandos resultantes do
a execução deste comando deve ser processada.

Atual linha: Conforme especificado para o indivíduo ex comandos.

Atual coluna: Conforme especificado para o indivíduo ex comandos.

Regular Expressões in ex
A ex utilitário deve suportar expressões regulares que são um superconjunto do regular básico
expressões descritas no volume de Definições de Base de POSIX.1‐2008, Seção 9.3, Basico
Regular Expressões. Uma expressão regular nula ("//") deve ser equivalente ao último
expressão regular encontrada.

Expressões regulares podem ser usadas em endereços para especificar linhas e, em alguns comandos (para
exemplo, o substituto comando), para especificar as partes de uma linha a serem substituídas.

As seguintes construções podem ser usadas para aprimorar as expressões regulares básicas:

\ <Corresponde ao início de um palavra. (Veja a definição de palavra no início
Command Descrição in ex.)

\> Combine o final de um palavra.

~ Combine a peça de reposição do último substituto comando. O ('~')
caractere pode ser escapado em uma expressão regular para se tornar um caractere normal com
nenhum significado especial. O devem ser descartados.

Quando a opção do editor mágica não está definido, os únicos caracteres com significados especiais devem
be '^' no início de um padrão, '$' no final de um padrão, e . O
caracteres '.', '*', '[' e '~' devem ser tratados como caracteres comuns, a menos que precedido
por um ; quando precedido por um eles devem recuperar seu significado especial,
ou no caso de , ser tratado como um único . personagens
usado para escapar de outros caracteres devem ser descartados.

Substituição Cordas in ex
O personagem '&' ('\ &' se a opção do editor mágica não está definido) na string de substituição
deve significar o texto correspondente ao padrão a ser substituído. O personagem '~' ('\ ~' if
mágica não está definido) deve ser substituída pela peça de reposição do anterior substituto
comando. A sequência '\ n', Onde n é um número inteiro, deve ser substituído pelo texto correspondente
pela expressão de referência anterior correspondente. Se a referência anterior correspondente
expressão não corresponde, então os caracteres '\ n' deve ser substituído pela string vazia.

As cordas '\eu', '\você', '\EU' e '\VOCÊ' pode ser usado para modificar o caso de elementos no
string de substituição (usando o '\ &' or "\"dígito) notação. A corda '\eu' ('\você') deve
fazer com que o caractere a seguir seja convertido em minúsculas (maiúsculas). A corda '\EU'
('\VOCÊ') fará com que todos os caracteres subsequentes a ele sejam convertidos em minúsculas
(maiúsculas) à medida que são inseridos pela substituição até a string '\ e' or '\ E', Ou o
final da string de substituição, é encontrado.

Caso contrário, qualquer caractere seguindo um deve ser tratado como aquele literal
personagem, e o escape devem ser descartados.

Um exemplo de conversão de caso com o s comando é o seguinte:

:p
A gato sáb. on que o esteira.
:s / \ <. at \> / \ u & / gp
A Gato Sáb on que o Esteira.
:s / S \ (. * \) M / S \ U \ 1 \ eM / p
A Gato Sábado ON A Esteira.

Editar Opções in ex
A ex O utilitário possui várias opções que modificam seu comportamento. Essas opções têm
configurações padrão, que podem ser alteradas usando o conjunto comando.

As opções são booleanas, a menos que seja especificado de outra forma.

autoindentação, ai
[Predefinição não definido]

If recuo automático é definido, cada linha no modo de entrada deve ser recuada (usando o primeiro
caracteres possíveis, conforme determinado pela opção do editor Parada de tabulação, e então usando
caracteres) para alinhar com outra linha, da seguinte maneira:

1. Se estiver no modo aberto ou visual e a entrada de texto for parte de um comando orientado por linha (consulte
a DESCRIÇÃO ESTENDIDA em vi), alinhe com a primeira coluna.

2. Caso contrário, se estiver no modo aberto ou visual, o recuo para cada linha deve ser definido como
segue:

uma. Se uma linha foi inserida anteriormente como parte deste comando, ela deve ser definida para o
recuo da última linha inserida por padrão, ou conforme especificado para
a Personagem ‐D em Entrada Moda comandos in vi.

b. Caso contrário, deve ser definido para o recuo da linha atual anterior, se
qualquer; caso contrário, para a primeira coluna.

3. Para o ex a, i e c comandos, o recuo para cada linha deve ser definido da seguinte forma:

uma. Se uma linha foi inserida anteriormente como parte deste comando, ela deve ser definida para o
recuo da última linha inserida por padrão, ou conforme especificado para
que o eof personagem em Rolagem.

b. Caso contrário, se o comando for o ex a comando, deve ser definido para a linha
anexado depois, se houver; caso contrário, para a primeira coluna.

c. Caso contrário, se o comando for o ex i comando, deve ser definido para a linha
inserido antes, se houver; caso contrário, para a primeira coluna.

d. Caso contrário, se o comando for o ex c comando, deve ser definido para o recuo
da linha substituída.

impressão automática, ap
[Predefinição conjunto]

If impressão automática for definido, a linha atual deve ser escrita após cada ex comando que modifica
o conteúdo do buffer de edição atual, e após cada etiqueta comando para o qual a tag
o padrão de pesquisa foi encontrado ou o número da linha de tag era válido, a menos que:

1. O comando foi executado no modo aberto ou visual.

2. O comando foi executado como parte de um global or v comando ou @ execução do buffer.

3. O comando era a forma do ler comando que lê um arquivo no buffer de edição.

4. O comando era o anexar, alterarou inserir comando.

5. O comando não foi encerrado por um .

6. A linha atual deve ser escrita por um sinalizador especificado para o comando; por exemplo,
excluir # deve escrever a linha atual conforme especificado para o modificador de sinalização para o excluir
comando, e não conforme especificado pelo impressão automática opção de edição.

escrita automática, aw
[Predefinição não definido]

If gravação automática está definido e o buffer de edição foi modificado desde a última vez que foi completamente
escrito em qualquer arquivo, o conteúdo do buffer de edição deve ser escrito como se o ex escrever
comando foi especificado sem argumentos, antes de cada comando afetado pelo
gravação automática a opção de edição é executada. Anexando o personagem '!' para o nome de comando de qualquer
da ex comandos exceto '!' deve impedir a gravação. Se a gravação falhar, será um
erro e o comando não deve ser executado.

embelezar, bf
[Predefinição não definido]

If embelezar está definido, todos os caracteres não imprimíveis, exceto , , e
feed> caracteres, devem ser descartados do texto lido nos arquivos.

diretório, dir
[Predefinição definido pela implementação]

O valor desta opção especifica o diretório no qual o buffer do editor deve ser
colocada. Se este diretório não puder ser escrito pelo usuário, o editor deve ser encerrado.

edcompatível, ed
[Predefinição não definido]

Provoca a presença de g e c sufixos em comandos substitutos a serem lembrados, e
alternado pela repetição dos sufixos.

sinos de erro, eb
[Predefinição não definido]

Se o editor estiver em ex modo, e o terminal não suporta um modo de destaque (como
vídeo inverso), e sinos de erro for definido, as mensagens de erro devem ser precedidas por alertar o
terminal.

exrc
[Predefinição não definido]

If exrc está definido, ex deve acessar qualquer .exrc arquivo no diretório atual, conforme descrito em
Inicialização in ex e vi. Se exrc não está definido, ex deve ignorar qualquer .exrc arquivo no
diretório atual durante a inicialização, a menos que o diretório atual seja aquele nomeado pelo
EMPRESA variável de ambiente.

ignorar caso, ic
[Predefinição não definido]

If ignorar caso for definido, os caracteres que têm representações em maiúsculas e minúsculas devem
ter essas representações consideradas como equivalentes para fins de expressão regular
comparação.

A ignorar caso a opção de edição afetará todas as expressões regulares lembradas; por exemplo,
perturbando o ignorar caso opção de edição deve causar um subseqüente vi n comando para procurar
a última expressão regular básica com distinção entre maiúsculas e minúsculas.

Lista
[Predefinição não definido]

If Lista estiver definido, edite linhas de buffer escritas enquanto em ex modo de comando deve ser escrito como
especificado para o impressão comando com o l bandeira especificada. No modo aberto ou visual, cada
linha do buffer de edição deve ser exibida conforme especificado para o ex impressão comando com o l bandeira
Especificadas. No modo de entrada de texto aberto ou visual, quando o cursor não pousa em nenhum
personagem na linha, deve repousar sobre o '$' marcando o fim da linha.

mágica
[Predefinição conjunto]

If mágica está definido, modifica a interpretação de caracteres em expressões regulares e
strings de substituição de substituição (ver Regular Expressões in ex e Substituição Cordas in
ex).

mensagem
[Predefinição conjunto]

If mensagem está definido, a permissão para que outros usem o escrever or conversa comandos para escrever para
o terminal deve ser ligado enquanto estiver no modo aberto ou visual. O comando em nível de shell mensagem
n deve ter precedência sobre qualquer configuração do ex mensagem opção; isto é, se mensagem y foi
emitido antes de o editor iniciar (ou em um escape de shell), como:

:! mesg y

que o mensagem opção em ex deve suprimir as mensagens recebidas, mas o mensagem opção não deve
habilitar mensagens recebidas se mensagem n foi emitido.

número, nu
[Predefinição não definido]

If número estiver definido, edite linhas de buffer escritas enquanto em ex modo de comando deve ser escrito com
números de linha, no formato especificado pelo impressão comando com o # bandeira especificada. Dentro
ex modo de entrada de texto, cada linha deve ser precedida pelo número da linha que terá no
arquivo.

No modo aberto ou visual, cada linha do buffer de edição deve ser exibida com uma linha anterior
número, no formato especificado pelo ex impressão comando com o # bandeira especificada. Isto
o número da linha não deve ser considerado parte da linha para fins de avaliação do
coluna atual; ou seja, a posição da coluna 1 deve ser a primeira posição da coluna após o
formato especificado pelo impressão comando.

parágrafos, para
[Padrão na localidade POSIX IPLPPPQPP LIpplpipbp]

A parágrafos opção de edição deve definir limites de parágrafo adicionais para o aberto e
comandos do modo visual. O parágrafos a opção de edição pode ser definida como uma sequência de caracteres
consistindo em zero ou mais pares de caracteres. Será um erro configurá-lo para um valor ímpar
número de caracteres.

pronto
[Predefinição conjunto]

If pronto está definido, ex a entrada do modo de comando deve ser solicitada com um (':'); quando
não definido, nenhum prompt deve ser escrito.

somente leitura
[Predefinição Vejo texto]

Se o somente leitura opção de edição está definida, o modo somente leitura deve ser habilitado (consulte Escreva). O
somente leitura opção de edição deve ser inicializada para definir se qualquer uma das seguintes condições forem
verdade:

* A opção de linha de comando -R foi especificada.

* Executar ações equivalentes ao Acesso() função chamada com o seguinte
argumentos indicam que o arquivo não tem permissão de gravação:

1. O nome do caminho atual é usado como o caminho argumento.

2. A constante W_OK é usado como o modo argumento.

A somente leitura a opção de edição pode ser inicializada para definir para outro, definido pela implementação
razões. O somente leitura a opção de edição não deve ser inicializada para desconfigurar com base em qualquer
privilégios do usuário ou processo. O somente leitura opção de edição deve ser reinicializada a cada
hora em que o conteúdo do buffer de edição é substituído (por exemplo, por um editar or Próximo
comando) a menos que o usuário o tenha definido explicitamente, caso em que deve permanecer definido até
o usuário o desmarca explicitamente. Uma vez desmarcado, ele deve ser reiniciado cada vez que
o conteúdo do buffer de edição é substituído.

redesenhar
[Predefinição não definido]

O editor simula um terminal inteligente em um terminal burro. (Uma vez que é provável que
requerem uma grande quantidade de saída para o terminal, é útil apenas em alta transmissão
velocidades.)

remapear
[Predefinição conjunto]

If remapear é definido, a tradução do mapa deve permitir mapas definidos em termos de outros mapas;
a tradução deve continuar até que o produto final seja obtido. Se não estiver definido, apenas uma etapa
tradução deve ser feita.

Denunciar
[Padrão 5]

O valor deste Denunciar opção de edição especifica o número de linhas sendo adicionadas, copiadas,
excluído ou modificado no buffer de edição fará com que uma mensagem informativa seja escrita
para o usuário. As seguintes condições devem causar uma mensagem informativa. A mensagem
deve conter o número de linhas adicionadas, copiadas, excluídas ou modificadas, mas é diferente
não especificado.

* A ex or vi comando do editor, diferente de aberto, desfazerou visual, que modifica pelo menos
o valor do Denunciar editar opção número de linhas, e que não faz parte de um ex
global or v comando, ou ex or vi execução do buffer, deve causar um informativo
mensagem a ser escrita.

* A ex puxão or vi y or Y comando, que copia pelo menos o valor do Denunciar editar
opção mais 1 número de linhas, e que não faz parte de um ex global or v comando, ou
ex or vi execução do buffer, fará com que uma mensagem informativa seja escrita.

* A ex global, v, aberto, desfazerou visual comando ou ex or vi execução de buffer, que adiciona
ou exclui um total de pelo menos o valor do Denunciar editar opção número de linhas,
e que não faz parte de um ex global or v comando, ou ex or vi execução de buffer,
fará com que uma mensagem informativa seja escrita. (Por exemplo, se 3 linhas fossem
adicionado e 8 linhas excluídas durante um ex visual comando, 5 seria o número comparado
contra o Denunciar opção de edição após a conclusão do comando.)

rolagem, scr
[Padrão (número de linhas no display -1) / 2]

O valor do scroll opção de edição deve determinar o número de linhas roladas pelo ex
‐D e z comandos. Para o vi ‐D e ‐ Comandos U, deve ser
o número inicial de linhas para rolar quando não houver anterior ‐D ou ‐ Comando U
foi executado.

seções
[Padrão na localidade POSIX NHSHH HUnhsh]

A seções opção de edição deve definir limites de seção adicionais para o aberto e
comandos do modo visual. O seções a opção de edição pode ser definida como uma sequência de caracteres que consiste
de zero ou mais pares de caracteres; será um erro configurá-lo para um número ímpar de
caracteres.

Concha, sh
[Padrão da variável de ambiente SHELL]

O valor desta opção deve ser uma string. O padrão deve ser retirado do SHELL
variável de ambiente. Se o SHELL variável de ambiente é nula ou vazia, o sh (Vejo sh)
utilitário deve ser o padrão.

largura de deslocamento, sw
[Padrão 8]

O valor desta opção deve dar a largura em colunas de um nível de indentação usado
durante a indentação automática e pelos comandos de deslocamento (< e >).

showmatch, sm
[Predefinição não definido]

A funcionalidade descrita para o showmatch a opção de edição não precisa ser suportada em bloco-
terminais de modo ou terminais com recursos insuficientes.

If showmatch é definido, no modo aberto ou visual, quando um ')' or '}' é digitado, se o correspondente
'(' or '{' está atualmente visível na tela, o correspondente '(' or '{' deve ser sinalizado
mover o cursor para sua localização por um período de tempo não especificado.

modo de exibição
[Predefinição não definido]

If modo de exibição é definido, no modo aberto ou visual, o modo atual em que o editor está deve
ser exibido na última linha do display. O modo de comando e o modo de entrada de texto devem ser
diferenciado; outros modos não especificados e informações definidas pela implementação podem ser
exibido.

abrandar
[Predefinição não definido]

If abrandar é definido durante os modos de entrada de texto aberto e visual, o editor não deve atualizar
partes da tela que não sejam as colunas de linha de exibição que exibem os caracteres
inserido pelo usuário (ver Entrada Moda comandos in vi).

Parada de tabulação, ts
[Padrão 8]

O valor desta opção de edição deve especificar o limite da coluna usado por um no
display (ver impressão automática, ap e Entrada Moda comandos in vi).

comprimento de tag, tl
[Padrão zero]

O valor desta opção de edição deve especificar o número máximo de caracteres que são
considerado significativo no nome da tag especificada pelo usuário e no nome da tag das tags
Arquivo. Se o valor for zero, todos os caracteres em ambos os nomes de tag devem ser significativos.

Tag
[Predefinição Vejo texto]

O valor desta opção de edição deve ser uma string de - nomes de caminho de arquivos delimitados
usado pelo etiqueta comando. O valor padrão não é especificado.

prazo
[Padrão da variável de ambiente PRAZO]

O valor desta opção de edição deve ser uma string. O padrão deve ser retirado do PRAZO
variável no ambiente. Se o PRAZO variável de ambiente está vazia ou nula, o
o padrão não é especificado. O editor deve usar o valor desta opção de edição para determinar
o tipo de dispositivo de exibição.

Os resultados não são especificados se o usuário alterar o valor da opção de edição do termo após
inicialização do editor.

conciso
[Predefinição não definido]

If conciso estiver definido, as mensagens de erro podem ser menos detalhadas. No entanto, exceto por esta ressalva,
mensagens de erro não são especificadas. Além disso, nem todas as mensagens de erro precisam ser alteradas para
configurações diferentes desta opção.

avisar
[Predefinição conjunto]

If avisar está definido, e o conteúdo do buffer de edição foi modificado desde que foi
última escrita completa, o editor deve escrever uma mensagem de advertência antes de certo !
comandos (ver fuga).

janela
[Predefinição Vejo texto]

Um valor usado no modo aberto e visual, pelo -Banda ‐F comandos, e, em
modo visual, para especificar o número de linhas exibidas quando a tela é repintada.

Se o −w opção de linha de comando não for especificada, o valor padrão deve ser definido para o
valor do LINHAS variável de ambiente. Se o LINHAS a variável de ambiente está vazia ou
null, o padrão deve ser o número de linhas no display menos 1.

Configurando o janela opção de edição para zero ou para um valor maior que o número de linhas em
a exibição menos 1 (explicitamente ou com base no −w opção ou o LINHAS meio Ambiente
variável) deve causar o janela opção de edição a ser definida para o número de linhas no
exibir menos 1.

A taxa de transmissão da linha do terminal pode alterar o padrão em um definido pela implementação
maneira.

margem de envoltório, wm
[Padrão 0]

Se o valor desta opção de edição for zero, ela não terá efeito.

Se não estiver no locale POSIX, o efeito desta opção de edição é definido pela implementação.

Caso contrário, ele deve especificar um número de colunas da margem final do terminal.

Durante os modos de entrada de texto aberto e visual, para cada caractere para o qual qualquer parte do
caractere é exibido em uma coluna menor que margem de envoltório colunas do final
margem da linha de exibição, o editor deve se comportar da seguinte forma:

1. Se o personagem que está acionando este evento é um , ele, e todos os imediatamente anteriores
caracteres na linha atual inseridos durante a execução do atual
comando de entrada de texto, deve ser descartado, e o editor deve se comportar como se o usuário tivesse
entrou em um único em vez de. Além disso, se o próximo caractere inserido pelo usuário for
uma , deve ser descartado também.

2. Caso contrário, se houver um ou mais caracteres na linha atual imediatamente
precedendo o último grupo de não caracteres que foram inseridos durante
a execução do comando de entrada de texto atual, o personagens devem ser
substituído como se o usuário tivesse inserido um único em vez de.

Se o recuo automático a opção de edição é definida e os eventos descritos em 1. ou 2. são realizados,
qualquer caracteres no ou após o cursor na linha atual devem ser descartados.

A margem final deve ser determinada pelo sistema ou substituída pelo usuário, como
descrito para COLUNAS na seção VARIÁVEIS DE AMBIENTE e no volume Definições de base
de POSIX.1‐2008, Capítulo 8, Meio Ambiente Variáveis.

digitalizar, ws
[Predefinição conjunto]

If digitalizar está definido, pesquisas (o ex / or ? endereços, ou modo aberto e visual /, ?, N,
e n comandos) deve envolver o início ou fim do buffer de edição; quando não definido,
as pesquisas devem parar no início ou no final do buffer de edição.

escrito qualquer, wa
[Predefinição não definido]

If escrever qualquer coisa é definido, algumas das verificações realizadas ao executar o ex escrever comandos
deve ser inibido, conforme descrito na opção do editor gravação automática.

SAIR STATUS


Os seguintes valores de saída devem ser retornados:

0 Conclusão bem-sucedida.

> 0 Ocorreu um erro.

CONSEQUÊNCIAS OF ERROS


Quando qualquer erro é encontrado e a entrada padrão não é um arquivo de dispositivo de terminal, ex
não deve gravar o arquivo ou retornar ao comando ou modo de entrada de texto, e deve terminar com
um status de saída diferente de zero.

Caso contrário, quando um erro irrecuperável for encontrado, será equivalente a um SIGHUP
evento assíncrono.

Caso contrário, quando um erro for encontrado, o editor deve se comportar conforme especificado em Command
Line Análise in ex.

A seguinte seções e guarante que os mesmos estão informativo.

APLICAÇÃO USO


Se um sinal SIGSEGV for recebido enquanto ex está salvando um arquivo, o arquivo pode não ser
salvo com sucesso.

A Próximo comando pode aceitar mais de um arquivo, portanto, uso como:

Próximo [abc] * `

é válido; não seria válido para o editar or ler comandos, por exemplo, porque eles
espere apenas um arquivo e resultados não especificados ocorrerão.

EXEMPLOS


Nenhum.

JUSTIFICATIVA


A ex/vi especificação é baseada na prática histórica encontrada no 4 BSD e Sistema
V implementações de ex e vi.

A restringido editor (ambos os históricos vermelho utilidade e modificações para ex) estavam
considerado e rejeitado para inclusão. Nenhuma das opções forneceu o nível de segurança que
os usuários podem esperar.

É reconhecido que ex modo visual e recursos relacionados seriam difíceis, se não
impossível, para implementar de forma satisfatória em um terminal de modo de bloco, ou um terminal sem
qualquer forma de endereçamento do cursor; assim, não é um requisito obrigatório que tais recursos
deve funcionar em todos os terminais. É a intenção, no entanto, que um ex implementação
deve fornecer o conjunto completo de recursos em todos os terminais capazes de suportá-los.

Opções
A -c para substituição +comando foi inspirado pelo -E opção de sede. Historicamente, todos
tais comandos (ver editar e Próximo também) foram executados a partir da última linha da edição
amortecedor. Isso significava, por exemplo, que "+ / padrão" iria falhar a menos que o digitalizar opção
foi configurado. POSIX.1‐2008 requer conformidade com a prática histórica. O +comando opção
não mais especificado por POSIX.1‐2008, mas pode estar presente em algumas implementações.
Historicamente, algumas implementações restringiram o ex comandos que podem ser listados como parte
dos argumentos da linha de comando. Para consistência, POSIX.1‐2008 não permite estes
restrições.

Em implementações históricas do editor, o −R opção (e o somente leitura opção de edição)
impediu apenas a substituição de arquivos; anexar a arquivos ainda era permitido, mapeamento
vagamente no csh nocturno variável. Algumas implementações, no entanto, não seguiram
esta semântica, e somente leitura também não permite anexar. POSIX.1‐2008 segue o
última prática, acreditando que é um significado mais óbvio e intuitivo de somente leitura.

A -S opção suprime todos os comentários interativos do usuário e é útil para editar scripts
em trabalhos em lote. A lista de efeitos específicos é prática histórica. O tipo de terminal
`` incapaz de suportar modos abertos e visuais '' tem sido historicamente chamado de `` burro ''.

A -t opção era necessária porque o ctags utilitário aparece em POSIX.1‐2008 e o
opção está disponível em todas as implementações históricas de ex.

Historicamente, o ex e vi utilitários aceitaram um −x opção, que fez criptografia com base em
o algoritmo encontrado no histórico cripta Utilitário. o −x opção de criptografia, e o
associado cripta utilitário, foram omitidos porque o algoritmo usado não era especificável e
as leis de controle de exportação de algumas nações dificultam a exportação criptográfica
tecnologia. Além disso, não fornecia historicamente o nível de segurança que os usuários
pode esperar.

Padrão Entrada
Uma condição de fim de arquivo não é equivalente a um caractere de fim de arquivo. Um fim comum
personagem de arquivo, ‐D, é historicamente um ex comando.

Não havia comprimento máximo de linha em implementações históricas de ex. Especificamente, pois
foi analisado em blocos, os endereços tinham um comprimento máximo diferente dos nomes de arquivo.
Além disso, o tamanho máximo do buffer de linha foi declarado como BUFSIZ, que tinha comprimentos diferentes
em sistemas diferentes. Esta versão selecionou o valor de {LINE_MAX} para impor um razoável
restrição ao uso portátil de ex e para ajudar os escritores de suite de teste no desenvolvimento de
testes realistas que exercem esse limite.

Entrada Arquivos
Foi uma decisão explícita dos desenvolvedores padrão que um ser adicionado a qualquer
arquivo faltando um. Acreditava-se que esta característica do ex e vi foi usado por usuários em
a fim de fazer arquivos de texto sem um rastro mais portátil. É reconhecido que
isso exigirá uma opção ou extensão especificada pelo usuário para implementações que permitem ex
e vi para editar arquivos de outro tipo que não texto, se tais arquivos não forem identificados de outra forma por
o sistema. Foi acordado que a capacidade de editar arquivos de tipo arbitrário pode ser útil,
mas não foi considerado necessário exigir que um ex or vi implementação seja necessária
para lidar com arquivos diferentes de arquivos de texto.

O parágrafo na seção INPUT FILES, `` Por padrão, ... '', tem como objetivo fechar um
problema de segurança de longa data em ex e vi; aquele do `` modeline '' ou `` modelines ''
opção de edição. Este recurso permite qualquer linha nas primeiras ou últimas cinco linhas do arquivo
contendo as cordas "ex:" or "vi:" (e, aparentemente, "ei:" or "vx:") para ser uma linha
contendo comandos do editor, e ex interpreta todo o texto até o próximo ':' ou
como um comando. Considere as consequências, por exemplo, de um usuário desavisado usando ex or
vi como editor ao responder a uma mensagem de correio em que uma linha como:

ex:! rm −rf :

apareceu nas linhas de assinatura. Os desenvolvedores padrão acreditavam fortemente que um editor
não deve, por padrão, interpretar nenhuma linha de um arquivo. Os fornecedores são fortemente encorajados a excluir
esse recurso de suas implementações de ex e vi.

Assíncrono Eventos
A intenção da frase `` escrita completa '' é que todo o buffer de edição seja escrito
para armazenamento estável. A nota sobre arquivos temporários é destinada a implementações que
use arquivos temporários para editar buffers não nomeados pelo usuário.

Historicamente, SIGQUIT foi ignorado por ex, mas era o equivalente do Q comando no visual
modo; ou seja, saiu do modo visual e entrou ex modo. POSIX.1‐2008 permite, mas permite
não requer, este comportamento. Historicamente, SIGINT foi frequentemente usado por vi usuários para encerrar
modo de entrada de texto ( ‐C é frequentemente mais fácil de entrar do que ) Algumas implementações
of vi alertou o terminal sobre este evento, e alguns não. POSIX.1‐2008 requer que
SIGINT se comporta de forma idêntica a , e que o terminal não seja alertado.

Historicamente, suspendendo o ex editor durante o modo de entrada de texto era semelhante ao SIGINT, como
linhas completas foram mantidas, mas qualquer linha parcial descartada, e o editor voltou para
modo de comando. POSIX.1‐2008 não menciona esse assunto; implementações são encorajadas a
siga a prática histórica, sempre que possível.

Historicamente, o vi editor não tratou SIGTSTP como um evento assíncrono, e foi
portanto, impossível suspender o editor no modo de entrada de texto visual. Existem dois principais
razões para isso. A primeira é que SIGTSTP é um sinal de transmissão em sistemas UNIX, e o
cadeia de eventos onde o shell execé um aplicativo que então execs vi geralmente causado
confusão para o estado do terminal se SIGTSTP foi entregue ao grupo de processo no
maneira padrão. O segundo foi que a maioria das implementações do UNIX maldições pacote fez
não lidar com o SIGTSTP com segurança, e o recebimento do SIGTSTP no momento errado causaria
para quebrar. POSIX.1‐2008 não menciona esse assunto; implementações são encorajadas a tratar
suspensão como um evento assíncrono, se possível.

Historicamente, as modificações no buffer de edição feitas antes de SIGINT interromper uma operação
foram retidos; ou seja, em qualquer lugar de zero a todas as linhas a serem modificadas podem ter
modificado no momento em que o SIGINT chegou. Essas mudanças não foram descartadas pelo
chegada do SIGINT. POSIX.1‐2008 permite este comportamento, observando que o desfazer comando é
necessário para desfazer esses comandos parcialmente concluídos.

A ação realizada para sinais diferentes de SIGINT, SIGCONT, SIGHUP e SIGTERM é
não especificado porque algumas implementações tentam salvar o buffer de edição em um estado útil
quando outros sinais são recebidos.

Padrão erro
Escolha ex/vi, as mensagens de diagnóstico são aquelas mensagens relatadas como resultado de uma tentativa malsucedida
invocar ex or vi, como opções inválidas ou recursos insuficientes, ou um anormal
condição de rescisão. As mensagens de diagnóstico não devem ser confundidas com as mensagens de erro
gerado por comandos de usuário inapropriados ou ilegais.

Inicialização in ex e vi
Se um ex comando (diferente de cd, chdirou fonte) tem um argumento de nome de arquivo, um ou ambos
os nomes de caminho alternativo e atual serão definidos. Informalmente, eles são definidos da seguinte forma:

1. Se o ex comando é aquele que substitui o conteúdo do buffer de edição, e
for bem-sucedido, o nome do caminho atual será definido para o argumento do nome do arquivo (o primeiro
argumento de nome de arquivo no caso do Próximo comando) e o nome do caminho alternativo será
definido com o nome do caminho atual anterior, se houver.

2. No caso das formas de leitura / gravação de arquivo do ler e escrever comandos, se houver
sem nome do caminho atual, o nome do caminho atual será definido para o argumento do nome do arquivo.

3. Caso contrário, o nome do caminho alternativo será definido como o argumento do nome do arquivo.

Por exemplo, edit: Foo e :recuperar Foo, quando bem-sucedido, defina o nome do caminho atual e,
se houver um caminho atual anterior, o nome do caminho alternativo. Os comandos :escrever,
!comando e edit: não defina os nomes de caminho atuais ou alternativos. Se o edit: Foo
caso o comando falhasse por algum motivo, o nome do caminho alternativo seria definido. O ler e
escrever comandos definem o caminho alternativo para seus lima argumento, a menos que o atual
nome do caminho não é definido, caso em que eles definem o nome do caminho atual para seu lima argumentos.
O nome do caminho alternativo não foi historicamente definido pelo :fonte comando. POSIX.1‐2008
requer conformidade com a prática histórica. Implementações adicionando comandos que levam
nomes de arquivos como argumentos são encorajados a definir o caminho alternativo conforme descrito aqui.

Historicamente, ex e vi Leia o .exrc arquivo no $ HOME diretório duas vezes, se o editor
foi executado no $ HOME diretório. POSIX.1‐2008 proíbe este comportamento.

Historicamente, o 4 BSD ex e vi Leia o $ HOME e local .exrc arquivos se fossem de propriedade
pelo ID real do usuário, ou o fonte de qualquer coisa opção foi definida, independentemente de outra
considerações. Este era um problema de segurança porque é possível colocar UNIX normal
comandos do sistema dentro de um .exrc Arquivo. POSIX.1‐2008 não especifica o fonte de qualquer coisa opção,
e implementações históricas são encorajadas a excluí-lo.

A .exrc os arquivos devem ser de propriedade do ID real do usuário e não podem ser gravados por ninguém
do que o proprietário. A exceção de privilégios apropriada destina-se a permitir que os usuários
adquirir privilégios especiais, mas continuar a usar o .exrc arquivos em seus diretórios pessoais.

System V Release 3.2 e posterior vi implementações adicionaram a opção [não] exrc. O comportamento
isso é local .exrc os arquivos são somente leitura se o exrc opção está definida. O padrão para o
exrc opção estava desligada, então por padrão, local .exrc os arquivos não foram lidos. O problema era este
pretendia resolver era que o System V permitia que os usuários doassem arquivos, portanto, não há
possível teste de propriedade ou gravabilidade para garantir que o arquivo é seguro. Este ainda é um
problema de segurança em sistemas onde os usuários podem dar arquivos, mas não há nada
adicional que POSIX.1‐2008 pode fazer. A exceção definida pela implementação tem como objetivo
permitir que os grupos tenham locais .exrc arquivos que são compartilhados por usuários, criando pseudo-usuários
possuir os arquivos compartilhados.

POSIX.1‐2008 não menciona todo o sistema ex e vi arquivos de inicialização. Enquanto eles existem em
várias implementações de ex e vi, eles não estão presentes em nenhuma implementação
considerada prática histórica por POSIX.1‐2008. Implementações que possuem tais arquivos
deve usá-los apenas se pertencerem ao ID de usuário real ou a um usuário apropriado (para
exemplo, root em sistemas UNIX) e se eles não forem graváveis ​​por qualquer usuário que não seja seu
proprietário. Os arquivos de inicialização de todo o sistema devem ser lidos antes de SAIR variável, $ HOME / .exrc,
ou local .exrc os arquivos são avaliados.

Historicamente, qualquer ex comando pode ser inserido no SAIR variável ou o .exrc arquivo,
embora aqueles que exigem que o buffer de edição já contenham linhas de texto geralmente
fez com que as implementações históricas do editor caíssem core. POSIX.1‐2008 requer que
qualquer ex comando ser permitido no SAIR variável e .exrc arquivos, para simplicidade de
especificação e consistência, embora muitos deles obviamente falharão em muitos
circunstâncias.

A inicialização do conteúdo do buffer de edição usa a frase `` o efeito deve
ser '' em relação a vários ex comandos. A intenção desta frase é que o buffer de edição
os conteúdos carregados durante a fase de inicialização não serão perdidos; isto é, carregando a edição
buffer deve falhar se o .exrc arquivo lido no conteúdo de um arquivo e não
subsequentemente, escreva o buffer de edição. Uma intenção adicional desta frase é especificar que
a linha e coluna atuais iniciais são definidas conforme especificado para o indivíduo ex comandos.

Historicamente, o -t opção se comportou como se a pesquisa de tag fosse um +comando; ou seja, era
executado a partir da última linha do arquivo especificado pela tag. Isso resultou na pesquisa
falhando se o padrão era um padrão de pesquisa direta e o digitalizar opção de edição não era
definir. POSIX.1‐2008 não permite este comportamento, exigindo que a busca pela tag
padrão ser executado em todo o arquivo e, se não for encontrado, que a linha atual seja definida
para um local mais razoável no arquivo.

Historicamente, o buffer de edição vazio apresentado para edição quando um arquivo não foi especificado por
o usuário não tinha nome. Isso é permitido por POSIX.1‐2008; no entanto, as implementações são
encorajado a fornecer aos usuários um nome de arquivo temporário para este buffer, porque os permite
o uso de ex comandos que usam o nome do caminho atual durante sessões de edição temporárias.

Historicamente, o arquivo especificado usando o -t opção não fazia parte do argumento atual
Lista. Esta prática é permitida por POSIX.1‐2008; no entanto, as implementações são encorajadas
para incluir seu nome na lista de argumentos atual para consistência.

Historicamente, o -c comando geralmente não foi executado até um arquivo que já existe
foi editado. POSIX.1‐2008 requer conformidade com esta prática histórica. Comandos que
poderia causar o -c comando a ser executado inclui o ex comandos editar, Próximo, recuperar,
rebobinar e etiqueta, e as vi comandos - ^ e -]. Historicamente, lendo um
arquivo em um buffer de edição não causou o -c comando a ser executado (mesmo que possa
definir o nome do caminho atual) com a exceção de que causou o -c comando para ser
executado se: o editor estava em ex modo, o buffer de edição não tinha nome de caminho atual, o edit
o buffer estava vazio e nenhum comando de leitura havia sido tentado. Para consistência e
simplicidade de especificação, POSIX.1‐2008 não permite este comportamento.

Historicamente, o −r opção era a mesma que uma sessão de edição normal se não houvesse recuperação
informações disponíveis para o arquivo. Isso permitia que os usuários entrassem:

vi −r * .c

e recuperar todos os arquivos que foram recuperáveis. Em algumas implementações, a recuperação foi
tentou apenas no primeiro arquivo nomeado, e o arquivo não foi inserido no argumento
Lista; em outros, a recuperação foi tentada para cada arquivo nomeado. Além disso, alguns históricos
implementações ignoradas −r if -t foi especificado ou não suportava linha de comando lima
argumentos com o -t opção. Para consistência e simplicidade de especificação,
POSIX.1‐2008 não permite esses casos especiais e requer que a recuperação seja tentada
primeira vez que cada arquivo é editado.

Historicamente, vi inicializou o ` e ' marcas, mas ex não. Isso significava que se o
primeiro comando em ex modo era visual ou se um ex comando foi executado primeiro (por exemplo,
vi +10 lima), vi foi inserido sem que as marcas fossem inicializadas. Porque o padrão
os desenvolvedores acreditam que as marcas são geralmente úteis e para consistência e simplicidade
da especificação, POSIX.1‐2008 requer que eles sempre sejam inicializados se estiverem abertos ou
modo visual, ou se em ex modo e o buffer de edição não está vazio. Não inicializando em ex
o modo se o buffer de edição estiver vazio é uma prática histórica; no entanto, sempre foi
possível definir (e usar) marcas em buffers de edição vazios em modo de edição aberto e visual
sessões.

Endereçando
Historicamente, ex e vi aceitou os formulários de endereçamento adicionais '\ /' e '\?'. Eles eram
equivalente a "//" e "??", respectivamente. Eles não são exigidos por POSIX.1‐2008, principalmente
porque ninguém consegue se lembrar se alguma vez fizeram algo diferente historicamente.

Historicamente, ex e vi permitiu um endereço de zero para vários comandos, e permitiu
que o % endereço em arquivos vazios para outros. Para consistência, POSIX.1‐2008 requer suporte
para o primeiro nos poucos comandos onde faz sentido e não permite de outra forma. Dentro
Além disso, porque POSIX.1‐2008 requer que % ser logicamente equivalente a "1, $", isto é
também com suporte onde faz sentido e não permitido de outra forma.

Historicamente, o % endereço não pôde ser seguido por outros endereços. Para consistência
e simplicidade de especificação, POSIX.1‐2008 requer que endereços adicionais sejam
suportado.

Todos os seguintes são válidos endereços:

+++ Três linhas após a linha atual.

/re/ - Uma linha antes da próxima ocorrência de re.

-2 Duas linhas antes da linha atual.

3 −−−− 2 Linha um (observe o endereço intermediário negativo).

1 2 3 Linha seis.

Qualquer número de endereços pode ser fornecido para comandos que usam endereços; por exemplo,
"1,2,3,4,5p" imprime as linhas 4 e 5, porque dois é o maior número válido de endereços
aceito pelo impressão comando. Isso, em combinação com o delimitador,
permite que os usuários criem comandos com base em padrões ordenados no arquivo. Por exemplo, o
comando 3; / foo /; + 2impressão iráexibir a primeira linha após a linha 3 que contém o padrão
Foo, mais as próximas duas linhas. Observe que o endereço 3; deve ser avaliado antes de ser
descartado porque a origem da pesquisa para o / foo / comando depende disso.

Historicamente, os valores podem ser adicionados aos endereços, incluindo-os após um ou mais
personagens; por exemplo, 3 - 5p escreveu a sétima linha do arquivo, e / foo / 5
era o mesmo que / foo / + 5. No entanto, apenas valores absolutos podem ser adicionados; por exemplo,
5 / foo / foi um erro. POSIX.1‐2008 requer conformidade com a prática histórica. Endereço
os deslocamentos são especificados separadamente dos endereços porque podem ser historicamente
fornecido para comandos de pesquisa de modo visual.

Historicamente, todos os endereços ausentes assumem o padrão da linha atual. Isso era verdade para
à frente e atrás -endereços limitados, e para a direita -delimitado
endereços. Para consistência, POSIX.1‐2008 requer isso para liderar endereços como
bem.

Historicamente, ex e vi aceitou o '^' caractere como um endereço e como um deslocamento de bandeira
para comandos. Em ambos os casos, era idêntico ao '-' personagem. POSIX.1‐2008 não
exigir ou proibir esse comportamento.

Historicamente, os aprimoramentos para expressões regulares básicas podem ser usados ​​no endereçamento;
por exemplo, '~', '\ <' e '\>'. POSIX.1‐2008 requer conformidade com o histórico
prática; ou seja, que o uso da expressão regular seja consistente e que
aprimoramentos de expressão são suportados sempre que expressões regulares são usadas.

Command Line Análise in ex
Histórico ex a análise do comando era ainda mais complexa do que a descrita aqui. POSIX.1‐2008
requer o subconjunto da análise de comando que os desenvolvedores padrão acreditavam ser
documentado e que se possa razoavelmente esperar que os usuários usem de forma portátil, e
que era historicamente consistente entre as implementações. (A funcionalidade descartada é
obscuro, na melhor das hipóteses.) Implementações históricas exigirão mudanças para cumprir
com POSIX.1‐2008; no entanto, não se espera que os usuários percebam nenhuma dessas alterações. A maioria
da complexidade em ex a análise é para lidar com três casos de rescisão especiais:

1. A !, global, v, e as versões de filtro do ler e escrever os comandos são delimitados
por caracteres (eles podem conter personagens que geralmente são
tubos de concha).

2. A ex, editar, Próximo e visual em comandos de modo aberto e visual, todos pegam ex comandos,
contendo opcionalmente personagens, como seus primeiros argumentos.

3. A s comando leva uma expressão regular como seu primeiro argumento e usa o
delimitando caracteres para delimitar o comando.

Historicamente, personagens no +comando argumento do ex, editar, Próximo,
vi e visual comandos, e no de cinto de segurança e substituição partes de s comando, fez
não delimitar o comando, e nos casos de filtro para ler e escrever, e as !, global,
e v comandos, eles não delimitaram o comando de forma alguma. Por exemplo, o seguinte
os comandos são todos válidos:

:editar +25 | s / abc / ABC / file.c
:s / | /TUBO/
:ler! feitiço% | colunar
:global / padrão / p | eu
:s / a / b / | s / c / d | definir

Historicamente, vazio ou linhas preenchidas em .exrc arquivos e fontearquivos d (bem como
SAIR variáveis ​​e ex scripts de comando) foram tratados como comandos padrão; isso é, impressão
comandos. POSIX.1‐2008 exige especificamente que sejam ignorados quando encontrados em
.exrc e fontearquivos d para eliminar uma fonte comum de erros de novos usuários.

Historicamente, ex comandos com múltiplos adjacentes (ou -separated) linhas verticais
foram tratados de forma estranha quando executados a partir de ex modo. Por exemplo, o comando ||| <carriage-
return>, quando o cursor estava na linha 1, mostrava as linhas 2, 3 e 5 do arquivo. Dentro
além disso, o comando | só exibiria a linha após a próxima linha, em vez do
próximas duas linhas. O primeiro funcionou mais logicamente quando executado a partir de vi modo, e exibido
linhas 2, 3 e 4. POSIX.1‐2008 requer o vi comportamento; ou seja, um único padrão
incremento de número de linha e comando para cada separador de comando e
personagens depois separadores são descartados.

Historicamente, ex permitido um único extra como um personagem de comando principal; por
exemplo, : g / padrão /: p era um comando válido. POSIX.1‐2008 generaliza isso para exigir que
qualquer número de líderes personagens sejam retirados.

Historicamente, qualquer prefixo do excluir comando poderia ser seguido sem intervir
caracteres por um caractere bandeira porque no comando d p, p é interpretado como o
amortecer p. POSIX.1‐2008 requer conformidade com a prática histórica.

Historicamente, o k comando pode ser seguido pelo nome da marca sem intervir
personagens. POSIX.1‐2008 requer conformidade com a prática histórica.

Historicamente, o s o comando pode ser seguido imediatamente por sinalizadores e caracteres de opção;
por exemplo, s / e / E / | s | sgc3p era um comando válido. No entanto, os personagens de bandeira não podiam suportar
sozinho; por exemplo, os comandos sp e s l iria falhar, enquanto o comando por favor e s gl
teria sucesso. (Obviamente, o '#' o caractere sinalizador foi usado como um caractere delimitador se
seguiram o comando.) Outro problema era que os caracteres de opção precisavam preceder o sinalizador
caracteres mesmo quando o comando foi totalmente especificado; por exemplo, o comando s / e / E / pg
iria falhar, enquanto o comando s / e / E / gp teria sucesso. POSIX.1‐2008 requer conformidade com
prática histórica.

Historicamente, o primeiro nome de comando que tinha um prefixo correspondente à entrada do usuário
foi o comando executado; por exemplo, ve, ver e vers todos executaram o versão comando.
Os comandos estavam em uma ordem específica, no entanto, para que a correspondido anexar, não abreviar.
POSIX.1‐2008 requer conformidade com a prática histórica. A restrição ao comando
a ordem de pesquisa para implementações com extensões é evitar a adição de comandos como
que os prefixos históricos não funcionariam portavelmente.

Implementações históricas de ex e vi não lidou corretamente com vários ex comandos,
separado por caracteres que entraram ou saíram do modo visual ou do editor.
Porque implementações de vi existem que não exibem este modo de falha, POSIX.1‐2008
não permite.

O requisito de que os nomes de comandos alfabéticos consistam em todos os seguintes
caracteres até o próximo caractere não alfabético significa que os nomes de comandos alfabéticos
devem ser separados de seus argumentos por um ou mais caracteres não alfabéticos, normalmente
uma ou '!' caractere, exceto conforme especificado para as exceções, o excluir, k e s
comandos.

Historicamente, a execução repetida do ex omissão impressão comandos ( ‐D, eof,
, ) apagou qualquer caractere de aviso e exibiu as próximas linhas
sem rolar o terminal; ou seja, imediatamente abaixo de quaisquer linhas exibidas anteriormente.
Isso proporcionou ao usuário uma apresentação mais clara das linhas do arquivo. POSIX.1‐2008
não requer esse comportamento porque pode ser impossível em algumas situações; Contudo,
implementações são fortemente encorajadas a fornecer esta semântica, se possível.

Historicamente, era possível alterar arquivos no meio de um comando, e ter o
resto do comando executado no novo arquivo; por exemplo:

edit: +25 arquivo.c | s / abc / ABC / | 1

era um comando válido e a substituição foi tentada no arquivo recém-editado.
POSIX.1‐2008 requer conformidade com a prática histórica. Os seguintes comandos são
exemplos que exercem o ex analisador:

eco 'foo | bar' > arquivo1; eco 'foo / bar' > arquivo2;
vi
edit: +1 | s / | / PIPE / | w file1 | e file2 | 1 | s / \ // SLASH / | wq

Historicamente, não havia proteção nas implementações do editor para evitar ex global, v, @,
or * comandos que mudam os buffers de edição durante a execução de seus comandos associados. Porque
isso quase invariavelmente resultaria em falha catastrófica do editor, e
existem implementações que apresentam esses problemas, POSIX.1‐2008 requer que a mudança
o buffer de edição durante um global or v comando, ou durante um @ or * comando para o qual há
será mais do que uma única execução, será um erro. Implementações que suportam vários
editar buffers simultaneamente são fortemente encorajados a aplicar a mesma semântica para
alternando entre buffers também.

A ex comando citação exigido por POSIX.1‐2008 é um superconjunto do citação em histórico
implementações do editor. Por exemplo, não era historicamente possível escapar de um
em um nome de arquivo; por exemplo, edit: foo \\\ Barra relataria que muitos nomes de arquivos
tinha sido inserido para o comando de edição, e não havia nenhum método de escapar de um dentro
o primeiro argumento de um editar, ex, Próximoou visual comando em tudo. POSIX.1‐2008 estende
prática histórica, exigindo que o comportamento de citação seja consistente em todas as ex
comandos, exceto para o mapa,, desmapear, abreviar e não abreviar comandos, que
usado historicamente ‐V em vez de personagens para citar. Para aqueles
quatro comandos, POSIX.1‐2008, requer conformidade com a prática histórica.

Citação de barra invertida em ex não é intuitivo. -escapes são ignorados a menos que eles
escapar de um caractere especial; por exemplo, ao realizar lima expansão do argumento, o
corda "\\%" é equivalente a '\%', não "\atual pathname> ". Isso pode ser confuso para
usuários porque é geralmente um dos caracteres que causa a expansão do shell para
ser executada e, portanto, as regras de cotação do shell devem ser levadas em consideração.
Geralmente, os caracteres de citação são considerados apenas se escaparem de um caractere especial e
um caractere de citação deve ser fornecido para cada camada de análise para a qual o caractere é
especial. Como outro exemplo, apenas um único é necessário para o '\eu' seqüência
em padrões de substituição substitutos, porque o personagem 'eu' não é especial para ninguém
camada de análise acima dela.

‐V citando em ex é ligeiramente diferente da citação de barra invertida. Nos quatro
comandos onde ‐V citando se aplica (abreviar, não abreviar, mapa, e desmapear), algum
caractere pode ser escapado por um ‐V se teria um significado especial ou não.
POSIX.1‐2008 requer conformidade com a prática histórica.

Implementações históricas do editor não exigiam delimitadores dentro do caractere
classes a serem escapadas; por exemplo, o comando : s / [/] // na corda "xxx / yyy" seria
excluir o '/' da corda. POSIX.1‐2008 não permite esta prática histórica para
consistência e porque coloca um grande fardo nas implementações, exigindo que
conhecimento de expressões regulares deve ser incorporado ao analisador do editor.

Historicamente, citando personagens em ex comandos foram tratados de forma inconsistente. Dentro
na maioria dos casos, o personagem sempre terminava o comando, independentemente de qualquer
caractere de escape precedente, porque personagens não escaparam
personagens para a maioria ex comandos. No entanto, alguns ex comandos (por exemplo, s, mapa, e
abreviação) permitido caracteres a serem escapados (embora no caso de mapa,
e abreviação, ‐V caracteres escaparam deles em vez de personagens).
Isso era verdade não apenas na linha de comando, mas também .exrc e fontearquivos d. Por exemplo,
o comando:

mapa, = foo bar

teria sucesso, embora às vezes fosse difícil obter o ‐V e o inserido
passou para o ex analisador. Para consistência e simplicidade de especificação,
POSIX.1‐2008 requer que seja possível escapar personagens em ex comandos em
todos os tempos, usando personagens para a maioria ex comandos, e usando ‐ V
personagens para o mapa, e abreviação comandos. Por exemplo, o comando
impressãoLista deve ser analisado como um único comando impressãoLista.
Embora isso seja diferente da prática histórica, os desenvolvedores do POSIX.1‐2008 acreditavam que era improvável
que qualquer script ou usuário dependia do comportamento histórico.

Historicamente, um erro em um comando especificado usando o -c opção não causou o resto
da -c comandos a serem descartados. POSIX.1‐2008 não permite isso para consistência com
chaves mapeadas, o @, global, fonte e v comandos, o SAIR variável de ambiente, e
que o .exrc arquivos.

Entrada Edição in ex
Um dos usos comuns do histórico ex o editor está usando conexões de rede lentas.
Editores executados em modo canônico podem exigir muito menos tráfego de e para, e muito menos
processamento, a máquina host, bem como terminais de modo de bloco de suporte mais facilmente.
Por estas razões, POSIX.1‐2008 requer que ex ser implementado usando entrada de modo canônico
processamento, como era feito historicamente.

POSIX.1‐2008 não requer os 4 caracteres históricos de edição de entrada do BSD `` word erase ''
ou `` literal próximo ''. Por este motivo, não é especificado como eles são tratados por ex,
embora devam ter o efeito necessário. Implementações que os resolvem após o
a linha foi encerrada com um ou Caráter ‐M e implementações que
dependem do suporte do terminal do sistema subjacente para este processamento, ambos estão em conformidade.
As implementações são fortemente recomendadas para usar a funcionalidade do sistema subjacente, se em tudo
possível, para compatibilidade com outras interfaces de entrada de texto do sistema.

Historicamente, quando o eof caractere foi usado para diminuir o recuo automático nível, o
cursor movido para exibir o novo final do recuo automático personagens, mas não moveu o
cursor para uma nova linha, nem apagou o ‐D personagem da linha.
POSIX.1‐2008 não especifica que o cursor permanece na mesma linha ou que o resto do
a linha é apagada; no entanto, as implementações são fortemente encorajadas a fornecer o melhor
possível interface de usuário; ou seja, o cursor deve permanecer na mesma linha, e qualquer
O caractere ‐D na linha deve ser apagado.

POSIX.1‐2008 não requer o caractere histórico de edição de entrada 4 BSD `` reimprimir '',
tradicionalmente ‐R, que exibiu novamente a entrada atual do usuário. Por esta
razão, e porque a funcionalidade não pode ser implementada após a linha ter sido
terminado pelo usuário, POSIX.1‐2008 não faz requisitos sobre esta funcionalidade.
As implementações são fortemente recomendadas para disponibilizar esta funcionalidade histórica, se
possível.

Historicamente, ‐Q não executou uma próxima função literal em ex, como aconteceu em vi.
POSIX.1‐2008 requer conformidade com a prática histórica para evitar quebra de histórico ex
scripts e .exrc arquivos.

eof
Se o eof personagem modifica imediatamente o recuo automático caracteres no prompt é
não especificado para que as implementações possam estar em conformidade na presença de sistemas que
não suporta esta funcionalidade. As implementações são encorajadas a modificar a linha e
exiba-o novamente imediatamente, se possível.

A especificação do manuseio do eof personagem difere da prática histórica
só nisso eof os caracteres não são descartados se seguirem os caracteres normais no texto
entrada. Historicamente, eles sempre foram descartados.

Command Descrição in ex
Historicamente, vários comandos (por exemplo, global, v, visual, s, escrever, wq, puxão, !, <,
>, & e ~) eram executáveis ​​em arquivos vazios (ou seja, os endereços padrão eram 0), ou
endereços explícitos permitidos de 0 (por exemplo, 0 era um endereço válido ou 0,0 era um endereço válido
alcance). Endereços de 0, ou execução de comando em um arquivo vazio, fazem sentido apenas para
comandos que adicionam novo texto ao buffer de edição ou comandos de escrita (porque os usuários podem desejar
escrever arquivos vazios). POSIX.1‐2008 requer este comportamento para tais comandos e não o permite
caso contrário, para consistência e simplicidade de especificação.

Uma contagem para um ex comando foi historicamente corrigido para não ser maior que o último
linha em um arquivo; por exemplo, em um arquivo de cinco linhas, o comando 1,6 impressão iria falhar, mas o
comando 1 impressão 300 teria sucesso. POSIX.1‐2008 requer conformidade com a prática histórica.

Historicamente, o uso de sinalizadores em ex os comandos podem ser obscuros. Histórico geral
a prática foi conforme descrito por POSIX.1‐2008, mas houve alguns casos especiais. Por
exemplo, o Lista, número e impressão os comandos ignoraram os deslocamentos de endereço final; por
exemplo, 3p +++ # exibiria a linha 3 e 3 seria a linha atual após a execução
do comando. O aberto e visual comandos ignoraram os deslocamentos finais e o
sinalizadores à direita. Além disso, sinalizadores especificados para o aberto e visual comandos interagiram mal
com o Lista opção de edição e configuração e, em seguida, desmarcá-la durante a abertura / visual
sessão causaria vi para interromper a exibição de linhas no formato especificado. Para consistência
e simplicidade de especificação, POSIX.1‐2008 não permite nenhuma dessas exceções para
a regra geral.

POSIX.1‐2008 usa a palavra cópia em vários lugares ao discutir buffers. Isso não é
pretende implicar implementação.

Historicamente, ex os usuários não puderam especificar buffers numéricos devido à ambigüidade deste
poderia causar; por exemplo, no comando 3 excluir 2, não está claro se 2 é um buffer
nome ou um contar. POSIX.1‐2008 requer conformidade com a prática histórica por padrão, mas
não impede extensões.

Historicamente, o conteúdo do buffer sem nome era frequentemente descartado após os comandos
isso não o afetou explicitamente; por exemplo, ao usar o editar comando para mudar
arquivos. Para consistência e simplicidade de especificação, POSIX.1‐2008 não permite isso
comportamento.

A ex utilitário historicamente não tinha acesso aos buffers numéricos e, além disso,
deletando linhas em ex não modificou seu conteúdo. Por exemplo, se, depois de fazer uma exclusão
in vi, o usuário mudou para ex, fiz outra exclusão e, em seguida, voltou para vi,
o conteúdo dos buffers numéricos não teria mudado. POSIX.1‐2008 requer conformidade
à prática histórica. Buffers numéricos são descritos no ex utilidade para
limitar a descrição dos buffers a um único local em POSIX.1‐2008.

Os metacaracteres que acionam a expansão do shell em lima argumentos combinam com histórico
prática, assim como o método para fazer a expansão do shell. Implementações que desejam fornecer
usuários com flexibilidade para alterar o conjunto de metacaracteres são encorajados a fornecer um
meta-concha opção de edição de string.

Historicamente, ex comandos executados de vi atualizou a tela quando não estritamente
precisa fazer isso; por exemplo, :!encontro > / dev / null não requer uma atualização de tela porque
a saída do UNIX dados comando requer apenas uma única linha da tela.
POSIX.1‐2008 requer que a tela seja atualizada se tiver sido substituída, mas torna
nenhum requisito sobre como uma implementação deve fazer essa determinação.
As implementações podem solicitar e atualizar a tela independentemente.

Abreviar
A prática histórica era que os caracteres inseridos como parte de uma abreviatura
substituição foram sujeitos a mapa, expansões, o showmatch opção de edição, mais
expansões de abreviações e assim por diante; ou seja, eles foram logicamente colocados no terminal
fila de entrada e não eram uma substituição simples. POSIX.1‐2008 requer conformidade com
prática histórica. A prática histórica era que sempre que um caractere não verbal (que tinha
não foi escapado por um ‐ V) foi inserido após um caractere de palavra, vi iria verificar por
abreviações. A verificação foi baseada no tipo de caractere inserido antes da palavra
caractere do par palavra / não palavra que acionou a verificação. A palavra personagem do
par palavra / não palavra que acionou a verificação e todos os caracteres inseridos antes do acionamento
par que eram desse tipo foram incluídos na verificação, com exceção de
caracteres, que sempre delimitaram a abreviatura.

Isso significa que, para que a abreviatura funcione, o lhs deve terminar com um caractere de palavra,
não pode haver transições de caracteres de palavras para não-palavras (ou vício versa) outro que não seja
entre o último e o penúltimo caractere no lhs, e não pode haver
personagens no lhs. Além disso, devido às regras de citações históricas, foi
impossível entrar em um literal ‐V no lhs. POSIX.1‐2008 requer conformidade
à prática histórica. Implementações históricas não informavam os usuários quando as abreviações
que nunca poderiam ser usados ​​foram inseridos; implementações são fortemente encorajadas a fazê-lo.

Por exemplo, as seguintes abreviações funcionarão:

: ab (p SUBSTITUIR
: ab p SUBSTITUIR
: ab ((pág. SUBSTITUIR

As seguintes abreviações não funcionam:

: ab ( SUBSTITUIR
: ab (pp. SUBSTITUIR

A prática histórica é que as palavras no vi linha de comando de dois pontos estavam sujeitos a
expansão de abreviatura, incluindo os argumentos para o abrev (e mais interessante) o
resumo comando. Porque existem implementações que não fazem expansão de abreviatura
para o primeiro argumento para esses comandos, isso é permitido, mas não exigido, por
POSIX.1‐2008. No entanto, a seguinte sequência:

: ab Foo Barra
: ab Foo baz

resultou na adição de uma abreviatura de "baz" para a corda "Barra" no histórico
ex/vi, e a sequência:

: ab foo1 Barra
: ab foo2 Barra
: abreviar foo2

excluiu a abreviatura "foo1", não "foo2". Esses comportamentos não são permitidos por
POSIX.1‐2008 porque violam claramente as expectativas do usuário.

Era uma prática histórica que ‐ V, não , os caracteres serão interpretados como
escapando caracteres subsequentes no abreviar comando. POSIX.1‐2008 requer
conformidade com a prática histórica; no entanto, deve-se observar que uma abreviatura
contendo um nunca funcionará.

Acrescentar
Historicamente, qualquer texto após um separador de comando após um anexar,
alterarou inserir comando tornou-se parte do texto de inserção. Por exemplo, no comando:

: g / pattern / append | stuff1

uma linha contendo o texto "stuff1" seria anexado a cada padrão de correspondência de linha. Isto
também foi historicamente válido para inserir:

: append | stuff1
coisas 2
.

e o texto no ex linha de comando seria anexada junto com o texto inserido após
isto. Havia um bug histórico, no entanto, em que o usuário precisava inserir dois
linhas (o '.' linhas) para encerrar o modo de entrada de texto neste caso. POSIX.1‐2008 requer
conformidade com a prática histórica, mas não permite a necessidade histórica de múltiplas
terminação de linhas.

Mudar
Veja a JUSTIFICAÇÃO para o anexar comando. Prática histórica para posicionamento do cursor após
o comando de mudança quando nenhum texto é inserido, é conforme descrito em POSIX.1‐2008. No entanto, um
A implementação do System V é conhecida por ter sido modificada de modo que o cursor seja posicionado
no primeiro endereço especificado e não na linha antes do primeiro endereço. POSIX.1‐2008
não permite esta modificação para consistência.

Historicamente, o alterar comando não suportava argumentos de buffer, embora alguns
implementações permitem a especificação de um buffer opcional. Este comportamento não é nem
exigido nem não permitido por POSIX.1‐2008.

Mudar Diretório
Uma extensão comum em ex implementações é usar os elementos de um caminho do cd editar opção como
diretórios de prefixo para caminho argumentos para chdir que são nomes de caminhos relativos e que não
'.' or ".." como seu primeiro componente. Elementos no caminho do cd opção de edição são
-separated. O valor inicial do caminho do cd opção de edição é o valor do shell
CDPATH variável de ambiente. Este recurso não foi incluído no POSIX.1‐2008 porque faz
não existe em nenhuma das implementações consideradas práticas históricas.

Copiar
Implementações históricas de ex cópias permitidas para linhas dentro do intervalo especificado;
por exemplo, : 2,5copy3 era um comando válido. POSIX.1‐2008 requer conformidade com
prática histórica.

Apagar
POSIX.1‐2008 requer suporte para a análise histórica de um excluir comando seguido por
bandeiras, sem qualquer intervenção personagens. Por exemplo:

1dp Exclui a primeira linha e imprime a segunda linha.

1 atraso Quanto às 1dp.

1d Exclui a primeira linha, salvando-a no buffer p.

1d p1l (Xixi-um-ell.) Exclui a primeira linha, salvando-a no buffer p, e listando a linha
aquele era o segundo.

Editar
Historicamente, qualquer ex comando pode ser inserido como um +comando argumento para o editar comando,
embora alguns (por exemplo, inserir e anexar) eram conhecidos por confundir histórico
implementações. Para consistência e simplicidade de especificação, POSIX.1‐2008 requer
que qualquer comando seja suportado como um argumento para o editar comando.

Historicamente, o argumento do comando foi executado com a linha atual definida para a última linha
do arquivo, independentemente de o editar o comando foi executado no modo visual ou não.
POSIX.1‐2008 requer conformidade com a prática histórica.

Historicamente, o +comando especificado para o editar e Próximo comandos foram delimitados pelo
primeiro , e não havia como citá-los. Para consistência, POSIX.1‐2008 requer
que o usual ex citação de barra invertida seja fornecida.

Historicamente, especificando o +comando argumento para o comando de edição exigia um nome de arquivo para
ser especificado também; por exemplo, edit: +100 sempre falharia. Para consistência e
simplicidade de especificação, POSIX.1‐2008 não permite que este uso falhe por isso
razão.

Historicamente, apenas a posição do cursor do último arquivo editado era lembrada pelo
editor. POSIX.1‐2008 requer que isto seja suportado; no entanto, as implementações são
permitido lembrar e restaurar a posição do cursor para qualquer arquivo editado anteriormente.

Envie o
Versões históricas do ex editor lima comando exibiu uma linha atual e número de
linhas no buffer de edição de 0 quando o arquivo estava vazio, enquanto o vi Comando ‐G
exibiu uma linha atual e um número de linhas no buffer de edição de 1 no mesmo
situação. POSIX.1‐2008 não permite esta discrepância, em vez disso requer que uma mensagem
ser exibido indicando que o arquivo está vazio.

Global
A operação de duas passagens do global e v comandos não pretendem implicar
implementação, apenas o resultado necessário da operação.

A linha e coluna atuais são definidas conforme especificado para o indivíduo ex comandos. Esse
o requisito é cumulativo; ou seja, a linha e coluna atuais devem acompanhar todos os
comandos executados pelo global or v comandos.

inserção
Veja a JUSTIFICAÇÃO para o anexar comando.

Historicamente, inserir não poderia ser usado com um endereço de zero; isto é, não quando a edição
buffer estava vazio. POSIX.1‐2008 requer que este comando se comporte de forma consistente com o
anexar comando.

Cadastrar
A ação do juntar comando em relação aos caracteres especiais só é definido para
a localidade POSIX porque a quantidade correta de espaço em branco após um período varia; dentro
Japonês nenhum é necessário, em francês, apenas um único espaço e assim por diante.

Lista
A produção histórica do Lista comando era potencialmente ambíguo. O padrão
os desenvolvedores acreditavam que corrigir isso era mais importante do que aderir ao histórico
prática e POSIX.1‐2008 requer uma saída inequívoca.

Mapa
Historicamente, os mapas de modo de comando se aplicavam apenas a nomes de comando; por exemplo, se o
personagem 'x' foi mapeado para 'você', o comando fx procurou pelo 'x' personagem, não o
'você' personagem. POSIX.1‐2008 requer este comportamento. Historicamente, entrando ‐V como
o primeiro personagem de um vi comando foi um erro. Várias implementações foram estendidas
a semântica de vi de tal modo que ‐V significa que o caractere de comando subsequente é
não mapeado. Isso é permitido, mas não exigido, por POSIX.1‐2008. Independentemente disso, usando
‐V para escapar do segundo caractere ou posterior em uma sequência de caracteres que podem
combinar um mapa, comando, ou qualquer caractere no modo de entrada de texto, é uma prática histórica, e
impede que as chaves inseridas correspondam a um mapa. POSIX.1‐2008 requer conformidade com
prática histórica.

As implementações históricas permitiram que os dígitos fossem usados ​​como um mapa, comando lhs, mas então
ignorou o mapa. POSIX.1‐2008 requer que os dígitos mapeados não sejam ignorados.

A implementação histórica do mapa, comando não permitiu mapa, comandos que foram
mais de um único caractere de comprimento se o primeiro caractere fosse imprimível. Esse comportamento
é permitido, mas não exigido, por POSIX.1‐2008.

Historicamente, os caracteres mapeados foram remapeados, a menos que o remapear opção de edição não foi definida, ou
o prefixo dos caracteres mapeados combinou com os caracteres de mapeamento; por exemplo, no
mapa,:

:mapa ab ABCD

os personagens "ab" foram usados ​​como estão e não foram remapeados, mas os personagens "CD" foram
mapeado, se apropriado. Isso pode causar loops infinitos no vi mecanismos de mapeamento.
POSIX.1‐2008 requer conformidade com a prática histórica, e que tais loops sejam
interrompível.

Os mapas de entrada de texto tiveram os mesmos problemas com a expansão do lhs para o ex mapa! e desmapear!
comando como fez o ex abreviar e não abreviar comandos. Veja a JUSTIFICAÇÃO para o ex
abreviar comando. POSIX.1‐2008 requer modificação semelhante de algumas práticas históricas
para o mapa, e desmapear comandos, conforme descrito para o abreviar e não abreviar comandos.

Historicamente, mapa,s que eram subconjuntos de outros mapa,s se comportaram de maneira diferente, dependendo do
ordem em que foram definidos. Por exemplo:

:mapa! ab baixo
:mapa! abc longo

sempre traduziria os personagens "ab" para "baixo", independentemente de quão rápido o
caracteres "abc" foram inseridos. Se a ordem de entrada foi revertida:

:mapa! abc longo
:mapa! ab baixo

os personagens "ab" faria com que o editor fizesse uma pausa, esperando a conclusão 'c'
personagem, e os personagens podem nunca ser mapeados para "baixo". Para consistência e
simplicidade de especificação, POSIX.1‐2008 requer que a correspondência mais curta seja usada
vezes.

A quantidade de tempo que o editor gasta esperando que os personagens completem o lhs is
não especificado porque os recursos de temporização dos sistemas são muitas vezes inexatos e variáveis, e
pode depender de outros fatores, como a velocidade da conexão. O tempo deveria ser
o tempo suficiente para que o usuário consiga completar a sequência, mas não o suficiente para o
usuário tem que esperar. Algumas implementações de vi adicionou um hora chave opção, qual
permite aos usuários definir o número de 0,1 segundos que o editor espera para a conclusão
personagens. Porque a função do terminal mapeado e as teclas do cursor tendem a começar com um
personagem, e é o final chave vi modo de entrada de texto, mapa,está começando com
caracteres geralmente são isentos deste período de tempo limite ou, pelo menos, tempo limite esgotado
diferentemente.

Mark
Historicamente, os usuários eram capazes de definir as marcas do `` contexto anterior '' explicitamente. Dentro
além disso, o ex comandos '' e '` e os votos de vi comandos '', ``, `' e '` tudo referido a
a mesma marca. Além disso, as marcas de contexto anteriores não foram definidas se o comando, com
ao qual a configuração de endereço da marca estava associada falhou. POSIX.1‐2008 requer
conformidade com a prática histórica. Historicamente, se as linhas marcadas foram excluídas, a marca
também foi excluído, mas reapareceria se a alteração fosse desfeita. POSIX.1‐2008 requer
conformidade com a prática histórica.

A descrição dos eventos especiais que definem o ` e ' marcas coincidem com o histórico
prática. Por exemplo, historicamente o comando / a /, / b / não definiu o ` e ' marcas, mas
o comando / a /, / b / delete fez.

Próximo
Historicamente, qualquer ex comando pode ser inserido como um +comando argumento para o Próximo comando,
embora alguns (por exemplo, inserir e anexar) eram conhecidos por confundir histórico
implementações. POSIX.1‐2008 requer que qualquer comando seja permitido e que se comporte como
Especificadas. o Próximo comando pode aceitar mais de um arquivo, portanto, uso como:

Próximo [abc] `

é válido; não precisa ser válido para o editar or ler comandos, por exemplo, porque eles
espere apenas um nome de arquivo.

Historicamente, o Próximo comando se comportou de maneira diferente do : retroceder comando nisso
ignorou o sinalizador de força se o gravação automática bandeira foi definida. Por consistência, POSIX.1‐2008 faz
não permitir este comportamento.

Historicamente, o Próximo comando posicionou o cursor como se o arquivo nunca tivesse sido editado
antes, independentemente. POSIX.1‐2008 não permite este comportamento, para consistência com o
editar comando.

Implementações que desejam fornecer uma contrapartida ao Próximo comando que editou o
arquivo anterior usou o comando anterior], que leva não lima argumento. POSIX.1‐2008
não requer este comando.

Abra
Historicamente, o aberto comando iria falhar se o aberto opção de edição não foi definida.
POSIX.1‐2008 não menciona o aberto opção de edição e não requer este comportamento.
Algumas implementações históricas não permitem entrar no modo aberto a partir do modo aberto ou visual,
Apenas de ex modo. Por consistência, POSIX.1‐2008 não permite este comportamento.

Historicamente, entrar no modo aberto a partir da linha de comando (ou seja, vi + aberto) resultou em
comportamentos anômalos; por exemplo, o ex arquivo e conjunto comandos, e o vi comando
‐G não funcionou. Por consistência, POSIX.1‐2008 não permite este comportamento.

Historicamente, o aberto comando apenas permitido '/' caracteres a serem usados ​​como pesquisa
delimitador de padrão. Por consistência, POSIX.1‐2008 requer que os delimitadores de pesquisa usados
pelo s, global e v comandos também sejam aceitos.

Preservar
A preservar comando não faz historicamente com que o arquivo seja considerado não modificado para
para fins de comandos futuros que podem sair do editor. POSIX.1‐2008 requer
conformidade com a prática histórica.

A documentação histórica afirma que o correio não foi enviado ao usuário quando o preservar foi
executado; no entanto, implementações históricas enviaram email neste caso. POSIX.1‐2008
requer conformidade com as implementações históricas.

Impressão
A redação do NUL pelo impressão comando não é especificado como um caso especial porque o
os desenvolvedores padrão não queriam exigir ex para oferecer suporte a caracteres NUL. Historicamente,
os caracteres foram exibidos usando os mapeamentos padrão ARPA, que são os seguintes:

1. Os caracteres imprimíveis são deixados sozinhos.

2. Os caracteres de controle menores que \ 177 são representados como '^' seguido pelo personagem
deslocado do '@' caractere no mapa ASCII; por exemplo, \ 007 é representado como
'^ G'.

3. \ 177 é representado como '^' seguido '?'.

A exibição de caracteres com o oitavo conjunto de bits era menos padrão. Existir
as implementações usam hex (0x00), octal (\ 000) e uma exibição de meta-bit. (Esta última
bytes exibidos que tiveram seu oitavo bit definido como os dois caracteres "M−" seguido pelo
display de sete bits, conforme descrito acima.) Este último provavelmente tem a melhor reivindicação de
prática histórica porque foi usada para o −v opção de 4 BSD e 4 derivados de BSD
versões do gato utilidade desde 1980.

Nenhum formato de exibição específico é exigido pelo POSIX.1‐2008.

A dependência explícita do conjunto de caracteres ASCII foi evitada sempre que possível, portanto, o
uso da frase uma `` sequência de vários caracteres definida pela implementação '' para a exibição
de caracteres não imprimíveis em vez do uso histórico de, por exemplo, "^ I"
para o . As implementações são encorajadas a estar em conformidade com a prática histórica no
ausência de qualquer razão forte para divergir.

Historicamente, todos ex comandos que começam com a letra 'p' poderia ser inserido usando
versões dos comandos em letras maiúsculas; por exemplo, Imprimir], Preservar] e Colocar] foram todos
nomes de comando válidos. POSIX.1‐2008 permite, mas não exige, esta prática histórica
porque as formas maiúsculas dos comandos são usadas por algumas implementações para outros fins.

colocar
Historicamente, um ex colocar comando, executado de modo aberto ou visual, era o mesmo que o
modo aberto ou visual P comando, se o buffer foi nomeado e foi cortado em modo de caractere, e
o mesmo que o p comando se o buffer foi nomeado e cortado em modo de linha. Se o sem nome
buffer era a fonte do texto, toda a linha da qual o texto foi tirado foi
geralmente colocar, e o buffer foi tratado como se estivesse no modo de linha, mas foi possível obter
comportamento extremamente anômalo. Além disso, usando o Q comando para mudar para ex modo e
então fazendo um colocar frequentemente resultava em erros também, como anexar texto que foi
não relacionado ao (suposto) conteúdo do buffer. Para consistência e simplicidade de
especificação, POSIX.1‐2008 não permite esses comportamentos. Tudo ex colocar comandos são
necessário para operar em modo de linha, e o conteúdo dos buffers não é alterado por
mudando o modo do editor.

Leia
Historicamente, um ex ler comando executado de modo aberto ou visual, executado em um vazio
arquivo, deixou uma linha vazia como a primeira linha do arquivo. Para consistência e simplicidade de
especificação, POSIX.1‐2008 não permite este comportamento. Historicamente, um ler em aberto
ou o modo visual de um programa deixou o cursor na última linha lida, não na primeira. Por
consistência, POSIX.1‐2008 não permite este comportamento.

Implementações históricas de ex foram incapazes de desfazer ler comandos que lêem do
saída de um programa. Por consistência, POSIX.1‐2008 não permite este comportamento.

Historicamente, o ex e vi mensagem após um sucesso ler or escrever comando especificado
`` caracteres '', não `` bytes ''. POSIX.1‐2008 requer que o número de bytes seja
exibido, não o número de caracteres, porque pode ser difícil em multibyte
implementações para determinar o número de caracteres lidos. Implementações são encorajadas
para esclarecer a mensagem exibida ao usuário.

Historicamente, as leituras não eram permitidas em arquivos diferentes do tipo regular, exceto que FIFO
os arquivos podiam ser lidos (provavelmente apenas porque não existiam quando ex e vi foram
originalmente escrito). Porque o histórico ex avaliadas ler! e ler ! equivalentemente,
não pode haver uma maneira opcional de forçar a leitura. POSIX.1‐2008 permite, mas não
exigem, esse comportamento.

Recuperar
Algumas implementações históricas do editor permitiram que os usuários recuperassem o buffer de edição
conteúdo de uma sessão de edição anterior e, em seguida, saia sem salvar esses conteúdos (ou
descartá-los explicitamente). A intenção de POSIX.1‐2008 em exigir que o buffer de edição
ser tratado como já modificado é para evitar este erro do usuário.

Rebobinar
Implementações históricas apoiaram o rebobinar comando quando o usuário estava editando o
primeiro arquivo da lista; ou seja, o arquivo que o rebobinar comando iria editar. POSIX.1‐2008
requer conformidade com a prática histórica.

Substituto
Historicamente, ex aceitou um r opção para s comando. O efeito do r opção era
use a última expressão regular usada em qualquer comando como o padrão, o mesmo que o ~
comando. o r opção não é exigida por POSIX.1‐2008. Historicamente, o c e g opções
foram alternados; por exemplo, o comando : s / abc / def / era o mesmo que s / abc / def / ccccgggg.
Para simplicidade de especificação, POSIX.1‐2008 não permite este comportamento.

O comando til é freqüentemente usado para substituir a última pesquisa RE. Por exemplo, no
seqüência:

s / vermelho / azul /
/verde
~

que o ~ comando é equivalente a:

s / verde / azul /

Historicamente, ex aceitou todos os seguintes formulários:

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

POSIX.1‐2008 requer conformidade com esta prática histórica.

A s comando presume que o '^' personagem ocupa apenas uma única coluna no
exibição. Muito dos ex e vi especificação presume que o só ocupa um
coluna única no display. Não há conjuntos de caracteres conhecidos para os quais isso não seja
verdadeiro.

Historicamente, a posição final da coluna para os comandos substitutos foi baseada na anterior
movimentos de coluna; uma busca por um padrão seguido por uma substituição deixaria a coluna
posição inalterada, enquanto um comando 0 seguido por uma substituição mudaria a coluna
posição para o primeiro não . Para consistência e simplicidade de especificação,
POSIX.1‐2008 requer que a posição final da coluna seja sempre definida para o primeiro
não- .

Conjunto
As implementações históricas exibiram novamente todas as opções para cada ocorrência do todos os
palavra-chave. POSIX.1‐2008 permite, mas não exige, este comportamento.

etiqueta
Nenhum requisito é feito quanto a onde ex e vi deve procurar o arquivo referenciado pela tag
entrada. A prática histórica tem sido buscar o caminho encontrado no Tag arquivo, com base em
o diretório atual. Uma extensão útil encontrada em algumas implementações é olhar com base
no diretório que contém o arquivo de tags que contém a entrada também. Nenhum requisito é
feita a respeito de qual referência para a tag no arquivo de tags é usada. Isso é deliberado, em
para permitir extensões como várias entradas em um arquivo de tags para uma tag.

Como os usuários costumam especificar muitos arquivos de tags diferentes, alguns dos quais não precisam ser relevantes
ou existir em um determinado momento, POSIX.1‐2008 requer que mensagens de erro sobre o problema
arquivos de tags serão exibidos apenas se a tag solicitada não for encontrada e, então, apenas uma vez para
cada vez que o etiqueta a opção de edição é alterada.

O requisito de que o buffer de edição atual não seja modificado é necessário apenas se o arquivo
indicado pela entrada da tag não é o mesmo que o arquivo atual (conforme definido pelo atual
nome do caminho). Historicamente, o arquivo seria recarregado se o nome do arquivo também tivesse mudado
como se o nome do arquivo fosse diferente do nome do caminho atual. Para consistência e simplicidade
da especificação, POSIX.1‐2008 não permite este comportamento, exigindo que o nome seja
o único fator na decisão.

Historicamente, vi só procurou por tags no arquivo atual do cursor atual para o
final do arquivo e, portanto, se o digitalizar opção não foi definida, tags ocorrendo antes
o cursor atual não foi encontrado. POSIX.1‐2008 considera isso um bug, e implementações
são obrigados a pesquisar a primeira ocorrência no arquivo, independentemente.

desfazer
A desfazer descrição usa deliberadamente a palavra `` modificado ''. O desfazer comando não é
destina-se a desfazer comandos que substituem o conteúdo do buffer de edição, como editar,
Próximo, etiquetaou recuperar.

Posicionamento do cursor após o desfazer comando era inconsistente no histórico vi, as vezes
tentando restaurar a posição original do cursor (global, desfazer e v comandos), e
às vezes, na presença de mapas, colocando o cursor na última linha adicionada ou alterada
em vez do primeiro. POSIX.1‐2008 requer um comportamento simplificado para consistência e
simplicidade de especificação.

Versão
A versão comando não pode ser especificado com exatidão, uma vez que não é amplamente aceito
definição do que a informação da versão deve conter. Implementações são encorajadas
para fazer algo razoavelmente inteligente.

Escreva
Historicamente, o ex e vi mensagem após um sucesso ler or escrever comando especificado
`` caracteres '', não `` bytes ''. POSIX.1‐2008 requer que o número de bytes seja
exibido, não o número de caracteres, porque pode ser difícil em multibyte
implementações para determinar o número de caracteres escritos. Implementações são
encorajados a esclarecer a mensagem exibida ao usuário.

Testes definidos pela implementação são permitidos para que as implementações possam fazer
Verificações; por exemplo, para bloqueios ou horários de modificação de arquivo.

Historicamente, a tentativa de anexar a um arquivo inexistente causava um erro. Foi deixado
não especificado em POSIX.1‐2008 para permitir implementações para permitir que o escrever ter sucesso, para que
as semânticas de apêndice são semelhantes às do histórico csh.

Histórico vi permitiu a gravação de buffers de edição vazios. No entanto, desde o caminho vi tem
sobre como lidar com arquivos `` vazios '' era sempre ter uma linha no buffer de edição, não
importa o que aconteça, ele os escreveu como arquivos de uma única linha vazia. POSIX.1‐2008 não permite
esse comportamento.

Historicamente, ex saída padrão restaurada e erro padrão para seus valores a partir de quando ex
foi chamado, antes que as gravações nos programas fossem executadas. Isso pode atrapalhar o terminal
configuração, bem como ser um problema de segurança para alguns terminais. POSIX.1‐2008 não
permitir isso, exigindo que a saída do programa seja capturada e exibida como se pelo ex
impressão comando.

Adjust Janela
Historicamente, a contagem de linha foi definida para o valor do scroll opção se o tipo
personagem era o fim do arquivo. Este recurso foi quebrado na maioria das implementações históricas longas
atrás, no entanto, e não está documentado em nenhum lugar. Por esta razão, POSIX.1‐2008 é decididamente
em silêncio.

Historicamente, o z comando era -sensível e z + e z - fez coisas diferentes
do que z+ e z− porque o tipo não pode ser distinguido de um sinalizador. (Os comandos z .
e z = eram historicamente inválidos.) POSIX.1‐2008 requer conformidade com este histórico
prática.

Historicamente, o z o comando foi mais longe -sensível em que o contar não pode ser
-delimitado; por exemplo, os comandos z= 5 e z− 5 também eram inválidos. Porque o
contar não é ambíguo em relação ao caractere de tipo ou aos sinalizadores, isso não é
permitido por POSIX.1‐2008.

fuga
Historicamente, ex os comandos de filtro só lêem a saída padrão dos comandos, permitindo
o erro padrão aparece no terminal como de costume. O vi utilitário, no entanto, leia ambos
saída padrão e erro padrão. POSIX.1‐2008 requer o último comportamento para ambos ex
e vi, para consistência.

Shift Esquerdo e Shift Certo
Historicamente, era possível adicionar caracteres de deslocamento para aumentar o efeito do
comando; por exemplo, << outdented (ou >>> recuado) as linhas 3 níveis de recuo
em vez do padrão 1. POSIX.1‐2008 requer conformidade com a prática histórica.

‐D
Historicamente, o O comando ‐D apagou o prompt, fornecendo ao usuário um
apresentação ininterrupta de linhas do buffer de edição. Isso não é exigido por POSIX.1‐2008;
implementações são encorajadas a fornecê-lo, se possível. Historicamente, o ‐D
comando pegou, e então ignorou, um contar. POSIX.1‐2008 não permite este comportamento.

Escreva Line Sessão
Historicamente, o ex = comando, quando executado em ex modo em um buffer de edição vazio, relatado
0, e do modo aberto ou visual, relatou 1. Para consistência e simplicidade de
especificação, POSIX.1‐2008 não permite este comportamento.

Execute
Historicamente, ex não tratou corretamente a inclusão de comandos de entrada de texto (ou seja,
anexar, inserir e alterar) em buffers executados. POSIX.1‐2008 não permite isso
exclusão para consistência.

Historicamente, o conteúdo lógico do buffer em execução não mudou se o
o próprio buffer foi modificado pelos comandos sendo executados; ou seja, a execução do buffer
não oferece suporte a código de modificação automática. POSIX.1‐2008 requer conformidade com a prática histórica.

Historicamente, o @ comando tomou um intervalo de linhas, e o @ buffer foi executado uma vez por
linha, com a linha atual ('.') definido para cada linha especificada. POSIX.1‐2008 requer
conformidade com a prática histórica.

Algumas implementações históricas não perceberam se ocorreram erros durante a execução do buffer.
Isso, juntamente com a capacidade de especificar um intervalo de linhas para o ex @ comando, faz isso
trivial fazer com que eles caiam core. POSIX.1‐2008 requer que as implementações parem
execução do buffer se ocorrer algum erro, se a linha especificada não existir ou se o
o conteúdo do próprio buffer de edição é substituído (por exemplo, o buffer executa o ex
edit: comando).

Regular Expressões in ex
A prática histórica é que os personagens na parte de substituição do último s comando-
ou seja, aqueles combinados inserindo um '~' na expressão regular - não eram mais
expandido pelo mecanismo de expressão regular. Então, se os caracteres contiverem a string
"uma.," eles iriam combinar 'uma' seguido ".," e não 'uma' seguido por qualquer caractere.
POSIX.1‐2008 requer conformidade com a prática histórica.

Editar Opções in ex
Os parágrafos a seguir descrevem o comportamento histórico de algumas opções de edição que foram
não, por qualquer motivo, incluído em POSIX.1‐2008. Implementações são fortemente
encorajados a usar esses nomes apenas se a funcionalidade descrita aqui for totalmente suportada.

opção A opção opção de edição foi usada em algumas implementações de vi para fornecer
expressões regulares estendidas em vez de expressões regulares básicas Esta opção
foi omitido de POSIX.1‐2008 porque não é uma prática histórica generalizada.

chamada de conferência A chamada de conferência opção de edição historicamente fazia com que a tela piscasse em vez de apitar
em erro. Esta opção foi omitida de POSIX.1‐2008 porque não foi encontrada em
algumas implementações históricas.

hardtabs A hardtabs opção de edição historicamente definiu o número de colunas entre
configurações da guia de hardware. Esta opção foi omitida de POSIX.1‐2008 porque era
acredita-se que não seja mais útil em geral.

modelo A modelo (às vezes chamado modelos) opção de edição causada historicamente ex or
vi para ler as cinco primeiras e últimas linhas do arquivo para comandos do editor. Isto
opção é um problema de segurança, e os fornecedores são fortemente encorajados a excluí-la
de implementações históricas.

aberto A aberto opção de edição historicamente não permitia o ex aberto e visual comandos.
Esta opção de edição foi omitida porque esses comandos são exigidos por
POSIX.1-2008.

otimizar A otimizar opção de edição historicamente acelerou a taxa de transferência de texto, definindo o
terminal para não fazer automático caracteres ao imprimir mais
de uma linha lógica de saída. Esta opção foi omitida em POSIX.1‐2008
porque foi projetado para terminais sem cursores endereçáveis, que são
raramente, ou nunca, ainda é usado.

régua A régua opção de edição foi usada em algumas implementações de vi apresentar um
régua de linha / coluna atual para o usuário. Esta opção foi omitida em POSIX.1‐2008
porque não é uma prática histórica generalizada.

fonte de qualquer coisa A fonte de qualquer coisa opção de edição causada historicamente ex or vi para originar arquivos de inicialização
que pertenciam a outros usuários que não o usuário que estava executando o editor. Esta opção é
um problema de segurança, e os fornecedores são fortemente encorajados a removê-lo de seus
implementações.

tempo limite A tempo limite opção de edição historicamente habilitou o recurso (agora padrão) de apenas
aguardar um breve período antes de retornar as chaves que poderiam fazer parte de uma macro.
Este recurso foi omitido de POSIX.1‐2008 porque seu comportamento agora é padrão,
não é muito útil e raramente foi documentado.

detalhado A detalhado opção de edição foi usada em algumas implementações de vi causar vi
para enviar mensagens de erro para erros comuns; por exemplo, tentar mover o
cursor além do início ou fim da linha em vez de apenas alertar o
tela. (O histórico vi apenas alertou o terminal e não apresentou mensagem
para esses erros. A opção do editor histórico conciso não selecionou quando
apresentar mensagens de erro, só tornou as mensagens de erro existentes mais ou menos
detalhado.) Esta opção foi omitida de POSIX.1‐2008 porque não é generalizada
prática histórica; no entanto, os implementadores são encorajados a usá-lo se desejarem
para fornecer mensagens de erro para usuários ingênuos.

embrulhar A embrulhar opção de edição foi usada em algumas implementações de vi especificar
uma margem automática medida a partir da margem esquerda em vez da direita
margem. Isso é útil quando vários tamanhos de tela estão sendo usados ​​para editar um
único arquivo. Esta opção foi omitida de POSIX.1‐2008 porque não é
prática histórica generalizada; no entanto, os implementadores são encorajados a usá-lo
se eles adicionarem esta funcionalidade.

autoindentação, ai
Historicamente, o comando 0a não fez qualquer autoindentação, independentemente do atual
recuo da linha 1. POSIX.1‐2008 requer que qualquer recuo presente na linha 1 seja
usava.

impressão automática, ap
Historicamente, o impressão automática opção de edição não era completamente consistente ou baseada apenas em
modificações no buffer de edição. As exceções foram os ler comando (ao ler de um
arquivo, mas não de um filtro), o anexar, alterar, inserir, global e v comandos, todos de
que não foram afetados por impressão automática, e as etiqueta comando, que foi afetado por
impressão automática. POSIX.1‐2008 requer conformidade com a prática histórica.

Historicamente, o impressão automática opção aplicada apenas ao último de vários comandos inseridos
usando delimitadores; por exemplo, excluir foi afetado por impressão automática,
mas a deletar | versão não foi. POSIX.1‐2008 requer conformidade com o histórico
prática.

escrita automática, aw
Anexando o '!' personagem para o ex Próximo comando para evitar a realização de uma gravação automática
não era suportado em implementações históricas. POSIX.1‐2008 requer que o comportamento
combinar o outro ex comandos para consistência.

ignorar caso, ic
Implementações históricas de correspondência sem distinção entre maiúsculas e minúsculas (o ignorar caso editar opção) lead
para situações contra-intuitivas quando caracteres maiúsculos foram usados ​​em expressões de intervalo.
Historicamente, o processo era o seguinte:

1. Pegue uma linha de texto do buffer de edição.

2. Converta letras maiúsculas em minúsculas na linha de texto.

3. Converta maiúsculas em minúsculas em expressões regulares, exceto na classe de caracteres
especificações.

4. Compare as expressões regulares com o texto.

Isso significaria que, com ignorar caso na verdade, o texto:

A gato sáb. on que o esteira

seria correspondido por

/ ^ o /

mas não por:

/ ^ [A-Z] ele /

Para consistência com outros comandos que implementam expressões regulares, POSIX.1‐2008 faz
não permitir este comportamento.

parágrafos, para
O padrão ISO POSIX ‐ 2: 1993 tornou-se o padrão parágrafos e seções editar opções
definidas pela implementação, argumentando que eram historicamente orientadas para o sistema UNIX troff
formatador de texto, e um `` usuário portátil '' poderia usar o {, }, [[, ]], ( e ) comandos em
modo aberto ou visual e faz com que o cursor pare em locais inesperados. POSIX.1‐2008 especifica
seus valores na localidade POSIX porque o agrupamento incomum (eles só funcionam quando agrupados
em dois caracteres por vez) significa que eles não podem ser usados ​​para fins gerais
movimento, independentemente.

somente leitura
As implementações são encorajadas a fornecer as melhores informações possíveis ao usuário quanto a
o status somente leitura do arquivo, com a exceção de que eles não devem considerar o
privilégios especiais atuais do processo. Isso fornece aos usuários uma rede de segurança porque
eles devem forçar a substituição de arquivos somente leitura, mesmo quando executados com
privilégios.

A somente leitura a especificação da opção de edição está de acordo com a prática histórica. O único
diferença é que as implementações históricas não perceberam que o usuário definiu o
somente leitura opção de edição nos casos em que o arquivo já foi marcado como somente leitura por algum motivo,
e, portanto, reinicializaria o somente leitura opção de edição da próxima vez que o conteúdo de
o buffer de edição foi substituído. Este comportamento não é permitido por POSIX.1‐2008.

Denunciar
O requisito de que as linhas copiadas para um buffer interajam de maneira diferente das linhas excluídas é
prática histórica. Por exemplo, se o Denunciar a opção de edição está definida para 3, excluindo 3 linhas
fará com que um relatório seja escrito, mas 4 linhas devem ser copiadas antes de um relatório ser escrito.

O requisito de que ex global, v, aberto, desfazer e visual comandos apresentam relatórios
com base no número total de linhas adicionadas ou excluídas durante a execução do comando, e que
comandos executados pelo global e v comandos não apresentam relatórios, é histórico
prática. O POSIX.1‐2008 estende a prática histórica exigindo que a execução do buffer seja
tratados da mesma forma. As razões para isso são duplas. Historicamente, apenas o relatório do
último comando executado a partir do buffer seria visto pelo usuário, pois cada novo relatório
substituir o último. Além disso, os desenvolvedores padrão acreditavam que a execução do buffer
tinha mais em comum com global e v comandos do que fez com outros ex comandos, e
deve se comportar de forma semelhante, para consistência e simplicidade de especificação.

showmatch, sm
O período de tempo que o cursor passa no caractere correspondente não é especificado porque o
as capacidades de temporização dos sistemas são muitas vezes inexatas e variáveis. O tempo deve ser longo
o suficiente para que o usuário perceba, mas não o suficiente para que o usuário fique irritado. Algum
implementações de vi adicionou um hora do jogo opção que permite aos usuários definir o número
de intervalos de 0,1 segundo o cursor pausa no caractere correspondente.

modo de exibição
A modo de exibição opção tem sido usada em algumas implementações históricas de ex e vi para
exibir o modo de edição atual quando em modo aberto ou visual. Os modos de edição têm
geralmente inclui ``command'' e ``input'', e algumas vezes outros modos como
``substituir'' e ``alterar''. A string geralmente era exibida na linha inferior do
tela no canto direito. Além disso, um antecedente '*' personagem frequentemente denotado
se o conteúdo do buffer de edição foi modificado. A última exibição tem
às vezes fazia parte modo de exibição opção e, às vezes, com base em outra opção. Isto
opção não estava disponível na implementação histórica do 4 BSD vi, mas era visto como
geralmente útil, particularmente para usuários iniciantes, e é exigido pelo POSIX.1‐2008.

A SMD taquigrafia para o modo de exibição opção não estava presente em todas as
implementações do editor. O POSIX.1‐2008 exige isso, para consistência.

Nem todas as implementações históricas do editor exibiram uma string de modo para o modo de comando,
diferenciando o modo de comando do modo de entrada de texto pela ausência de uma string de modo.
POSIX.1‐2008 permite esse comportamento para consistência com a prática histórica, mas
implementações são encorajadas a fornecer uma string de exibição para ambos os modos.

abrandar
Historicamente, o abrandar opção foi definida automaticamente se a taxa de transmissão do terminal fosse menor
de 1200 bauds, ou se a taxa de bauds foi de 1200 bauds e o redesenhar opção não foi definida. O
abrandar opção teve dois efeitos. Primeiro, ao inserir caracteres no meio de uma linha,
caracteres após o cursor não seriam empurrados para frente, mas pareceriam sobrescritos.
Segundo, ao criar uma nova linha de texto, as linhas após a linha atual não seriam
rolado para baixo, mas parece ser sobrescrito. Em ambos os casos, encerrar o modo de entrada de texto
faria com que a tela fosse atualizada para corresponder ao conteúdo real do buffer de edição.
Finalmente, terminais suficientemente inteligentes fizeram com que o editor ignorasse a
abrandar opção. POSIX.1-2008 permite a maioria dos comportamentos históricos, estendendo
prática para exigir abrandar comportamentos se a opção de edição for definida pelo usuário.

Tag
O caminho padrão para arquivos de tags não é especificado, pois as implementações podem ter seus próprios
Tag implementações que não correspondem às históricas. O padrão Tag
o valor da opção provavelmente deve incluir pelo menos o arquivo ./Tag.

prazo
Implementações históricas de ex e vi ignorou as alterações do prazo opção de edição após o
as informações iniciais do terminal foram carregadas. Isso é permitido pelo POSIX.1‐2008; Contudo,
implementações são encorajadas a permitir que o usuário modifique seu tipo de terminal em qualquer
tempo.

conciso
Historicamente, o conciso opção de edição opcionalmente forneceu um erro mais curto e menos descritivo
mensagem, para algumas mensagens de erro. Isso é permitido, mas não obrigatório, pelo POSIX.1‐2008.
Historicamente, os erros de modo visual mais comuns (por exemplo, tentar mover o cursor
o final de uma linha) não resultou em uma mensagem de erro, mas simplesmente alertou o terminal.
Implementações que desejam fornecer mensagens para usuários iniciantes são instadas a fazê-lo com base em
que o editar opção detalhado, e não conciso.

janela
Em implementações históricas, o padrão para o janela opção de edição foi baseada no
taxa de transmissão da seguinte forma:

1. Se a taxa de transmissão for inferior a 1200, o editar opção w300 defina o valor da janela; por
exemplo, a linha:

conjunto w300=12

definiria a opção de janela para 12 se a taxa de transmissão fosse menor que 1200.

2. Se a taxa de transmissão for igual a 1200, o editar opção w1200 defina o valor da janela.

3. Se a taxa de transmissão for maior que 1200, o editar opção w9600 defina o valor da janela.

A w300, w1200 e w9600 opções não aparecem no POSIX.1‐2008 devido à sua
dependência de taxas de transmissão específicas.

Em implementações históricas, o tamanho da janela exibida por vários comandos era
relacionado, mas não necessariamente o mesmo que, janela opção de edição. Por exemplo, o tamanho
da janela foi definido pelo ex comando visual 10, mas não alterou o valor da
janela opção de edição. No entanto, alterando o valor do janela opção de edição mudou o
número de linhas que foram exibidas quando a tela foi repintada. POSIX.1-2008 não
permitir esse comportamento no interesse da consistência e simplicidade de especificação, e
requer que todos os comandos que alteram o número de linhas exibidas o façam por
definindo o valor do janela opção de edição.

margem de envoltório, wm
Historicamente, o margem de envoltório opção não afetou mapas inserindo caracteres que também tinham
associado contars; por exemplo :mapa K 5aABC DEF. Infelizmente, são amplamente utilizados
mapas que dependem desse comportamento. Para consistência e simplicidade de especificação,
POSIX.1‐2008 não permite este comportamento.

Historicamente, margem de envoltório foi calculado usando a largura de exibição da coluna de todos os caracteres
na tela. Por exemplo, uma implementação usando "^ I" representar personagens
quando o Lista opção de edição foi definida, onde '^' e 'EU' cada um ocupava uma única coluna no
tela, calcularia o margem de envoltório com base em um valor de 2 para cada . O número
A opção de edição também alterou o comprimento efetivo da linha. POSIX.1-2008
requer conformidade com a prática histórica.

Versões anteriores deste padrão permitiam implementações com bytes diferentes de oito
bits, mas isso foi modificado nesta versão.

FUTURO INSTRUÇÕES


Nenhum.

Use exposix online usando os serviços onworks.net


Servidores e estações de trabalho gratuitos

Baixar aplicativos Windows e Linux

  • 1
    Phaser
    Phaser
    Phaser é um aplicativo rápido, gratuito e divertido
    framework de jogo HTML5 de origem que oferece
    Renderização WebGL e Canvas em
    navegadores da web para desktop e celular. Jogos
    pode ser co ...
    Baixar Phaser
  • 2
    Motor VASSAL
    Motor VASSAL
    VASSAL é um motor de jogo para criar
    versões eletrônicas do tabuleiro tradicional
    e jogos de cartas. Ele fornece suporte para
    renderização e interação de peças do jogo,
    e ...
    Baixar VASSAL Engine
  • 3
    OpenPDF - Fork do iText
    OpenPDF - Fork do iText
    OpenPDF é uma biblioteca Java para criar
    e edição de arquivos PDF com LGPL e
    Licença de código aberto MPL. OpenPDF é o
    LGPL/MPL sucessor de código aberto do iText,
    um ...
    Baixar OpenPDF - Bifurcação do iText
  • 4
    SAGA GIS
    SAGA GIS
    SAGA - Sistema para Automatizado
    Análises geocientíficas - é um geográfico
    Software de Sistema de Informação (GIS) com
    imensas capacidades para geodados
    processando e ana ...
    Baixar SAGA GIS
  • 5
    Caixa de ferramentas para Java / JTOpen
    Caixa de ferramentas para Java / JTOpen
    O IBM Toolbox for Java / JTOpen é um
    biblioteca de classes Java suportando o
    programação cliente/servidor e internet
    modelos para um sistema rodando OS/400,
    i5/OS, ou...
    Baixar Toolbox para Java/JTOpen
  • 6
    D3.js
    D3.js
    D3.js (ou D3 para documentos baseados em dados)
    é uma biblioteca JavaScript que permite
    para produzir dados dinâmicos e interativos
    visualizações em navegadores da web. Com D3
    você...
    Baixar D3.js
  • Mais "

Comandos Linux

  • 1
    Abidiff
    Abidiff
    abidiff - comparar ABIs de arquivos ELF
    abidiff compara o aplicativo binário
    Interfaces (ABI) de duas bibliotecas compartilhadas
    em formato ELF. Ele emite um significativo
    relatorio ...
    Executar abidiff
  • 2
    abidw
    abidw
    abidw - serializar o ABI de um ELF
    arquivo abidw lê uma biblioteca compartilhada em ELF
    formato e emite uma representação XML
    de seu ABI para a saída padrão. O
    emitido ...
    Execute abidw
  • 3
    copac2xml
    copac2xml
    bibutils - conversão de bibliografia
    Serviços de utilidade pública ...
    Execute copac2xml
  • 4
    copta
    copta
    copt - otimizador de olho mágico SYSNOPIS:
    copt.. DESCRIÇÃO: copt é um
    otimizador de olho mágico de uso geral. Isto
    lê o código de sua entrada padrão e
    escreve um...
    Executar copia
  • 5
    collect_stx_titles
    collect_stx_titles
    collect_stx_titles - reunir título
    declarações de documentos Stx ...
    Executar collect_stx_titles
  • 6
    banco giratório
    banco giratório
    bancada - benchmark http ...
    Executar gatling-bench
  • Mais "

Ad