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) oux
(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, 2palavra … x
palavra 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 linham
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