Pular para conteúdo

Editor de Texto VI

Neste capítulo você aprenderá a trabalhar com o editor do VIsual.


Objetivos: Neste capítulo, futuros administradores Linux vão aprender como:

✔ Usar os comandos principais do editor VI;
✔ Modificar um texto com o editor VI.

🏁 comandos de usuário, linux

Conhecimento: ⭐
Complexidade: ⭐ ⭐

Tempo de leitura: 20 minutos


Visual (VI) é um editor de texto muito popular no Linux, apesar de sua ergonomia limitada. É realmente um editor inteiramente no modo de texto: cada ação é feita através de uma tecla no teclado ou de comandos dedicados.

Muito poderoso, é sobretudo muito prático, uma vez que é absolutamente mínimo para as aplicações básicas. Por conseguinte, é acessível em caso de falha no sistema. Sua universalidade (ele está presente em todas as distribuições do Linux e no Unix) faz dele uma ferramenta crucial para o administrador.

Suas funcionalidades são:

  • Inserir, excluir, modificar texto;
  • Copiar palavras, linhas ou blocos de texto;
  • Procurar e substituir caracteres.

comando vi

O comando vi abre o editor de texto VI.

vi [-c comando] [arquivo]

Exemplo:

$ vi /home/rockstar/arquivo
Opção Informação
-c comando Executa o VI especificando um comando na abertura

Se o arquivo existir no local descrito pelo caminho, ele é lido pelo VI, que é colocado no modo de comandos.

Se o arquivo não existir, o VI abre um arquivo em branco e uma página vazia é exibida na tela. Quando o arquivo é salvo, ele pega o nome especificado com o comando.

Se o comando vi for executado sem especificar um nome de arquivo, o VI abre um arquivo em branco e uma página vazia é exibida na tela. Quando o arquivo for salvo, o VI irá solicitar um nome de arquivo.

O editor vim tem a interface e funções de VI com muitas melhorias.

vim [-c comando] [arquivo]

Entre essas melhorias, o usuário tem destaque de sintaxe, o que é muito útil para editar scripts shell ou arquivos de configuração.

Durante uma sessão, o VI utiliza um arquivo de buffer no qual grava todas as alterações feitas pelo usuário.

Nota

Enquanto o usuário não salvar o seu trabalho, o arquivo original não será modificado.

Na inicialização, o VI está em modo de comandos.

Dica

Uma linha de texto é encerrada pressionando ENTER mas se a tela não for grande o suficiente, o VI faz quebras de linha automáticas, configuração dobrar por padrão. Estas quebras de linha podem não ser desejadas, esta é a configuração semdobrar.

Para sair di VI, do modo de comando, pressione : e então digite:

  • q para sair sem salvar (quit);
  • w para salvar seu trabalho (write);
  • wq (write quit) ou x (eXit) para salvar e sair.

No modo de comando, clique na tecla Z em maiúscula duas vezes seguidas para salvar e sair.

Para forçar a saída sem confirmação, você deve adicionar ! aos comandos anteriores.

Atenção

Não existe backup automático, então você deve se lembrar de salvar seu trabalho regularmente.

Modo de operação

No VI, existem 3 modos de trabalho:

  • O modo de comando;
  • O modo de inserção;
  • O modo ex.

A filosofia do VI é alternar entre o modo de comando e o modo de inserção.

O terceiro modo, ex, é um modo de comando de rodapé de um editor de texto antigo.

O Modo de Comando

Este é o modo padrão quando o VI é iniciado. Para acessá-lo a partir de qualquer um dos outros modos, simplesmente pressione a tecla ESC.

Neste momento, todas as teclas pressionadas são interpretadas como comandos e as ações correspondentes são executadas. Estes são essencialmente comandos para editar o texto (copiar, colar, desfazer, ...).

Os comandos não são exibidos na tela.

O modo de inserção

Este é o modo de modificação de texto. Para acessá-lo pelo modo de comando, você precisa pressionar as teclas especiais que executarão uma ação além de alterar o modo.

O texto não é inserido diretamente no arquivo, mas em uma zona de buffer na memória. As alterações só são efetivas quando o arquivo é salvo.

O Modo Ex

Este é o modo de modificação de arquivo. Para acessá-lo, você deve primeiro mudar para o modo de comando, então digite o comando ex, normalmente começando com o caractere :.

O comando é validado pressionando a tecla ENTER.

Movendo o cursor

No modo de comando, há várias maneiras de mover o cursor.

O mouse não está ativo num ambiente de texto, mas está em um ambiente gráfico, é possível movê-lo pelo caractere, mas existem atalhos para ir mais rápido.

VI permanece no modo de comando após mover o cursor.

O cursor é posicionado sob o caráter desejado.

De um caractere

  • Mova um ou n caracteres para a esquerda:

, n, h ou nh

  • Mova um ou n caracteres para a direita:

, n, l ou nl

  • Mova um ou n caracteres para cima:

, n, k ou nk

  • Mova um ou n caracteres para baixo:

, n, j ou nj

  • Mover para o final da linha:

$ ou END

  • Mover para o início da linha:

0 ou POS1

Do primeiro caractere de uma palavra

Palavras são compostas por letras ou números. Caracteres de pontuação e apóstrofos separam as palavras.

Se o cursor estiver no meio de uma palavra w se move para a próxima palavra, b se move para o início da palavra.

Se a linha estiver terminada, o VI irá automaticamente para a próxima linha.

  • Mova uma ou n palavras para a direita:

w ou nw

  • Mova uma ou n palavras para a esquerda:

b ou nb

De qualquer local em uma linha

  • Mover para a última linha do texto:

G

  • Mover para a linha n:

nG

  • Mover para a primeira linha da tela:

H

  • Mova para a linha do meio da tela:

M

  • Mover para a última linha da tela:

L

Inserir texto

No modo de comando, há várias maneiras de inserir texto.

O VI alterna para o modo inserir após pressionar uma dessas teclas.

Nota

VI alterna para o modo inserção. Então você terá que pressionar a tecla ESC para retornar ao modo comando.

Em relação a um caractere

  • Inserir texto antes de um caractere:

i (insert)

  • Inserir texto após um caractere:

a (append)

Em relação a uma linha

  • Inserindo texto no início de uma linha:

I

  • Inserir texto no final de uma linha:

A

Em relação ao texto

  • Inserir texto antes de uma linha:

O

  • Inserir texto após uma linha:

o

Caracteres, palavras e linhas

O VI permite a edição de texto gerenciando:

  • caracteres,
  • palavras,
  • linhas.

Em cada caso é possível:

  • excluir,
  • substituir,
  • copiar,
  • cortar,
  • colar.

Essas operações são feitas no modo de comando.

Caracteres

  • Deletar um ou n caracteres:

x ou nx

  • Substituir um caractere por outro:

rcaractere

  • Substituir mais de um caractere por outros:

RcaracteresESC

Nota

O comando R alterna para o modo substituir, que é um tipo de modo inserção.

Palavras

  • Excluir (recortar) uma ou n palavras:

dw ou ndw

  • Copiar uma ou n palavras:

yw ou nyem

  • Colar uma palavra uma ou n vezes após o cursor:

p ou np

  • Colar uma palavra uma ou n vezes antes do cursor:

P ou nP

  • Substituir uma palavra:

cwpalavraESC

Dica

É necessário posicionar o cursor no primeiro caractere da palavra a cortar (ou copiar), caso contrário o VI irá cortar (ou copiar) apenas a parte da palavra entre o cursor e o final. Excluir uma palavra é o mesmo que recortá-la. Se não for colada depois, o buffer será esvaziado e a palavra será apagada.

Linhas

  • Excluir (cortar) uma ou n linhas:

dd ou ndd

  • Copiar uma ou n linhas:

yy ou nyy

  • Colar o que foi copiado ou apagado uma ou n vezes após a linha atual:

p ou np

  • Cole o que foi copiado ou apagado uma ou n vezes antes da linha atual:

P ou nP

  • Excluir (cortar) do início da linha até o cursor:

d0

  • Excluir (cortar) do cursor até o final da linha:

d$

  • Copiar do início da linha até o cursor:

y0

  • Copiar do cursor até o final da linha:

y$

  • Excluir (cortar) o texto da linha atual:

dL ou dG

  • Copiar o texto da linha atual:

yL ou yG

Cancelar uma ação

  • Desfazer a última ação:

u

  • Desfazer as ações na linha atual:

U

Cancelar cancelamento

  • Cancele um cancelamento

Ctrl+r

Comandos EX

O modo Ex permite que você aja no arquivo (saving, layout, opções, ...). Também é no modo Ex que a pesquisa e os comandos de substituição são inseridos. Os comandos são exibidos na parte inferior da página e devem ser validados com a tecla ENTER.

Para alternar para o modo Ex, a partir do modo comando, digite :.

Número de linhas do arquivo

  • Mostrar/ocultar numeração:

:set nu, ou o mais extenso :set number

:set nonu, ou o mais extenso :set nonumber

Procurar por uma sequência de caracteres

  • Procurar uma sequência de caracteres a partir do cursor:

/string

  • Pesquisar uma sequência de caracteres antes do cursor:

?string

  • Encontra a próxima ocorrência do conjunto de caracteres:

n

  • Vá para a ocorrência anterior encontrada:

N

Existem caracteres curinga para facilitar a pesquisa no VI.

  • [] : Pesquisa por um intervalo de caracteres ou um único caractere cujos possíveis valores são especificados.

Exemplo:

/[Pp]alavra : pesquisa palavra e Palavra

/[1-9]palavra : pesquisa 1palavra, 2palavraxpalavra onde x é um número

  • ^ : Procura por linhas começando com caracteres.

Exemplo:

/^Palavra

  • $ : Procura por linhas que terminam com caracteres.

Exemplo:

/Palavra$

  • . : Procura um único caractere, exceto caracteres de nova linha.

Exemplo:

/W.rd : pesquisa Word, Ward

  • * : O número de vezes que o caractere anterior aparecer, 0 vezes, ou qualquer número de vezes.

Exemplo:

/W*d

Nota: Se quiser ignorar maiúsculas/minúsculas (temporariamente) ao procurar strings, por favor digite :set ic.

Substituir uma string

Da primeira até a última linha do texto, substitua a string pesquisada pela string especificada:

:1,$ s/pesquisar/substituir

Nota: Você também pode utilizar :0,$s/pesquisar/substituir para especificar o início no começo absoluto do arquivo.

Da linha n à linha m, substitui a string pesquisada pela string especificada:

:n,m s/pesquisar/substituir

Por padrão, apenas a primeira ocorrência de cada linha encontrada é substituída. Para forçar a substituição de cada ocorrência, você tem que adicionar /g no final do comando:

:n,m s/pesquisar/substituir/g

Procurar por um arquivo inteiro para substituir a string pesquisada pela string especificada:

:% s/pesquisar/substituir

Deleta a linha especificada

  • Apagar uma linha em branco

:g/^$/d

  • Deletar linhas do número n ao m

:n,md

  • Deletar a linha que contém uma string

:g/string/d

  • Deletar uma linha que não contém uma string

:g!/string/d

  • Deletar todas as linhas começando com #

:g/^#/d

O g aqui significa global.

Operações de arquivo

  • Salvar o arquivo:

:w

  • Salvar com outro nome:

:w nomearquivo

  • Salvar da linha n até a linha m em outro arquivo:

:n,m w nomearquivo

  • Recarregar o último registro do arquivo:

e!

  • Cole o conteúdo de outro arquivo após o cursor:

:r nomearquivo

  • Sair da edição de um arquivo sem salvar:

:q

  • Forçar sair da edição de um arquivo que foi modificado mas que não deseja salvar:

:q!

  • Salvar e fechar o arquivo:

:wq or :x

Outras funções

É possível executar o VI especificando as opções a serem carregadas para a sessão. Para fazer isso, você deve usar a opção -c:

$ vi -c "set nu" /home/rockstar/file

Também é possível inserir os comandos Ex em um arquivo chamado .exrc colocado no diretório de login do usuário. Em cada início de VI ou VIM, os comandos serão lidos e aplicados.

comando vimtutor

Há um tutorial para aprender como usar o VI. Ele é acessível com o comando vimtutor.

$ vimtutor