Resumo
O Vi foi o primeiro editor em tela cheia criado. É um dos principais alvos daqueles que não gostam do UNIX®, mas também é um dos melhores argumentos dos que defendem o sistema: apesar de ser complicado para aprender, ele é uma ferramenta extremamente poderosa uma vez que você adquira o hábito de utilizá-lo. Com pouco uso do teclado um usuário do Vi pode mover montanhas, e pouquíssimos editores, com exceção do Emacs, podem alegar fazer o mesmo.
Na verdade a versão oferecida com o Mandriva Linux é o Vim, que significa VI iMproved (VI melhorado), mas nós iremos nos referir a ele como Vi ao longo deste capítulo.
Se você quiser aprender mais sobre o Vi, você pode dar uma olhada no Hands-On Introduction to the Vi Editorou na página do Vim.
Para começar a utilizar o Vi nós utilizamos uma linha de comando semelhante aquela do Emacs. Então vamos voltar aos nossos dois arquivos e digitar:
$ vi arquivo1 arquivo2
Neste ponto, você vai estar olhando para uma janela parecida com esta:
Agora você está no modo de comando em frente do primeiro arquivo aberto. Neste modo você não pode inserir um texto em um arquivo. Para isto você precisa mudar para o modo de inserção.
Aqui estão alguns atalhos para a inserção de texto:
No modo de
inserção você verá a string --INSERT--
aparecer na parte de baixo da tela (então você pode saber em que
modo está). Este é o único modo em que você pode inserir
texto. Para retornar ao modo de comando, pressione a tecla
Esc.
No modo de inserção você pode utilizar as teclas Backspace e Del para apagar texto. As setas direcionais irão permitir que você se movimente no texto, tanto no Modo de Comando como no Modo de Inserção. No modo de comando temos também outra combinação de teclas que nós iremos ver mais tarde.
O modo de execução é acessado pressionando a tecla : no modo de comando. Um :
irá aparecer no lado esquerdo da parte de baixo da tela com o cursor posicionado após ele. O Vi irá considerar tudo o que você digitar até pressionar Enter como um comando. Se você apagar tudo, incluindo o :, você irá retornar ao modo de comando e o cursor irá retornar à sua posição original no texto.
![]() | Dica |
---|---|
Você pode utilizar a completação de comandos no modo de execução, digite as primeiras letras do comando e pressione a tecla Tab para completá-lo. |
Para salvar as alterações de um
arquivo digite :w
no modo de comando. Se
você quiser salvar o conteúdo do buffer para outro arquivo, digite :w
<nome_do_arquivo>
.
Para alternar, no
mesmo buffer, entre os arquivos que foram indicados na linha de
comando, digite :next
para ir ao próximo
arquivo e :prev
para o arquivo
anterior. Você também pode utilizar :e
<nome_do_arquivo>
, que deixa você escolher
entre alternar para o arquivo desejado se ele já estiver aberto,
ou abrir outro arquivo. Você também pode utilizar completação.
Assim como no Emacs,
você pode ter vários buffers exibidos na tela. Para isto, utilize
o comando :split
.
Para alternar
entre os buffers, digite Ctrl-w
j para ir ao buffer abaixo ou
Ctrl-w
k para ir ao buffer acima. Você também pode
utilizar a tecla para cima e para baixo ao invés das teclas j ou
k. O comando :close
esconde um buffer e o comando :q
fecha.
Você deve estar ciente que se você tentar esconder ou fechar um buffer sem salvar as modificações, o comando não irá ser executado e o Vi irá exibir esta mensagem:
No write since last
change (use ! to override)
Neste caso, faça
como foi indicado peli Vi e digite :q!
ou
:close!
.
Além das teclas Backspace e Del no modo de edição, o Vi possui muitos outros comandos para apagar, copiar, colar e substituir textos em modo de comando. Todos os comandos que serão mostrados a seguir estão separados em duas partes: a ação que será executada e seu efeito. A ação pode ser:
O efeito define que grupo de caracteres o comando irá agir sobre.
h, j, k, l: um caractere à esquerda, abaixo, acima, à direita[20]
e, b, w: para o final, início da palavra atual e início da próxima palavra.
^, 0, $: para o primeiro caractere não branco da linha atual, o início e o fim da linha atual.
f<x>
: vai para
apróxima ocorrência do caractere
<x>
. Por exemplo,
fe
move o cursor para a próxima
ocorrência do caratere e
.
/<string>
,
?<string>
: para a próxima e
última ocorrência da string ou expressão regular
<string>
. Por exemplo,
/foobar
move o cursor para a próxima
ocorrência da palavra foobar
.
Cada um destes caracteres de “efeito” ou comandos de movimentação pode precedido por um número. Para o G, (“Go”) isto referencia o número da linha no arquivo. Baseado nesta informação, você pode fazer todos os tipos de combinação.
Enquanto muitos destes comandos não são muito intuitivos, a melhor forma de se lembrar dos comandos é utilizando-os. Mas você pode ver que a expressão “mover montanhas com poucas teclas” não é um exagero.
O Vi contém um comando que nós já vimos para copiar texto: o comando y. Para cortar texto, simplesmente use o comando d. Há 27 memórias ou buffers para armazenar texto: uma memória anônima e 26 memórias nomeadas com as 26 letras, em caixa baixa, do alfabeto do inglês.
Para utilizar a
memória anônima você entra com o comando da maneira “como
ele é”. Assim o comando y12w
irá
copiar as 12 palavras após o cursor na memória anônima[21]. Utilize d12w
se você
quer recortar esta área.
Para utilizar uma
das 26 memórias nomeadas, entre com a sequência
"<x>
antes do comando, onde
<x>
indica o nome da memória. Entã,
para copiar as mesmas 12 palavras na memória
k
, você escreveria "ky12w
, ou
"kd12w
para recortá-las.
Para colar o
conteúdo da memória anônima, utilize o comando
p
ou P
, para
inserir texto depois ou antes do cursor. Para colar o conteúdo de
uma memória nomeada, utilize "<x>p
ou
"<x>P
da mesma maneira (por
exemplo "dp
irá colar o conteúdo da
memória d
depois do cursor).
Para continuar esta tarefa, nó vamos:
Copiar
novamente as seis primeiras palavras da sentença na memória
r
(por exemplo):
"ry6w
[22];
alterne para o
buffer file2
, que está localizado abaixo: Ctrl-w j;
Nós obtivemos o resultado esperado, como mostrado na Figura 8.6, “VIM, depois de ter copiado o bloco de texto”.
Procurar por texto
é muito simples: no modo de comando, você simplesmente digita
/ seguido da string de busca, e então pressiona
a tecla Enter. Por exemplo,
/festa
irá procurar pela string
festa
a partir da posição atual do
cursor. Pressionando n a busca será repetida e
o cursor levado para a próxima ocorrência, e se você chegar ao
fim do arquivo, a busca irá começar novamente do início. Para
procurar em sentido inverso, utilize ? ao invés
de /.
O comando para
sair é o :q
(na verdade, este comando
fecha o buffer atual, como nós já vimos, mas se ele é o único
buffer aberto, você irá sair do Vi). Há um atalho: como na maior parte das vezes você edita apenas um arquivo, para sair, utilize:
Note que se você
possui vários buffers abertos, o :wq
irá
salvar somente o buffer ativo e então fechá-lo.