fbpx

Comandos Linux – Comando vi

Comando Linux vi

comando vi

Nos sistemas operacionais do tipo Unix, o vi (pronuncia-se “vee-eye”) é um editor de texto.

Descrição

O comando vi inicia o modo visual do ex , o programa de edição de pontos de referência desenvolvido por William Joy no final da década de 1970. À medida que o ex ganhava popularidade, Joy percebeu que a maioria dos usuários estava usando exclusivamente o modo visual. Assim, para tornar as coisas mais convenientes para ele, ele adicionou um link ao ex que o iniciou no modo visual automaticamente. Hoje o vi é o editor de texto mais popular entre os usuários de Linux .

Uma implementação mais rica em recursos do vi chamada vim (que significa “vi melhorado”) também está disponível. Para mais informações, consulte a documentação do vim .

Sintaxe

vi [- | -s] [-l] [-L] [-R] [-r [ nome do arquivo ]] [-S] [-t tag ] [-v] [-V]Comando 
   [-x] [-w] [-n] [-C] [+ | -c command ] nome do arquivo

Opções

 | -sSuprimir todos os comentários interativos do usuário. Isso é útil ao processar scripts do editor .
-euConfigure para editar programas LISP .
-rListe o nome de todos os arquivos salvos como resultado de uma falha no editor ou no sistema.
-r nome do arquivoEdite o nome do arquivo após uma falha do editor ou do sistema. Recupera a versão do nome do arquivo que estava no buffer quando a falha ocorreu.
-EUO mesmo que -r
-RModo somente leitura ; o sinalizador somente leitura está definido, impedindo a substituição acidental do arquivo.
-SEsta opção é usada em conjunto com o -t opção tag para contar vi que o arquivo de tags não podem ser classificados e que, se a busca binária (que se baseia em um arquivo de tags classificadas) para tag não consegue encontrá-lo, o linear muito mais lento a pesquisa também deve ser feita. Como a pesquisa linear é lenta, os usuários de arquivos grandes de tags devem garantir que os arquivos de tags sejam classificados em vez de usar esse sinalizador. A criação de arquivos de tags normalmente produz arquivos de tags classificados. Veja ctags para mais informações sobre arquivos de tags.
-t tagEdite o arquivo que contém a tag tag e posicione o editor em sua definição.
-VModo verboso . Quando os comandos ex são lidos por meio da entrada padrão , a entrada será repetida para erro padrão. Isso pode ser útil ao processar comandos ex em scripts de shell.
-xOpção de criptografia ; quando usado, o vi simula o comando X de ex e solicita ao usuário uma chave. Essa chave é usada para criptografar e descriptografar texto usando o algoritmo da função de criptografia . O comando X faz um palpite para determinar se a leitura de texto é criptografada ou não. O arquivo temporário do buffer também é criptografado, usando uma versão transformada da chave digitada para a opção -x . Se uma chave de criptografia vazia for inserida (ou seja, se a tecla de retorno for pressionada logo após o prompt), o arquivo não será criptografado. Essa é uma boa maneira de descriptografar um arquivo criptografado incorretamente com uma chave de criptografia incorreta, como um backspace ou desfazer uma chave.
-w nDefina o tamanho da janela padrão como n . Isso é útil ao usar o editor em uma linha de velocidade lenta.
-COpção de criptografia; igual à opção -x , exceto que vi simula o comando C de ex . O comando C é como o comando X do ex , exceto que todo o texto lido é assumido como criptografado.
comando | comando -cComece a editar executando o comando do editor especificado (geralmente um comando de pesquisa ou posicionamento).
nome do arquivoO arquivo a ser editado.

Usando Vi

O vi é um editor de texto interativo orientado a exibição : a tela do seu terminal atua como uma janela no arquivo que você está editando. As alterações feitas no arquivo são refletidas no que você vê.

Usando o vi, você pode inserir texto em qualquer lugar do arquivo com muita facilidade. A maioria dos comandos do vi move o cursor no arquivo. Você pode mover o cursor para frente e para trás em unidades de caracteres, palavras, frases e parágrafos. Alguns operadores, como d para exclusão e c para mudança, podem ser combinados com os comandos de movimento para fazê-los operar em palavras inteiras, parágrafos etc., de maneira natural.

Editando um arquivo

A maneira mais comum de iniciar uma sessão do vi é dizer qual arquivo editar. Para editar um arquivo chamado filename , use o comando:

vi nome do arquivo

A tela será limpa e o texto do seu arquivo aparecerá na tela. Se o nome do arquivo ainda não existir, o vi iniciará você em um novo arquivo e, quando você pedir para salvar seu trabalho, ele usará o nome de arquivo que você especificou.

Cópia do Editor: O “Buffer”

O editor não modifica diretamente o arquivo que você está editando. Em vez disso, ele faz uma cópia desse arquivo na memória chamada buffer . Na verdade, você não afeta o conteúdo do arquivo até gravar as alterações feitas no arquivo original.

Teclas de seta

Na maioria dos terminais, você pode usar as teclas de seta para mover o cursor. Esquerda e direita move o cursor para a esquerda ou direita, um caractere e para cima e para baixo movem o cursor para cima ou para baixo uma linha. A outra maneira de mover o cursor é com as teclas h , j , k e l :

hesquerda
jbaixa
kacima
eudireito

Um pouco de curiosidades históricas: as teclas hjkl são usadas porque o sistema de computador original com o qual Bill Joy desenvolveu não tinha teclas de seta separadas. Em vez disso, o teclado usava as teclas hjkl como as teclas de seta.

Os usuários do Hardcore vi dirão que as teclas hjkl são a única maneira “verdadeira” de mover o cursor, pois você pode manter as mãos na posição de digitação, mas deve usar o que for melhor para você.

Teclas especiais: Esc, Return e Delete

A tecla Escape é importante no vi : é usada para cancelar qualquer comando que você começou a digitar e para retornar ao modo de comando depois de inserir ou adicionar texto. Escape é uma chave segura a ser atingida, se você perdeu o controle do modo em que está ou o que está fazendo. Você pode pressioná-lo várias vezes para retornar ao modo de comando e cancelar tudo o que estiver fazendo.

A tecla Return (ou “Enter”) é usada para concluir determinados comandos e executá-los.

A tecla Delete é outra tecla “segura” para pressionar. Ele interrompe tudo o que o editor está fazendo e o leva de volta ao estado padrão do editor, às vezes também chamado de estado “inativo”.

Saindo vi

O comando ZZ gravará o conteúdo do buffer no arquivo que você está editando e sairá do vi .

Se não houver alterações a serem salvas, você também pode sair do editor com o comando : q . Se você fez alterações que ainda não foram salvas, o editor não permitirá que você saia dessa maneira.

Se você deseja sair e descartar as alterações feitas, pode informar ao editor que tem certeza de que sabe o que está fazendo ao sair com o comando : q! . Isso sairá do vi imediatamente e quaisquer alterações não salvas serão perdidas.

Movendo-se em seu arquivo

Rolagem e paginação

O editor possui vários comandos para se movimentar dentro do seu arquivo. Um dos mais úteis é o Control-D (também representado como ^ D ). Este comando “rola” para baixo no arquivo (o D significa “para baixo”). ^ U (“para cima”) é semelhante: rola uma página para cima no arquivo. Esses dois comandos também moverão o cursor para o novo local.

Se você quiser apenas ver mais do arquivo, mas deixar o cursor onde está, use ^ E para “expor” mais uma linha na parte inferior da tela. ^ Y (que não significa nada, mas fica ao lado do U no teclado) expõe uma linha na parte superior da tela.

Existem outras maneiras de se mover no arquivo. As teclas ^ F e ^ B avançam e retrocedem uma página (isso é chamado de “paginação”), mantendo algumas linhas de continuidade entre as telas, para que seja possível ler um arquivo usando estas em vez de ^ D e ^ U se você desejar.

Observe a diferença entre “rolagem” ( ^ U , ^ D ) e “paginação” ( ^ B , ^ F ). A rolagem deixa mais contexto, mas a paginação deixa apenas algumas linhas. Depende de você qual é mais fácil para mover e ler seu arquivo.

Procurando

Outra maneira de se posicionar no arquivo é dando ao editor uma string para pesquisar. Se você digitar ” / ” seguido de uma sequência de caracteres e pressionar Enter, o editor procurará a próxima ocorrência dessa sequência no seu arquivo e posicionará o cursor lá. Pressionar n passará para a próxima ocorrência depois disso.

Se, em vez de encaminhar, você deseja pesquisar uma string para trás, use em vez de / . Em um busca de cadeia, pressionar n levará a ocorrências sucessivas na mesma direção (para trás).

Se a sequência de pesquisa que você fornecer ao editor não estiver presente no arquivo, o editor imprimirá uma mensagem informando que não foi possível encontrá-lo e o cursor não será movido.

Se você deseja que sua string de pesquisa corresponda apenas no início de uma linha, inicie a string de pesquisa com um sinal de intercalação (” ^ “). Para corresponder apenas no final de uma linha, termine a sequência de caracteres de pesquisa com um cifrão (” $ “). Então, usando o comando

/ ^ mystring

só encontrará uma correspondência se ” mystring ” estiver no início de uma linha. Da mesma forma, o comando

/ mystring $

corresponderá apenas a quaisquer ocorrências de ” mystring ” que estejam no final de uma linha.

“Ir para” – ing

O comando G , quando precedido por um número, “saltará” para uma linha: irá para esse número de linha e posicionará o cursor ali. Se você usar G sem número, ele moverá o cursor para a última linha do arquivo.

Então, usando o comando

1G

Move o cursor para a primeira linha do arquivo;

30G

Move o cursor para a linha 30 e

G

Move o cursor para a última linha, qualquer que seja o número.

Descobrindo onde você está no arquivo

Você pode descobrir onde você está no arquivo pressionando ^ G . Este peitoril mostra o nome do arquivo que você está editando, o número da linha atual, o número de linhas no buffer e a porcentagem do caminho no buffer em que seu cursor está atualmente.

Voltando para onde você estava

Sempre que você mover o cursor de qualquer uma dessas maneiras, você pode mover o cursor de volta para onde estava, digitando  (duas aspas ). Então, se você digitar

G

para ir para o final do arquivo, mas você percebe que precisa voltar para onde estava (se lembra onde é ou não), pode digitar

``

Para voltar ao seu local original. Isso também funciona após a realização de uma pesquisa. Lembre-se deste comando, porque é muito útil!

Linhas após o final do seu arquivo

Se você estiver próximo do final do seu arquivo e a última linha não estiver na parte inferior da tela, o vi imprimirá um til (” ~ “) em todas as linhas após o final do seu arquivo real. Isso indica que a última linha do seu arquivo está na tela; isto é, qualquer linha que mostre ” ~ ” já passou do final do seu arquivo. Você notará isso, por exemplo, quando começar a editar um novo arquivo: cada linha começará com um til.

Movendo-se na tela

Como já mencionamos, você pode usar as teclas de seta ou h , j , k e l para mover o cursor para a esquerda e para a direita, ou para cima e para baixo em uma linha.

Você também pode usar + para ir para a próxima linha ou  para ir para a linha anterior. É semelhante ao uso para cima e para baixo ( ouj e k ), exceto que o cursor será automaticamente colocado no primeiro caractere que não seja um espaço em branco na linha.

Qualquer uma dessas teclas, se elas o levarem antes da primeira linha na tela ou após a última linha, rolarão a exibição uma linha na direção correta. Pressionar a tecla Return é o mesmo que pressionar + . Você também pode posicionar o cursor na parte superior, média ou inferior da tela de texto exibida no momento:

H o levará para a linha superior (“inicial”) na tela. Preceder H com um número o levará à linha inicial mais esse número de linhas. Por exemplo, 3H move o cursor para a terceira linha de texto exibida na tela.

M é um comando semelhante: move o cursor para o meio da tela.

L move o cursor para a última linha da tela. Se você o preceder com um número, ele moverá o cursor para esse número de linhas antes da última linha exibida. Então 5L move o cursor para a quinta a última linha atualmente exibida.

Movendo-se dentro de uma linha

w avançará o cursor para a próxima palavra na linha eb voltará o cursor para a palavra anterior.

e você avança para o final da palavra atual e não para o início da palavra seguinte.

Se as palavras são pontuados, por exemplo, com um apóstrofo ou uma vírgula, w e b vai parar na pontuação. Se você usar W e B , eles movem o cursor enquanto ignoram a pontuação.

Todos esses comandos são agrupados no final (ou no início) de uma linha, passando para a linha anterior ou seguinte, se a pesquisa da palavra seguinte ou anterior for tão longe.

Resumo: Teclas de Movimento

Aqui está um resumo das teclas de movimento que acabamos de discutir, e alguns extras.

Barra de espaçoavançar o cursor uma posição
^ Bpágina para trás
^ Drolar para baixo
^ Eexpor uma linha na parte inferior da tela
^ Fpágina para a frente
^ GVerificação de status posicional
^ Npróxima linha, mesma coluna
^ Plinha anterior, mesma coluna
^ Urolar para cima
^ Yexpor uma linha na parte superior da tela
+próxima linha, no primeiro caractere que não é um espaço em branco
linha anterior, no primeiro caractere sem espaço em branco
stringAvança para a corda . Se nenhuma sequência for especificada, procura a última sequência examinada.
?Digitalize para trás em busca de sequência . Se nenhuma sequência for especificada, procura a última sequência examinada.
Bpara trás uma palavra, ignorando a pontuação
roupa de cama GVá para o número da roupa especificado (um número inteiro ). O padrão é a última linha.
Hmover o cursor para a primeira linha da tela
Mlinha do meio da tela
euúltima linha da tela
Wencaminhar uma palavra, ignorando a pontuação
bpara trás uma palavra
efim da palavra atual
npróxima instância de / ou padrão de pesquisa
Wpróxima palavra

Fazendo alterações simples

O comando mais básico para fazer alterações no seu arquivo é o comando i (inserir). Depois de digitar i , tudo o que você digita até pressionar Esc é inserido na posição do cursor no buffer.

O companheiro do i comando é o um comando ( “acréscimo”). Isso funciona exatamente como i , exceto que ele começa a inserir o texto após a localização do cursor, não na localização do cursor.

Às vezes, você deseja começar a editar uma nova linha logo após a linha em que o cursor está. Para fazer isso, use o comando o . Para iniciar uma nova linha antes da linha em que está o cursor, use o comando Assim como i e a , qualquer texto digitado será inserido no buffer até que você pressione Esc .

Enquanto estiver inserindo texto com qualquer um desses comandos, você pode usar ^ W para apagar uma palavra inteira e deixar o cursor um espaço após a palavra anterior

Uma coisa a observar é que, quando você retrocede, não apaga nenhum caractere que não tenha inserido. Além disso, você não pode retroceder para a linha anterior; o backspacing será interrompido quando você chegar ao início da linha atual.

Fazendo pequenas correções

É fácil fazer pequenas correções no vi . Se você precisar remover um caractere que não deveria estar lá, mova o cursor sobre ele e pressione x para excluí-lo. Você também pode fornecer um número antes de pressionar x , e ele excluirá muitos caracteres. Portanto, se você tem a palavra ” descoberta ” e move o cursor sobre ve digita

4x

… você ficará com a palavra ” disco “.

Se você deseja substituir um único caractere por outro, mova o cursor sobre ele e pressione re, em seguida, o caractere que deve substituí-lo. Então, se você digitar ” mistoke “, mova o cursor sobre o ” o ” e digite

ra

… o o será substituído por um a , deixando você com a palavra ” erro “.

O comando R é semelhante, mas você pode usá-lo para substituir mais de um caractere; se você pressionar R e começar a digitar, todos os caracteres digitados substituirão todos os que já estavam lá. Portanto, se você tiver a palavra ” erro ” e mover o cursor sobre a letra te digite

Rsile

… você verá que a palavra ” erro ” se transformou na palavra ” míssil “. Você também pode perceber que, se você retroceder neste modo, seu texto original será restaurado, letra por letra. Quando terminar, pressione Esc para parar de substituir caracteres.

Operadores

O comando d atua como um operador de exclusão : pressionar d e, em seguida, uma tecla de movimento excluirá onde quer que o cursor se mova. Por exemplo, digitar dw excluirá a próxima palavra e digitar db excluirá a palavra anterior. Digitar d ESPAÇO excluirá um caractere; é o mesmo que digitar x .

Outro operador útil é c , que significa mudança . O comando cw mudará uma única palavra: excluirá tudo até o final de uma palavra e o colocará no modo de inserção para digitar o texto que deve substituí-lo.

Repetindo uma alteração

Sempre que você fizer uma alteração com um comando, digite ” . ” Para repetir a alteração. Portanto, se você excluir uma palavra com dw , digite excluirá a próxima palavra também. Você pode repetir isso repetidamente digitando várias vezes, como reticências (”  “).

Operando em linhas

Digitar dd excluirá uma linha inteira.

Digitar cc mudará uma linha inteira, excluindo-a e colocando-o no modo de inserção.

Você pode excluir ou alterar mais de uma linha por vez precedendo dd ou cc com um número. Por exemplo, 5dd excluirá 5 linhas. Você também pode atribuir um comando como dL, que excluirá todas as linhas do cursor até a última linha e inclusive a última linha na tela, ou d3L, que excluirá todas as linhas do cursor até a terceira a última linha. Quando você faz grandes alterações como essa, especialmente se você faz alterações que vão além do que você pode ver em uma tela, o editor envia uma mensagem informando o que foi feito.

Desfazendo

Para desfazer a última alteração, digite u . Para refazer (desfazer um desfazer), digite u novamente.

Ao contrário do vim , o vi oferece apenas um nível de desfazer. No entanto, você pode usar U (capital U) para desfazer as alterações feitas na linha atual; pressionar U restaura a linha atual da maneira que era antes de você começar a alterá-la.

Resumo: Fazendo alterações

ESPAÇOavançar o cursor uma posição
^ Wapagar uma palavra durante a inserção
.repete o último comando de alteração
Oabre e insere uma nova linha, acima da linha atual
vocêdesfaz as alterações feitas na linha atual
umaanexa texto após o cursor
caltera o objeto especificado para o texto digitado após
dexclui o objeto que você especificar
Euinsere texto antes do cursor
oabre e insere novas linhas, abaixo da linha atual
vocêdesfaz a última alteração

Reorganizando e duplicando o texto

Movimentos de caracteres de baixo nível

x move o cursor localiza o próximo caractere x na linha atual. Depois disso, se você pressionar seu cursor se move para a próxima ocorrência do mesmo caractere. F é um comando semelhante, mas pesquisa para trás na mesma linha, em vez de para frente.

Os comandos f e F podem ser combinados, por exemplo, com o comando d . Digitar df x excluirá tudo do cursor até a próxima ocorrência de x na linha. Às vezes, você deseja excluir até, mas não incluindo, a próxima ocorrência do caractere x . Nesse caso, use o comando dt x . t significa “para”.

O início da linha é representado por zero (” 0 “), o cursor (” ^ “) representa o primeiro caractere que não é um espaço em branco na linha e o final da linha é representado pelo sinal de dólar (” $ “) . Se você pressionar ^ , o cursor será colocado no primeiro caractere não em branco da linha; se você pressionar 0 , o cursor será colocado no início da linha; e se você pressionar $ , o cursor será colocado no final da linha.

Para excluir tudo, do cursor até o final da linha, digite d $ . Para excluir tudo, desde o cursor até o início da linha, digite d0 … e assim por diante.

Objetos de texto de nível superior

Às vezes, é útil movimentar-se em unidades de frases inteiras. Os comandos ( e ) passam para o início das frases anteriores e seguintes, respectivamente. Portanto, o comando d) exclui tudo até o final da frase atual; e d ( exclui tudo até o início da frase atual ou a frase anterior inteira, se você já está no início de uma frase.

Uma frase é definida como terminando em um ponto (” . “), Ponto de exclamação (” ! “) Ou ponto de interrogação (” ? “) Que é seguido pelo final da linha ou por um espaço. Qualquer número de caracteres de fechamento ) , ] ,  e  pode aparecer após os caracteres . , ? Ou ! Antes do espaço ou do final da linha.

Os comandos { e } movem-se sobre parágrafos e as operações [[ e ]] movem-se sobre seções. Uma “seção” pode ser definida por uma macro especial ou por um feed de formulário no início de uma linha.

Reorganizando e duplicando o texto

O editor possui um buffer especial sem nome, onde o último texto excluído ou alterado é salvo, e um conjunto de buffers nomeados de a a z, que você pode usar para salvar cópias de texto e mover o texto em seu arquivo (ou arquivos).

O comando y “arranca” uma cópia de um objeto no buffer sem nome. Se precedido por um nome de buffer, ele coloca esse objeto no buffer nomeado. A maneira de especificar o buffer é entre aspas duplas (  ), depois uma letra a – z e , em seguida, o comando y . Então ” ay “ puxará um objeto no buffer chamado a .

Texto num tampão (quer o tampão sem nome ou um dos seus buffers nomeados) podem ser coladas no documento com a comandos P ou P . p irá colar o conteúdo do buffer após a localização do cursor (semelhante a um anexo) e P irá colar o conteúdo do buffer no local do cursor (semelhante a uma inserção).

Se o texto que você puxa faz parte de uma linha ou é um objeto, como uma frase que abrange parcialmente mais de uma linha, quando você coloca o texto de volta, ele será colocado após o cursor (ou antes, se você usou P ) Se o texto arrancado formar linhas inteiras, elas serão recolocadas como linhas inteiras, sem alterar a linha atual. Nesse caso, a pasta atua muito mais como um comando o ou O. Portanto, o comando YP fará uma cópia da linha atual e o colocará no local da cópia, que é colocado antes da linha atual. Y é uma abreviação conveniente para yy .

O comando Yp também fará uma cópia da linha atual e a colocará após a linha atual. Você pode dar a Y um número de linhas para puxar e, assim, duplicar várias linhas; por exemplo, o 3YP duplicará três linhas e as colocará antes da linha atual.

Para mover o texto dentro do buffer, você precisa excluí-lo em um lugar e colocá-lo novamente em outro. Você pode preceder uma operação de exclusão com o nome de um buffer no qual o texto deve ser armazenado, como em “a5dd , que exclui 5 linhas no buffer nomeado a . Em seguida, você pode mover o cursor para o local de descanso dessas linhas e faça um “ap ou ” aP para colocá-los de volta. Na verdade, você pode alternar e editar outro arquivo antes de colocar as linhas de volta, dando um comando no formato : e name , where nameé o nome do outro arquivo que você deseja editar. Você precisará escrever o conteúdo do buffer do editor atual (ou descartá-lo) se tiver feito alterações, antes que o editor permita editar um novo arquivo.

Um comando de exclusão comum salva o texto no buffer não nomeado, para que uma pasta comum o coloque novamente no arquivo. No entanto, o buffer não nomeado é perdido quando você altera os arquivos; portanto, para mover o texto de um arquivo para outro, você deve usar um buffer nomeado.

Resumo do movimento e reorganização do texto

^Primeiro caractere sem espaço em branco na linha
0 0Início da linha
$Fim da linha
)Encaminhar para a próxima frase
(Retroceder para a frase anterior
}Avançar para a próxima quebra de parágrafo
{Retroceder para a quebra de parágrafo anterior
]]Avançar para a próxima quebra de seção
[[Voltar para a quebra de seção anterior
xEncontre o caractere x para frente na linha
xEncontre o caractere x para trás na linha
pColar texto após o cursor
PColar texto antes do cursor
ypuxão
Yarrancar uma linha inteira
tencaminhar para o caractere x , para operações
xde volta ao caractere x , para operações

Comandos de alto nível

Escrevendo, encerrando e editando novos arquivos

Até agora, vimos como gravar nosso arquivo em disco e sair ( ZZ ), ou simplesmente gravar nosso arquivo e continuar editando ( : w ).

Se você alterou seu arquivo, mas deseja sair sem salvar, use o comando : q! . O comando : q sai do editor, mas ele só será permitido se você não tiver feito alterações desde sua última gravação (sua última gravação). O ponto de exclamação, no entanto, diz ao editor “sim, eu realmente quero fazer isso”.

Da mesma forma, você pode editar outro arquivo com o comando : e name , em que name é o nome do arquivo que você deseja editar. Mas o editor não permitirá que você faça isso se tiver alterações não salvas. No entanto, se você usar o ponto de exclamação novamente ( : e! Name ), o editor fará o que você pede: descartará as alterações e abrirá o nome do arquivo para edição.

Se você não especificar um nome de arquivo, e apenas use o comando : e! , o editor recarregará sua versão salva do arquivo em que você está trabalhando. É como o comando “reverter” em outros editores de arquivos. Ele descartará suas alterações e reverterá para a última versão salva do arquivo.

Escapando para o Shell

Se você deseja executar um comando shell sem sair do editor, pode usar o comando :! comando . O sistema executará o comando command e, quando o comando terminar, o editor solicitará que você pressione Enter antes de retornar à tela de edição. Você também pode dar outro comando : quando ele solicitar que você pressione Enter; isso executará o próximo comando sem redesenhar a tela.

Se você deseja soltar completamente no prompt de comando do seu shell, use o comando : sh . Isso o levará ao seu shell, onde você poderá usá-lo como faria normalmente; quando terminar, digite Control-D ( ^ D ) e você retornará ao vi .

Em muitos sistemas, você também pode digitar ^ Z de dentro do editor a qualquer momento para entrar no seu shell. Isso tecnicamente coloca o vi em segundo plano. Para retornar ao vi , digite fg (“foreground”) no prompt de comando do shell e o vi se tornará seu processo de primeiro plano novamente.

Marcando e retornando

Como já mencionado, o comando  (duas citações de volta) retorna para o local anterior depois de um movimento do cursor por um comando como / , / , ou G . Você também pode marcar sua posição no arquivo com tags de uma letra e retornar a essas marcas mais tarde. A marcação é feita com o comando x , onde x é a letra que você deseja atribuir à marca. Para retornar ao local que você marcou, você pode usar o comando x

Por exemplo, se você digitar ma , marcará a posição atual do cursor com a letra a . Então, se você mover o cursor para qualquer outro lugar do arquivo, sempre poderá retornar a essa linha com o comando `a . As marcas duram até você começar a editar outro arquivo ou até substituir a marca, definindo-a em outro lugar.

Ao usar operadores tais como d e referindo-se a linhas marcadas, às vezes você vai querer se referir à linha que você marcou, e não a posição atual do cursor dentro da linha. A qualquer momento, você pode usar ‘ x (em oposição a x ) para se referir à própria linha. Assim, o comando d` um vai apagar tudo, desde a posição atual do cursor até a posição exata na marca um , enquanto o comando d’um vai apagar tudo até (e incluindo) toda a linha onde marcar um reside.

Usado sem um operador, ‘ x move você para o primeiro caractere que não é um espaço em branco na linha em que a marca x reside.

Ajustando a tela

Se a imagem da tela estiver bagunçada por qualquer motivo, você poderá atualizar a tela com Control-L ( ^ L ).

Se você deseja centralizar a tela no seu cursor a qualquer momento, digite z- . Para ajustar a tela para que a linha com o cursor fique na parte superior da tela, digite z e pressione Enter. Para ajustar a tela para que a linha com o cursor fique na parte inferior da tela, digite z. .

zz é o mesmo que z- e centraliza a tela para que a linha com o cursor fique no centro da tela.

Tópicos Especiais

Definindo opções e usando arquivos de inicialização do editor

O editor possui um conjunto de opções, que você pode definir com o comando : set . Para definir a opção opt para valor val , use o comando : set opt val .

As opções de alternância podem ser definidas com os comandos set opt e desabilitadas com o comando set no opt .

Aqui estão algumas das opções mais úteis que você pode definir:

nome da opçãovalor padrãodescrição
autoindentnoaiRecuo de fornecimento automaticamente
autowritenoawGravar automaticamente no arquivo durante a edição
ignorar casonoicIgnorar maiúsculas e minúsculas ao pesquisar
lispnolispOs comandos ( , { , ) e } lidam com expressões S
ListanolistaAs guias são impressas como ^ I ; fim de linhas marcadas com $
MagianomagicOs personagens [ e * são especiais (“mágicos”) nas verificações
númerononuAs linhas são exibidas prefixadas com seus números de linha
parágrafospara = IPLPPPQPbpPNomes de macro LI que iniciam parágrafos
redesenharnoreSimule um terminal inteligente em um terminal burro
Seçõesseita = NHSHHNomes de macro HU que iniciam novas seções
shiftwidthsw = 8Distância de deslocamento para < , > e outros comandos “deslocamento”
showmatchnosmMostrar correspondência ( ou { locais como ) ou } é digitado, por exemplo
showmodenosmdMostrar descrição do modo de entrada
slowopenlentoAdiar atualizações de exibição durante inserções
prazoidiotaO tipo de terminal que você está usando

Estas declarações podem ser colocados na variável de ambiente EXINIT , ou pode ser dado durante a execução vi precedendo-os com um : , como descrito acima.

Você pode visualizar uma lista de todas as opções e suas configurações digitando : configure no vi a qualquer momento. Para visualizar a configuração atual de uma opção específica, use o comando : set opt .

O conjunto pode ser abreviado como se . Várias opções podem ser definidas em uma linha, por exemplo : se ai aw nu .

Opções definidas com : definido apenas por último para a sua sessão atual do editor.

Se desejar colocar suas configurações padrão na variável de ambiente EXINIT para que sejam carregadas toda vez que você executar o vi , poderá especificar vários comandos em uma única linha, separando-os com a barra vertical (” | “). Por exemplo, se seu shell for csh , você poderá definir EXINIT com o seguinte comando de shell:

setenv EXINIT 'set ai aw terse | map @ dd | map # x'

Recuperando Linhas Perdidas

Você pode ter um problema se excluir várias linhas e depois as desejar de volta. No entanto, o editor salva os últimos 9 blocos de texto excluídos em um conjunto de registros numerados de 1 a 9 . Você pode obter o n º anterior texto excluído de volta em seu arquivo pelo comando ” p . Estes são semelhantes aos seus buffers nomeados, a não ser que se refira ao número do bloco anterior de texto que foi excluído.

Normalmente, quando você digita um único ponto (” . “), Ele repete a última alteração feita. Como um caso especial, quando esse período repete uma alteração que se refere a um buffer numerado, o número é incrementado antes da repetição do comando. Vamos ver como isso funciona e por que é útil:

Digamos que você excluiu algo importante e você sabe que ele está em uma das nove exclusões de bloqueio anteriores, mas não tem certeza de qual. Se você quiser voltar e observar todos os nove blocos excluídos anteriormente, veja como você pode fazê-lo: você pode usar o comando

"1p

Para colar o conteúdo do texto excluído mais recentemente (número do buffer 1 ). Se esse não é o texto que você deseja, você pode desfazer ( u ) e repetir o comando com , colando o comando do buffer 2 . Em outras palavras, digitando o comando

"1pu.uuu

é o mesmo que digitar

"1pu" 2pu "3pu" 4pu "5p

e você pode voltar facilmente nos buffers numerados até encontrar o texto que deseja recuperar.

O comando P pode, é claro, ser usado em vez de p no exemplo acima, para colocar o texto antes do cursor em vez de depois dele.

Recuperando arquivos perdidos

Se o sistema travar, você poderá recuperar o trabalho que estava fazendo dentro de algumas alterações. Quando você voltar ao seu sistema, use este comando para iniciar o vi :

vi -r nome

Onde nome é o nome do arquivo que você estava editando. Isso recuperará seu trabalho a um ponto o mais próximo possível de onde você parou.

Se você não especificar um arquivo com nome e apenas digitar

vi -r

então você receberá uma lista de arquivos que podem ser recuperados.

Entrada contínua de texto

Ao digitar grandes quantidades de texto, é conveniente que as linhas sejam quebradas perto da margem direita automaticamente. Você pode fazer isso, dando o comando : se wm = 10 . Isso faz com que todas as linhas sejam quebradas em um espaço a pelo menos 10 colunas da borda direita da tela.

Se o editor de quebra uma linha de entrada e você deseja colocá-lo novamente você pode dizer que para se juntar as linhas com J . Você pode fornecer a J uma contagem do número de linhas a serem unidas, como em 3J, para unir 3 linhas. O editor fornece espaço em branco, se apropriado, na junção das linhas unidas e deixa o cursor nesse espaço em branco. Você pode matar o espaço em branco com x se não quiser.

Recursos para edição de programas

O editor possui vários comandos para editar programas. O que mais distingue a edição de programas da edição de texto é a estrutura recuada no corpo do programa. O editor possui um recurso de autoindent para ajudá-lo a gerar programas recuados corretamente.

Para habilitar esse recurso, você pode dar o comando : se ai . Agora tente abrir uma nova linha com oe digite alguns caracteres na linha após algumas guias. Se você agora iniciar outra linha, observe que o editor fornece espaço em branco no início da linha para alinhá-lo com a linha anterior. Você não pode retroceder sobre esse recuo, mas pode usar a tecla ^ D para retroceder o recuo fornecido.

Cada vez que você digita ^ D, você faz backup de uma posição, normalmente para um limite de 8 colunas. Essa quantia é configurável; o editor possui uma opção chamada shiftwidth, que você pode definir para alterar esse valor. Tente dar o comando : se sw = 4 e experimente novamente o autoindent .

Para mudar as linhas no programa para a esquerda e para a direita, existem operadores < e > . Eles alteram as linhas especificadas para a direita ou esquerda em uma largura de turno. Tente << e >>, que deslocam uma linha para a esquerda ou direita e <L e > L deslocam o restante da tela para a esquerda e direita.

Se você tem uma expressão complicada e deseja ver como os parênteses correspondem, coloque o cursor no parêntese esquerdo ou direito e pressione % . Isso mostrará os parênteses correspondentes. Isso funciona também para chaves { e } e colchetes [ e ] .

Se você estiver editando programas em C , poderá usar as teclas [[ e ]] para avançar ou recuar para uma linha começando com um { , ou seja, uma declaração de função por vez. Quando ]] é usado com um operador, ele pára após uma linha que começa com } ; isso às vezes é útil com y]] .

Filtrando partes do buffer

Você pode executar comandos do sistema em partes do buffer usando o operador (o ponto de exclamação). Essencialmente, ele envia uma seção do seu arquivo como entrada padrão para um comando do shell e substitui essa parte do seu texto pela saída padrão do comando.

Todos juntos, a maneira de especificar para qual texto enviar e para qual comando enviar, é (especificador de movimento) nome do comando . O especificador de movimento pode ser w para operar na próxima palavra, por exemplo, ou } no próximo parágrafo, etc. O nome do comando é o comando shell e quaisquer argumentos que ele possa levar.

Isso é especialmente útil para classificar usando o comando classificar . Você pode usar isso para classificar linhas no seu arquivo. Por exemplo, se você digitar uma lista de palavras aleatórias, uma por linha, e terminá-las com uma linha em branco, faça backup do início da lista e dê o comando !} Classificar , isso classificará os dados você acabou de digitar bem diante dos seus olhos. Esta é uma função muito poderosa! Experimente você mesmo.

Comandos para editar código LISP

Se você estiver editando um programa LISP , defina a opção lisp fazendo : se lisp . Isso altera os comandos ( e ) para retroceder e avançar sobre expressões s. Os comandos { e } são como ( e ), mas não param em átomos. Eles podem ser usados ​​para pular para a próxima lista ou através de um comentário rapidamente.

A opção autoindent funciona de maneira diferente para o LISP, fornecendo recuo para alinhar no primeiro argumento à última lista aberta. Se não houver esse argumento, o recuo será dois espaços a mais que o último nível.

Há outra opção que é útil para digitar LISP, a opção showmatch . Tente configurá-lo com : se sm e tente digitar um ” ( “, algumas palavras e depois um ” ) “. Observe que o cursor mostra a posição do ” ( ” que corresponde ao ” ) ” brevemente. Isso acontece apenas se a correspondência ” ( ” estiver na tela e o cursor permanecer lá por no máximo um segundo.

O editor também possui um operador para realinhar as linhas existentes, como se elas tivessem sido digitadas com o conjunto lisp e autoindent . Este é o operador = . Experimente o comando =% no início de uma função . Isso realinhará todas as linhas da declaração da função.

Quando você estiver editando o LISP, o [[ e ]] avançará e recuará para as linhas começando com a ( , e são úteis para lidar com definições de funções inteiras.

Macros

O vi possui um recurso de macro sem parâmetros , que permite configurá-lo para que, ao pressionar uma única tecla, o editor atue como se você tivesse pressionado uma sequência mais longa de teclas. Você pode configurar isso se estiver digitando a mesma sequência de comandos repetidamente.

Existem dois tipos gerais de macros:

  1. Onde você coloca o corpo da macro em um buffer de macro nomeado x . Você pode digitar x para chamar a macro. O @ pode ser seguido por outro @ para repetir a última macro.
  2. Você pode usar o comando map do vi (normalmente em sua variável de ambiente EXINIT ) com um comando do formulário:
    : mapa lhs rhsCR

    mapeando lhs em rhs . Existem restrições: lhs deve ser um pressionamento de tecla (1 caractere ou uma tecla de função), pois deve ser inserido dentro de um segundo (a menos que o tempo limite esteja definido, nesse caso, você pode digitá-lo tão lentamente quanto desejar e o vi aguardará você terminar antes que ecoe qualquer coisa). Os lhs não mais de 10 caracteres pode ser, os RHS não mais de 100. Para obter um espaço, guia ou nova linha em LHS ou RHS você deve escapar-los com um ^ V . Pode ser necessário duplicar o ^ V se o comando map for fornecido dentro de vi, ao invés de ex . Espaços e guias dentro do rhs não precisam ser escapados.

Assim, para fazer a tecla q escrever e sair do editor, você pode dar o comando

: mapa q: wq ^ V ^ VCR CR

o que significa que sempre que você digitar q , será como se você tivesse digitado os quatro caracteres : wqCR . A ^ V ‘s é necessária porque sem ela o retorno de carro iria acabar o : comando, em vez de tornar-se parte da definição do mapa. Existem dois ^ V ‘s porque, a partir do vi , dois ^ V ‘ s devem ser digitados para obter um. O primeiro CR faz parte do rhs , o segundo finaliza o comando :.

As macros podem ser excluídas com

desmapear lhs

Se o lhs de uma macro for ” # 0 ” a ” # 9 “, isso mapeia a tecla de função específica em vez da sequência ” # ” de 2 caracteres . Para que os terminais sem teclas de função possam acessar essas definições, o formato ” #x ” significa a tecla de função x em todos os terminais (e não precisa ser digitada em um segundo). O caractere ” # ” pode ser alterado usando uma macro da maneira usual:

: mapa ^ V ^ V ^ I #

para usar a guia, por exemplo. Isso não afetará o comando map , que ainda usa # , mas apenas a chamada do modo visual.

O comando desfazer reverte uma chamada de macro inteira como uma unidade, se houver alguma alteração.

Colocar um ” ! ” Após o mapa de palavras faz com que o mapeamento seja aplicado ao modo de entrada, e não ao modo de comando. Portanto, para organizar ^ T para ser igual a 4 espaços no modo de entrada, você pode digitar:

:mapa! ^ T ^ Vb / b / b / b /

onde b / está em branco. O ^ V é necessário para impedir que os espaços em branco sejam tomados como espaço em branco entre o lhs e o rhs .

Abreviações de palavras

Um recurso semelhante às macros no modo de entrada é a abreviação de palavras. Isso permite digitar uma palavra curta e expandi-la para uma ou mais palavras longas. Os comandos são : abreviar e : unabbreviate ( : ab e : una ) e possuem a mesma sintaxe que : map . Por exemplo:

: ab eecs Engenharia Elétrica e Ciências da Computação

faz com que a palavra ” eecs ” seja sempre alterada para a frase ” Engenharia elétrica e ciências da computação “. A abreviação de palavras é diferente das macros, pois somente palavras inteiras são afetadas. Se ” eecs ” forem digitados como parte de uma palavra maior, ela será deixada em paz. Além disso, a palavra parcial é repetida à medida que é digitada. Não é necessário que uma abreviação seja um único pressionamento de tecla, como deve ser com uma macro.

Detalhes técnicos

Representação de linha no visor

O editor dobra longas linhas lógicas em muitas linhas físicas na tela. Os comandos que avançam linhas avançam linhas lógicas e pulam todos os segmentos de uma linha em um movimento. O comando move o cursor para uma coluna específica e pode ser útil para se aproximar do meio de uma linha longa e dividi-la ao meio.

O editor coloca apenas linhas completas no visor; se não houver espaço suficiente na tela para caber em uma linha lógica, o editor deixará a linha física vazia, colocando apenas um @ na linha como espaço reservado. Quando você exclui linhas em um terminal burro, o editor geralmente limpa apenas as linhas para @ para economizar tempo (em vez de reescrever o restante da tela). Você sempre pode maximizar as informações na tela, dando o comando ^ R.

Se desejar, o editor pode colocar os números das linhas antes de cada linha no visor. Dê o comando : se nu para ativar isso e o comando : se nonu para desativá-lo. Você pode ter tabulações representadas como ^ I e o final das linhas indicadas com ” $ “, fornecendo o comando : se list ; : se nolist desativa isso.

Finalmente, as linhas que consistem apenas no caractere ” ~ ” são exibidas quando a última linha do arquivo está no meio da tela. Eles representam linhas físicas que ultrapassaram o final lógico do arquivo.

Mais comandos de manipulação de arquivos

A tabela a seguir lista os comandos de manipulação de arquivos que você pode usar quando estiver no vi .

:Wescrever de volta as alterações
: wqescreva e saia
: xescreva (se necessário) e saia (igual a ZZ ).
: e nomeeditar nome do arquivo
: e!reeditar, descartando alterações
: e + nameeditar, começando no final
: e + neditar, começando na linha n
: e #editar arquivo alternativo
: w nomeescrever nome do arquivo
:W! nomesobrescrever nome do arquivo
x , nomeescreva as linhas x a y para nomear
nome rleia o nome do arquivo no buffer
: r! cmdler a saída do cmd no buffer
neditar o próximo arquivo na lista de argumentos
!editar o próximo arquivo, descartando alterações no atual
argsespecifique nova lista de argumentos
: ta tageditar arquivo contendo tag tag , na tag

Todos esses comandos são seguidos por um CR ou Esc. Os comandos mais básicos são : w e : e . Uma sessão de edição normal em um único arquivo terminará com um comando ZZ . Se você estiver editando por um longo período de tempo, poderá fornecer : w comandos ocasionalmente após grandes quantidades de edição e finalizar com um ZZ . Ao editar mais de um arquivo, você pode terminar com um com : w e começar a editar um novo arquivo, dando um comando a : e , ou defina a gravação automática e use o arquivo : n .

Se você fizer alterações na cópia de um arquivo pelo editor, mas não desejar escrevê-las novamente, deverá fornecer um após o comando que você usaria; isso força o editor a descartar as alterações feitas. Use isso com cuidado.

O comando : e pode receber um argumento + para iniciar no final do arquivo ou um argumento n para iniciar na linha n . Na realidade, n pode ser qualquer comando do editor que não contenha espaço, útil uma varredura como + / pat ou +? pat . Ao formar novos nomes para o comando e , você pode usar o caractere % que é substituído pelo nome do arquivo atual ou o caractere # que é substituído pelo nome do arquivo alternativo . O nome do arquivo alternativogeralmente é o sobrenome digitado, exceto o arquivo atual. Portanto, se você tentar fazer a : e obter um diagnóstico de que não gravou o arquivo, poderá fornecer um comando : w e depois um comando : e # para refazer o anterior : e .

Você pode escrever parte do buffer para um arquivo por descobrir os linhas que limitam o intervalo a ser escrito usando ^ G , e dando a estes números após o : e antes do w , separados por , ‘s. Você também pode marcar essas linhas com m e, em seguida, usar um endereço no formato ‘ x , ‘ y no comando w aqui.

Você pode ler outro arquivo no buffer após a linha atual usando o comando : r . Da mesma forma, você pode ler a saída de um comando, basta usar ! Cmd em vez de um nome de arquivo.

Se você deseja editar um conjunto de arquivos em sucessão, pode dar todos os nomes na linha de comando e, em seguida, editar cada um deles usando o comando : n . Também é possível resecificar a lista de arquivos a serem editados, fornecendo ao comando : n uma lista de nomes de arquivos ou um padrão a ser expandido como você daria no comando vi inicial .

Se você estiver editando programas grandes, encontrará o comando : ta muito útil. Ele utiliza um banco de dados de nomes de funções e seus locais, que podem ser criados por programas como ctags , para encontrar rapidamente uma função cujo nome você fornece. Se o comando : ta exigir que o editor troque de arquivo, você deve : w ou abandonar as alterações antes de alternar. Você pode repetir o comando : ta sem argumentos para procurar a mesma tag novamente.

Mais sobre a pesquisa de strings

Quando você está procurando por seqüências de caracteres no arquivo com / e , o editor normalmente coloca você na ocorrência seguinte ou anterior da sequência. Se você estiver usando um operador como d , c ou y , poderá muito bem afetar as linhas até a linha antes da linha que contém o padrão. Você pode pesquisar no formulário pat / – n para se referir à n- ésima linha antes da próxima linha que contém pat , ou pode usar + em vez de  para se referir às linhas após a que contém pat. Se você não der um deslocamento de linha, o editor afetará os caracteres até o local da partida, em vez de linhas inteiras; portanto, use ” +0 ” para afetar a linha correspondente.

Você pode fazer com que o editor ignore o caso das palavras nas pesquisas realizadas, fornecendo o comando : se ic . O comando : se noic desativa isso.

As strings dadas às pesquisas podem realmente ser expressões regulares . Se você não deseja ou precisa deste recurso, deve

definir nomagic

no seu EXINIT . Nesse caso, apenas os caracteres ^ e $ são especiais em padrões. O caractere \ também é especial (como está em toda parte do sistema) e pode ser usado para chegar a um recurso estendido de correspondência de padrões. Também é necessário usar a \ antes de a / em uma varredura direta ou a em uma varredura inversa, em qualquer caso. A tabela a seguir fornece os formulários estendidos quando a mágica é definida.

^no início do padrão, corresponde ao início da linha
$no final do padrão, corresponde ao final da linha
.corresponde a qualquer caractere
\ <corresponde ao início de uma palavra
\>corresponde ao final de uma palavra
str ]corresponde a qualquer caractere único em str
str ]corresponde a qualquer caractere único que não esteja em str
– ]corresponde a qualquer caractere entre x e y
*corresponde a qualquer número do padrão anterior

Se você usar o modo nomagic , então o . [ e * primitivas são fornecidas com um \ anterior .

Mais sobre o modo de entrada

Há vários caracteres que você pode usar para fazer correções durante o modo de entrada. Eles estão resumidos na tabela a seguir.

^ Hexclui o último caractere de entrada
^ Wexclui a última palavra de entrada, definida como por b
apagarseu caractere de apagar, o mesmo que ^ H
mateseu personagem kill, apaga a entrada nesta linha
\escapa um seguinte ^ H e você apaga e mata
Esctermina uma inserção
Delinterrompe uma inserção, finalizando-a de forma anormal
CRinicia uma nova linha
^ Dbacktabs sobre autoindent
0 ^ Dmata todo o autoindent
^^ D(caret-control-D) igual a 0 ^ D , mas restaura o recuo na próxima linha
^ Vcita o próximo caractere não imprimível no arquivo

A maneira mais comum de fazer correções na entrada é digitando ^ H para corrigir um único caractere ou digitando um ou mais ^ Ws para voltar com palavras incorretas. Se você usar # como seu caráter do apagamento no sistema normal, que vai funcionar como ^ H .

Seu caractere de morte do sistema, normalmente @ , ^ X ou ^ U , apagará toda a entrada que você forneceu na linha atual. Em geral, você não pode apagar a entrada de volta ao redor de um limite de linha nem apagar caracteres que não inseriu com este comando de inserção. Para fazer correções na linha anterior após o início de uma nova linha, você pode pressionar Esc para finalizar a inserção, mover-se e fazer a correção e retornar ao local onde deveria continuar. O comando A que acrescenta no final da linha atual é frequentemente útil para continuar.

Se você deseja digitar seu caractere de apagar ou matar (digamos # ou @ ), deve preceder com a \ , exatamente como faria no nível de comando normal do sistema. Uma maneira mais geral de digitar caracteres não-impressão no ficheiro é para preceder-los com um ^ V . O ^ V ecoa como um caractere ^ no qual o cursor repousa. Isso indica que o editor espera que você digite um caractere de controle. De fato, você pode digitar qualquer caractere e ele será inserido no arquivo nesse momento.

Se você estiver usando autoindent você pode BACKTAB sobre o travessão qual fornece digitando um ^ D . Isso faz backup em um limite de largura de turno . Isso funciona apenas imediatamente após o autoindent fornecido .

Ao usar o autoindent, você pode colocar um rótulo na margem esquerda de uma linha. A maneira de fazer isso facilmente é digitar ^ e ^ D . O editor move o cursor para a margem esquerda de uma linha e restaura o recuo anterior na próxima. Você também pode digitar um 0 seguido imediatamente por um ^ D se desejar eliminar todo o recuo e não voltar para a próxima linha.

Terminais somente em maiúsculas

Se o seu terminal tiver apenas maiúsculas, você ainda poderá usar o vi usando a convenção normal do sistema para digitar nesse terminal. Os caracteres que você digita normalmente são convertidos em letras minúsculas e você pode digitar letras maiúsculas precedendo-as com a \ . Os caracteres ` não estão disponíveis nesses terminais, mas você pode escapar deles como \ ( \ ^ \) \! \ ‘ . Esses caracteres são representados no visor da mesma maneira que são digitados.

Vi e Ex

vi é realmente um modo de edição dentro do editor ex . Quando você está executando vi você pode escapar para o editor de linha orientada de ex dando o comando Q . Todos os comandos : que foram introduzidos acima estão disponíveis no ex . Do mesmo modo, a maioria dos ex comandos podem ser invocados a partir de VI usando : . Apenas dê-os sem o : e siga-os com um CR.

Em casos raros, um erro interno pode ocorrer no vi . Nesse caso, você receberá um diagnóstico e será deixado no modo de comando do ex . Você pode salvar seu trabalho e sair, se desejar, dando um comando x após o comando : que ex solicita, ou você pode reinserir o vi dando um comando ex a vi .

Há várias coisas que você pode fazer mais facilmente no ex do que no vi . Alterações sistemáticas no material orientado a linhas são particularmente fáceis. Você pode ler os documentos avançados de edição do editor ed para descobrir muito mais sobre esse estilo de edição. Usuários experientes geralmente combinam o uso dos modos ex command e vi command para acelerar o trabalho que estão realizando.

Referência rápida

Este é um resumo de todos os comandos vi mais úteis . Consulte-o sempre que precisar se lembrar de qualquer uma das funções do vi rapidamente e rapidamente.

Como entrar / sair do editor

Na linha de comando:

nome viinicie o vi e carregue o nome do arquivo
nome vi ninicie vi e carregue o nome do arquivo , colocando o cursor na linha n
tag vi -tinicie o vi e comece a editar na tag
vi -rlistar arquivos que podem ser recuperados
vi -r nomeinicie o vi e recupere o nome do arquivo editado anteriormente
vi name1 name2 inicie o vi , carregando o nome do arquivo1 para edição; quaisquer outros arquivos nomeados são carregados com o comando : n
vi -R nomeinicie o vi e carregue o nome do arquivo no modo somente leitura

De dentro do vi :

ZZsair do vi , salvando alterações
^ Zbackground vi e retorne ao shell de comando. Retomar a operação do primeiro plano vi com o comando fg shell builtin

Manipulação de arquivo

:Wescrever alterações (salvar o arquivo)
: wqgravar alterações (salvar) e sair
: qsaia imediatamente, se não houver alterações não salvas
: q!saia imediatamente, descartando quaisquer alterações não salvas
: e nomeeditar nome do arquivo
: e!reverter para a última versão salva do arquivo atual
: e namecarregar o nome do arquivo para edição, colocando o cursor no final do arquivo
nome ncarregar o nome do arquivo para edição, iniciando na linha n
: e #editar arquivo alternativo
^^(sinal de intercalação). sinônimo de : e #
: w nomegravar no nome do arquivo (salvar como …)
:W! nomesobrescrever nome do arquivo
: shsolte no shell da linha de comando; ^ D para retornar
:! cmdexecute o comando shell cmd e retorne ao vi
: nedite o próximo arquivo especificado como argumento para o vi
: n argsespecifique nova lista de argumentos de arquivos para o vi editar
: fmostra o arquivo atual sendo editado e a contagem de linhas atual
^ Gsinônimo de : f
: ta tagmarcar tag de entrada de arquivo
^]igual a : ta , e a seguinte palavra é a tag

Posicionando no arquivo

^ Fposição para a frente uma tela
^ Bposição para trás uma tela
^ Drole para baixo uma meia tela
^ Urole para cima uma meia tela
num Ggoto line num (a última linha se num não for especificado)
patprocure a próxima ocorrência do padrão pat
tapinhaprocurar ocorrência anterior de padrão pat
nrepita a última pesquisa, na última direção da pesquisa
Nrepita a última pesquisa, no sentido oposto à última pesquisa
pat / + nprocurar ao n º linha após a próxima ocorrência do padrão de pat
pat ? – nprocurar ao n º linha antes da ocorrência anterior do padrão pat
]]passar para a próxima seção / função
[[mover para a seção / função anterior
%encontre correspondência ( , ) , { ou }

Inserir e substituir

A tecla Esc sai de cada um dos seguintes modos de entrada de texto, exceto r , que é usado apenas para inserir um único caractere.

Eumodo de inserção: o texto é inserido antes do cursor
umamodo de acréscimo: o texto é acrescentado após o cursor
UMAo texto é anexado no final da linha
Eutexto é inserido no início da linha
oabra uma nova linha, após a linha atual, para entrada de texto
Oabra uma nova linha, antes da linha atual, para entrada de texto
xsubstitua um caractere sob o cursor pelo caractere x
Rsubstituir vários caracteres

Posicionamento de linha

Hmova o cursor para a primeira linha (“inicial”) da janela
eumova o cursor para a última linha da janela
Mmova o cursor para a linha do meio da janela
+mova o cursor para o primeiro caractere não-espaço em branco da próxima linha
mova o cursor para o primeiro caractere não-espaço em branco da linha anterior
CR(retorno de carro / tecla Enter.) igual a +
para baixo ou jpróxima linha, mesma coluna
para cima ou klinha anterior, mesma coluna

Posicionamento de Personagem

^mover o cursor para o primeiro caractere que não seja um espaço em branco na linha
0 0mover o cursor para o início da linha
$mover o cursor para o final da linha
direita ou l ou ESPAÇOmover o cursor para frente um caractere
esquerda ou h ou ^ Hmover o cursor para trás um caractere
xencontre a próxima ocorrência do caractere x na linha
xencontre a ocorrência anterior do caractere x na linha
xmova para cima x para frente
xvoltar para x para trás
;repita o último f , F , t ou T
,inverso de ;
num |Mover para a coluna num

Operadores

(Cada um desses comandos pode ser usado duas vezes para afetar linhas inteiras):

dexcluir
calterar (como excluir, mas coloca você no modo de inserção para inserir o texto para o qual deve mudar)
<shift shift left shiftwidth número de espaços
>mudar linha certa shiftwidth número de espaços
(movimento de comando) shell-commandfiltrar texto através de um comando shell
=recuo para LISP
yarrancar linhas no buffer

Palavras, Frases, Parágrafos

Wpalavra para a frente
bpalavra para trás
efim da palavra
)para a próxima frase
}para a próxima quebra de parágrafo
(para quebra de sentença anterior
{para quebra de parágrafo anterior
Wpara a próxima palavra delimitada em branco
Bà palavra delimitada em branco anterior
Eao final da palavra delimitada em branco

Arranque para o buffer e cole do buffer

pcolar após o cursor
Pcolar antes do cursor
” pcolar do buffer x
” ypuxar para o buffer x
” dexcluir no buffer x

Desfazer, Refazer, Recuperar

vocêdesfazer a última alteração
vocêrestaurar linha atual
.repita a última alteração
” precuperar d th última excluir

Marcando e retornando

ir para o local anterior
vá para o local anterior, no primeiro espaço não em branco da fila
xMarque a posição com a letra x
xmova para a posição marcada x
‘ xmova para a posição marcada x , no primeiro caractere que não seja um espaço em branco na linha

Operações diversas

Calterar o resto da linha
Dexcluir restante da linha
scaracteres substitutos
Slinhas substitutas
Jjuntar linhas
xexcluir um único caractere
Xexcluir um único caractere antes do cursor
Yarrancar uma linha; o mesmo que yy

Ajustando a tela

^ Llimpar e redesenhar
z (Enter)redesenhar a tela com a linha atual no topo
z-redesenhar a tela com a linha atual na parte inferior
z.redesenhar a tela com a linha atual no centro
zzmesmo que z.
^ Erolar a janela uma linha para baixo (mas não mova o cursor)
^ Yrolar a janela uma linha (mas não mova o cursor)

Combinações úteis de comandos

dwexcluir uma palavra
deexclua uma palavra, deixando intacta sua pontuação
ddexcluir uma linha
3ddexclua 3 linhas (por exemplo)
cw novoalterar palavra para nova
easpluralize uma palavra (coloque um s no final)
xptranspor dois caracteres

Exemplos

vi myfile.txt

Edita o arquivo myfile.txt .

  • Como salvar um arquivo no Linux depois de usar o comando vi?

ctags – Crie arquivos de tags para o código fonte.
ed – Um simples editor de texto.
editar – um editor de texto.
ex – modo editor de linha do editor detexto vi .
pico – Um simples editor de texto.
vim – Uma versão avançada do vi .
vipw – Edite com segurança o arquivo de senha.

22 de novembro de 2019

Sobre nós

A Linux Force Brasil é uma empresa que ama a arte de ensinar. Nossa missão é criar talentos para a área de tecnologia e atender com excelência nossos clientes.

CNPJ: 13.299.207/0001-50
SAC:         0800 721 7901

Comercial  Comercial: (11) 3796-5900

Suporte:    (11) 3796-5900

Copyright © Linux Force Security  - Desde 2011.