Utilizando o Vim – parte 1

vim-1_tela-inicial

O Vim é um editor de textos clone do VI e disponível (quase que por padrão) em todas as distribuições de Linux, BSD, outros sistemas baseados em UNIX (como macOS X, Solaris etc) ou mesmo nos “não baseados” como é o caso do OpenVMS e de seu “filhote”, o Windows.

Com operação baseada em combinações  de teclas e/ou digitação em linha de comandos ele pode parecer complicado e sem recursos para quem está habituado com editores com menus, ícones etc. Mas o Vim é um editor poderoso, customizável e este aqui é “mais um tutorial” com o mínimo necessário para usá-lo.

E nesta primeira parte, o básico para se editar um documento sem precisar usar o mouse do terminal gráfico… 🙂

Um pouco de história

vim-1_stevie-3.10

Apesar do Vim ser o acrônimo para Vi IMproved ele não descende diretamente do VI original — que foi escrito em 1976 por Bill Joy para o BSD UNIX — e sim de um outro clone dele, o STEVIE (ST Editor for VI Enthusiasts), feito por Tim Thompson para os computadores Atari ST em 1987 e portado em 1988 por Tony Andrews para UNIX, OS/2Amiga.

E foi a partir do código fonte dele que Bram Moolenaar criou o Vim em 1991 originalmente para os computadores Commodore Amiga — uma curiosidade que não merecerá explicação, o AmigaOS trazia o microEMACS como editor de textos padrão do sistema.

Aliás, é vi ou vim? Em quase todas as distribuições os dois comandos estão disponíveis e fazem referência ao mesmo binário (o “/usr/bin/vim”) e a diferença está no fato de que chamar o “vi” significa o mesmo que executar o Vim em modo de compatibilidade (“vim -C”).

Na tela do STEVIE, mostrando a primeira página de ajuda (o comando “:help”), possui uma série de atalhos de posicionamento no documento que são também válidas dentro do Vim.

O essencial

Começando pelo essencialmente básico (entrar, sair, carregar, editar e salvar), abra um novo terminal e digite:

$ vim

Poderá haver diferença no número da versão, no idioma das mensagens, na cor de algum elemento na tela mas basicamente será uma tela como a que está mais acima informando como acessar a ajuda on-line dele e, claro, como fechar o programa — e assim não precisar procurar no Stack Overflow como é que faz… 🙂

O Vim  possui dois modos de operação, um específico para inserir comandos e o outro para a edição do documento e, por padrão, ele sempre iniciará no modo de comandos. Para começar a escrever deve-se a tecla «I» ou então «Insert» e digite — para facilitar as teclas estão grafadas em laranja:

«Insert»#!/usr/bin/env bash«Enter»
for cor in {0..7}; do«Enter»
«Tab»tput setaf ${cor}«Enter»
«Tab»printf "[ cor ]"«Enter»
«Tab»tput sgr0«Enter»
done«Enter»

Para sair do modo de edição e voltar para o de comandos pressione a tecla «Esc» e então digite:

:write colors.sh«Enter»

O comando “:write” por ser simplificado como “:w” e salva o documento atual com o nome de “colors.sh”, no caso de arquivo preexistente o nome pode ser omitido para que ele salve as alterações. E dependendo de como o editor está configurado é capaz do realce de sintaxe¹ ser ativado e a tela ter ficado mais ou menos assim:

vim-1_tela-colors-1

Hora de testar o programa, ainda no modo de comando, digite:

:quit«Enter»

Para sair do programa (assim como no comando anterior ele pode ser abreviado para “:q”) e retornar à linha de comando do terminal. E para testar o script que acabou de ser digitado:

$ bash ./colors.sh 
[ cor ][ cor ][ cor ][ cor ][ cor ][ cor ][ cor ][ cor ]$

Mas ficou faltando quebrar a linha no final do programa! Então, digite “vim” novamente para carregar o editor e insira o seguinte comando²:

:edit colors.sh«Enter»

Como nos comandos anteriores, pode-se apenas usar “:e” e com o arquivo carregado vá até a última linha do documento (o “done”) e faça:

«o»printf "\n"«Enter»

No modo de comando a tecla «o» faz o Vim inserir uma linha abaixo da posição do cursor e automaticamente entrar no modo de edição — pressionando «shift»+«o» ele fará o mesmo mas inserindo a nova linha acima de onde o cursor se encontra.

Daí pressionar «Esc» e digitar:

:wq«Enter»

E o Vim salvará o arquivo em disco e logo em seguida se encerrará, retornando à linha de comando — o comando “:wq” pode ser substituído pelo “:x” que faz a mesma coisa.

Aí é testar a versão corrigida do programa.

(¹) Se ele não foi ativada automaticamente use o comando “:syntax on”.

(²) Usar vim colors.sh teria o mesmo efeito mas queria também demonstrar como carregar arquivos de dentro do editor.

Blocos de texto e movimentação

Que tal acrescentar também as cores de fundo no programa de testes? Então abra novamente o programa com:

$ vim colors.sh

Com o vim carregado e o programa na tela digite «g»«g» (assim mesmo, a tecla duas vezes) para ir para a primeira linha do documento — pressionando «Shift»+«g» «Shift»+«g» se tem o efeito contrário indo para a última linha — e digite:

«o»for fundo in {0..7}; do«Enter»
«Enter»
done«Enter»

Sim, o “done” poderia ser colocado já no final do arquivo mas há algo mais interessante para fazer aqui.

Pressione «Esc» para sair do modo de edição, posicione o cursor no começo da linha “for frente in …” e pressione «v» e pressione a tecla «↓» até que todo o laço e o printf estejam selecionados.

vim-1_tela-colors-2

Pressione «d» para cortar o bloco, coloque o cursor na linha em branco abaixo de “for fundo in …” e pressione «p» para colar o bloco que acabou de ser recortado e pronto. Se fosse para apenas copiar o bloco use a tecla «y», de yank.

Para facilitar um pouco os passos, no modo de comando digite:

:set number

Para que a numeração das linhas seja exibida² no canto esquerdo da janela de texto e depois:

:4

Para posicionar o cursor sobre a 4ª linha do documento — onde deve estar o primeiro tput — pressione «o» para inserir uma nova linha e entrar no modo de edição e digite:

«Tab»tput setab ${fundo}

Saia do modo de edição, vá até a linha 10 e pressione «Shift»+«j» para unir o conteúdo da linha de abaixo nela. Ainda no modo de comando faça:

7«↑»

Isto informa ao Vim que é para repetir sete vezes a pressão da tecla «↑» e te colocará na linha do “for frente in …”, então digite:

7«>»«>»

Para indentar as sete linhas seguintes em mais um nível e o resultado final de todas estas operações será como isto aqui:

vim-1_tela-colors-3

Para desabilitar a numeração das linhas use:

:set nonumber

Se alguma coisa ficou diferente use a tecla «u» para desfazer ou então a combinação ou mesmo «Ctrl»+«r» para refazer uma operação desfeita. Agora é salvar o arquivo, sair do editor e testar as alterações feitas no programa — as instruções de como fazê-lo estão acima! 🙂

Tabulação

Ao executar o programa percebe-se que quando a cor da frente é igual a cor do fundo o texto “cor” não é impresso (melhor, ele é impresso com a mesma cor da de fundo, o que dá na mesma). Execute novamente o Vim abrindo o arquivo “colors.sh”, vá até a terceira linha, entre no modo de inserção, insira uma nova linha entre o “for frente in …” e o “tput …” e escreva:

«Tab»«Tab»if (( frente == fundo )); then
«Tab»«Tab»«Tab»let frente=7-frente
«Tab»«Tab»fi

Salve, saia e execute o programa. O problema das cores estará resolvido.

vim-1_tela-colors-4

Porém, com quatro níveis de indentação a tabulação padrão de 8 caracteres deixa o programa muito esticado. É possível corrigir isto facilmente dentro do Vim ajustando a largura da tabulação com o comando:

:set tabstop=4

É possível experimentar outros valores menores ou mesmo maiores do que 8, porém este ajuste só terá validade durante esta execução do Vim. E para torná-la permanente bastaria acrescentá-lo — sem o “:” — ao arquivo “~/.vimrc”³ para tornar-se configuração padrão do editor no seu usuário.

Mas a ideia de uma tabulação de 4 espaços padrão para todos o documentos abertos dentro do Vim pode não ser uma boa ideia então é melhor configurar o editor para pegar este valor do próprio arquivo então no final do “colors.sh” insira a linha:

# vim: tabstop=4

Para que o Vim saiba interpretar esta configuração abra o arquivo “~/.vimrc”:

:e ~/.vimrc

Adicione a seguinte linha (se o realce de sintaxe não estiver aparecendo por padrão insira aqui o comando “syntax on” também) para que o Vim identifique parâmetros de configuração nos arquivos:

set modeline

Daí é salvar o arquivo, abri-lo novamente e vê-lo já com a tabulação padrão de 4 espaços.

(³) Este arquivo contém os parâmetros de configuração do Vim para o seu usuário.

Fim desta parte

O resultado final do “colors.sh” é este aqui:


#!/usr/bin/env bash
for fundo in {0..7}; do
for frente in {0..7}; do
if (( frente == fundo )); then
let frente=7-frente
fi
tput setaf ${frente}
tput setab ${fundo}
printf "[ cor ]"
tput sgr0
done
printf "\n"
done
# vim: tabstop=4

view raw

colors.sh

hosted with ❤ by GitHub

E como a configuração da tabulação de quatro espaços é específica do Vim o arquivo sempre terá a tabulação padrão em qualquer outro editor mas na próxima parte mostrarei como corrigir isto como também a abrir mais de um documento por vez, dividir a tela e como esconder/exibir trechos do código.

Até!

4 comentários sobre “Utilizando o Vim – parte 1

  1. Pingback: Utilizando o Vim – parte 2 | giovannireisnunes

Os comentários estão desativados.