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
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/2 e Amiga.
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:
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.
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:
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.
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:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 |
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é!
Sensacional o tutorial, parabéns
CurtirCurtir
Obrigado!
CurtirCurtir
Parabéns!, Estamos esperando pela parte II, III e mais. Vlw
CurtirCurtir
Pingback: Utilizando o Vim – parte 2 | giovannireisnunes