5.2 Vim (VI iMproved)
O Vim (publicado em 1991) é uma versão melhorada do antigo VI. Sua interface simplista esconde recursos poderosos e uma infinidade de possibilidades. Além de ser muito utilizado, principalmente por desenvolvedores, este editor caiu no gosto de muitos administradores de sistema. Para abrir o Vim, execute o comando:
$ vi
Veja a tela de boas-vindas:
Figura 17 - Tela de boas-vindas do Vim
O Vim pode operar basicamente de quatro formas: modo normal, modo de inserção
, modo visual
e modo de comando
. Veja as definições:
- Modo normal: falaremos deste mais adiante; por enquanto se apegue somente à informação de que para entrar neste modo basta pressionar a tecla ESC. Quando o Vim é iniciado, ele carrega por padrão neste modo;
- Modo de inserção: esse modo é voltado especificamente para a edição de texto; para acessá-lo, basta entrar no modo normal e pressionar uma das teclas a seguir:
- a (append): inicia o modo de inserção um caractere após o atual;
- A: inicia o modo de inserção no final da linha;
- i (insert): inicia o modo de inserção antes do caractere atual;
- I (i maiúsculo): inicia o modo de inserção no início da linha.
- Modo visual: permite selecionar texto verticalmente, exibindo um destaque visual; para acessá-lo, basta entrar no modo normal e digitar:
- v: seleção de caracteres;
- V: seleção de linhas;
- ^V: seleção de blocos.
- Modo de comando: falaremos deste mais adiante; por enquanto se apegue somente à informação de que, para acessá-lo, basta entrar no modo normal e pressionar : (dois-pontos).
Siga os passos abaixo para uma demonstração prática:
- Execute o comando vi no terminal;
- A tela de boas-vindas será apresentada; pressione a tecla i para entrar no modo de inserção;
- Digite a frase "Bem-vindo ao curso de Linux...";
- Pressione ESC para voltar ao modo de comando;
- Digite ":wq curso.txt" e pressione ENTER.
A instrução :wq (modo de comando) informa ao editor que desejamos escrever/salvar o texto e posteriormente sair do editor. O nome do arquivo só é obrigatório caso este ainda não exista, ou seja, quando se trata de um arquivo novo. Já para editar um arquivo existente, utilize a instrução:
$ vi nome_do_arquivo
Veja uma demonstração prática utilizando os modos normal, inserção e comando:
- No terminal executamos:
vi curso.txt
; - Com o apoio das teclas direcionais, desloque o cursor até a letra L e digite dw;
- Pressione a tecla i;
- Digite GNU/Linux e pressione ESC;
- Digite :wq e pressione ENTER.
Vamos analisar os passos acima:
- A instrução "vi curso.txt" indica que iremos abrir o arquivo curso.txt;
- O Vim inicia por padrão no
modo de comando
; utilizamos as teclas (setas) direcionais para deslocar o cursor até a letra L e digitamos dw para apagar a palavra Linux; - Após apagar a palavra, entramos no modo de inserção ao pressionar a tecla i;
- Digitamos o que queríamos e voltamos ao
modo de comando
por meio da tecla ESC; - Digitamos :wq (escreve/salva e sai) e pressionamos ENTER para executar o comando.
5.2.1 Comandos comuns
A lista abaixo representa as operações mais comuns, ou cotidianamente mais utilizadas, dentro do Vim.
5.2.1.1 Salvar/Sair (modo de comando)
- :w = salva o arquivo. É possível passar um parâmetro adicional para nome;
- :x = salva se o arquivo tiver sido modificado;
- ZZ = salva e sai do editor;
- :wq = salva e sai do editor;
- :w! = salva o arquivo mesmo se tiver sido aberto no modo leitura (readonly);
- :q = sai do editor. Se o arquivo não tiver sido salvo, será apresentado um aviso;
- :q! = força a saída do editor sem apresentar aviso;
- :10,20 w! ~ \texto.txt = salva as linhas de 10 a 20 em ~\texto.txt.
5.2.1.2 Movimentação (modo normal)
- k = move o cursor uma linha para cima;
- j = move o cursor uma linha para baixo;
- h = move o cursor um caractere para a esquerda;
- l = move o cursor um caractere para a direita.
A todas as 4 possibilidades acima podemos anteceder um valor numérico caso seja de nosso interesse deslocar o cursor x caracteres ou x linhas de uma única vez. Por exemplo: 5j (desloca o cursor 5 linhas para baixo).
5.2.1.3 Saltos (modo normal)
- gg = leva o cursor para o início do arquivo;
- G = leva o cursor para o fim do arquivo;
- 0 (zero) = leva o cursor para o início da linha;
- $ = leva o cursor para o fim da linha;
- * = leva o cursor para a próxima ocorrência da palavra em que ele está no momento;
- % = leva o cursor para o parêntese correspondente;
- } = leva o cursor para o fim do parágrafo.
5.2.1.4 Editar
- dl = apaga uma letra;
- dw = apaga uma palavra a partir da posição do cursor;
- dd = apaga a linha atual;
- dˆ ou d0 = apaga da posição atual até o início da linha;
- d$ ou D= apaga da posição atual até o fim da linha;
- dgg = apaga da posição atual até o início do arquivo;
- dG = apaga da posição atual até o fim do arquivo.
A lista acima nos permite apagar parte do texto, porém, o conteúdo apagado na verdade é copiado para a memória (buffer = área de transferência), o que nos permite deslocar o cursor para outra posição e utilizar a tecla p para colar o texto na posição desejada, caso seja essa a intenção. Outra informação igualmente importante é que um valor numérico pode anteceder os comandos dl, dw e dd, respectivamente para apagar um número x de letras, palavras ou linhas.
Já se sua intenção for copiar o conteúdo sem deletá-lo/apagá-lo, basta utilizar os comandos:
- yl (L minúsculo) = copia uma letra;
- yw = copia uma palavra;
- yy = copia uma linha;
- yˆ ou y0 = copia da posição atual até o início da linha;
- y$ = copia da posição atual até o fim da linha;
- ygg = copia da posição atual até o início do arquivo;
- yG = copia da posição atual até o fim do arquivo.
Assim como ocorre para dl, dw e dd, também podemos anteceder os comandos yl, we e yy com um valor numérico para representar respectivamente o número de letras, palavras e linhas a serem copiadas. Por exemplo: 5yy (irá copiar 5 linhas).
5.2.1.5 Desfazer (modo normal)
- u = desfaz a última alteração (pode ser repetido);
- U = desfaz todas as alterações feitas na última linha editada.
5.2.1.6 Buscar/Substituir (modo normal)
- /palavra = busca a palavra informada;
- // = repete a busca realizada anteriormente;
- * = após uma busca, pode ser utilizado para levar o cursor até a próxima ocorrência;
- :s/buscar/substitui = busca uma ocorrência e substitui pelo valor informado;
- :1,10 s/buscar/substitui = busca e substitui da linha 1 até a 10;
- :1,$ s/buscar/substitui = busca e substitui da linha 1 até o fim do arquivo;
- :% s/buscar/substitui = busca e substitui no arquivo inteiro (equivale ao comando anterior);
:link: Wiki de comandos: https://pt.wikibooks.org/wiki/Vim Documentação oficial (inglês): http://vimdoc.sourceforge.net/htmldoc/help.html
O Vim é muito completo e permite até mesmo realizar operações complexas baseadas em expressão regular. As possibilidades são muitas; para mais informações consulte os links apresentados acima.