De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Aurélio Marinho Jargas
Data de Publicação: 23 de Julho de 2004
Adorado como religião, o VIM duela com o Emacs na preferência dos linuxers
Primeiro uma apresentação breve. O vim
é o sucessor mais difundido do
vi
, que é filho do ex
com o ed
, que por sua vez são filhos do qed
, e por aí
vai. O vi
é a sigla de Visual Interface. Note que naquela época (início
dos anos 80), não era comum como hoje, você ter um editor de textos visual,
ou seja, você ver na tela o texto que está sendo editado. Tente imaginar
como é editar um texto sem vê-lo. Quer tentar? Experimente o editor ed
,
presente em qualquer distribuição Linux.
Muito mais tarde, em 1992, apareceu no mundo Unix um concorrente do vi
,
o vim
(de "Vi IMitator", o imitador do vi) e logo se tornou popular,
pois além de ser um clone muito bem feito do vi
, possuía muitas outras
funcionalidades, como uso da tecla TAB para completa r nomes de arquivos,
vários níveis de "undo" (desfazer comando), reconhecimento de sintaxe e
histórico de linha decomando.
Então de "imitator" ele passou a ser chamado de "Vi IMproved", o vi
melhorado. O vim
se tornou padrão em sistemas Linux, onde o /bin/vi
é uma
ligação simbólica para o /usr/vim
, e conseqüentemente, a grande maioria usa
vim
, mas acha que usa vi
. Acabaram quase que virando sinônimos, mas,
lembre-se, vi
é diferente de vim
, e é sobre ele que este artigo comentará.
Apesar do vim
ser um editor de textos extremamente voltado para
programação, ele também é poderoso para editar textos comuns (como esse) e
possui muitas funcionalidades avançadas que outros editores gráficos como o
Microsoft Word® têm, como abrir vários arquivos ao mesmo tempo, autocorreção,
auto-identação, seleção visual, macros e outras que outro editor nem sonha ter,
como seleção vertical de texto, interação total com o sistema operacional,
uso de expressões regulares, sintaxe colorida, etc.
O vim
não é uma exclusividade de sistemas Unix, ele já foi portado para
várias outras plataformas, como Amiga®, MacOs®, SunOs®, DOS®, Windows® e
muitas outras. E como atrativo maior para os usuários novatos, também existe
o gvim
, para usar no X, com o mouse, menus, botões e todas as facilidades de
uma aplicaçã o gráfica. Sendo o gvim
apenas uma interface mais amigável do
vim
, todas as funcionalidades deste funcionam naquele.
Então vamos começar nossa viagem ao mundo maravilhoso do vim
.
Primeiramente, a característica básica dele: ele tem dois modos de operação,
um de inserção, em que as letras do teclado são puramente letras, como em
qualquer outro editor, identificado por um "-- INSERT --
" na parte inferior
esquerda da tela, e o outro que é o modo de comandos, em que as letras são
comandos de edição e é o modo padrão ativo quando você abre um arquivo no
vim
. Para entrar no modo de inserção basta digitar i
. Para sair do modo de
inserção e voltar ao de comandos, basta apertar a tecla Esc
. Todos os comandos
que serão apresentados neste artigo deverão ser executados no modo de comandos.
Pode parecer redundante dizer isso, mas para quem não está acostumado com os
dois modos, no início pode confundir um pouco. E Se você entrou no vim
e não faz idéia de como sair, basta um ZZ
. Lembre-se, no modo de comandos.
Sendo um editor de textos feito para funcionar no modo texto, ele tem suas
limitações visuais, que não lhe permitem deixar uma palavra em itálico
por exemplo. Mas o que pode ser feito, o vim
faz. Por exemplo,
como centralizar a linha atual? Basta um :ce
, ou o nome completo,
:center
. De maneira similar temos o :left
e o :right
. E para
fazer isso em várias linhas? Temos a seleção visual no vim
também.
Digite v
e com as setas selecione o texto, depois um :ce
centraliza
todo o texto. Como característica tradicional do vi
, um mesmo comando com
letra maiúscula faz uma operação complementar, ou similar, mas com uma
variante. No caso da seleção, se usar V
(Shift+v
) ao invés de v
, a seleção
automaticamente pega a linha toda. E para seu deleite, e inveja de outros
editores, com o Ctrl+v
, temos a seleção vertical! Como selecionar as três
primeiras letras de várias linhas? O Ctrl+v
faz isso pra você. E seguindo essa
filosofia podemos deduzir o funcionamento de outros comandos do vim
. Mais
um exemplo: o comando x
apaga um caractere à direita, enquanto o X
apaga à esquerda (como as teclas Delete
e BackSpace
).
Também podemos editar dois ou mais arquivos ao mesmo tempo e ver todos
simultaneamente, separados horizontalmente. Experimente, editando um arquivo
qualquer no vim
, digite :split /etc/passwd
. Para alternar entre as
janelas, basta dois Ctrl+w
(w
de window). Como na linha de comando,
a tecla TAB
funciona para completar nomes de arquivos (e também de
comandos do próprio vim
). Então no split
acima, apenas um
:split /etc/pas<TAB>
já funcionaria.
Já que o TAB
foi citado, no interpretador de comandos bash, basta digitar
set -o vi
para utilizar os comandos do vi
na linha de comando.
Procura, substituição, deleção, entre outros para agilizar seu uso do console.
Para escritores de textos em geral, o vim
tem facilidades muito úteis.
Uma delas é a autocorreção (abbreviation), que funciona como apelidos, por
exemplo :ab AMJ aurélio marinho jargas
. Então sempre que eu estiver digitando
um texto qualquer e digitar AMJ
, o vim
automaticamente o expandirá para
meu nome completo.
Outra característica simples e eficiente é a definição de
marcas ao longo do texto. Por exemplo, na linha em que começa a conclusão do
texto, você faz uma marca de nome `c': mc
, em que m
é o comando de marcação
e c
é o nome da marca, que pode ser qualquer letra ou número. De maneira
similar, na introdução você pode fazer um mi
e no meio do texto você faz
um mm
. Para pular para uma marca o comando é `
. Então para ir para a marca
c
, da conclusão, basta um c'
. Infelizmente como nós utilizamos o
sinal `
para representar a crase, fica incômodo utilizá-lo como comando. A
solução é fazer um mapeamento de teclas, por exemplo mapear esse comando
para a tecla de função F4: :map <f4>
. Pronto, agora para irmos para a
marca c'
, basta digitar <f4>c
.
Com o mapeamento de teclas, podemos colocar qualquer seqüência complexa de
comandos do vim
numa tecla de função. Mais um exemplo, um mapeamento útil
para inserir a data atual pegando a saída do comando do Linux chamado date
,
fica :map <f5> r!date<cr>
. O `r!'
joga para o arquivo a saída do comando
date
e o `cr'
representa a tecla Enter
.
Para programadores, o vim
só falta codificar, pois do resto ele toma
conta. O principal é o reconhecimento automático da sintaxe de várias
linguagens de programação. Na versão 5.5, são mais de 150 linguagens e
padrões, que vão desde as mais famosas como Python, C, Perl, Clipper e sql
até monstros como dracula, simula e z8a. O vim
identifica a linguagem,
colorindo o código, tornando imediatamente visível qualquer erro cometido
pelo programador, enquanto este digita (:set syntax on
). Tem identação
automática (:set autoindent
), utilizando tabulação ou espaços (:set expandtab
)
e mostra o par que complementa as chaves e colchetes quando você os fecha
(:set showmatch
). E para fechar, ele converte todo o código colorizado para
HTML, para você imprimi-lo (2html.vim
). Imbatível.
E para os aficcionados, o vim
tem uma linguagem própria de programação,
em que você pode construir seus próprios comandos, utilizando algoritmos e
várias funções pré-definidas como qualquer outra linguagem de programação. Como
conseqüência direta disso, existem vários aplicativos feitos pelos usuários que
rodam dentro do vim
, sendo talvez o de maior expressão um leitor de correio
eletrônico inteiramente feito com funções do vim
e Perl, chamado vine
.
A maioria dos comandos aqui citados que começam com :
, são comandos de
configuração, e para você não ter que digitá-los a cada vez que entra no
vim
, ele tem um arquivo de configuração, que fica no diretório base
do usuário:
~/.vimrc
. Veja nas referências um endereço em que tem um 2Evimrc comentado em português.
Outro tópico interessante são os dígrafos. Para sistemas que não têm
solução de acentuação ou que estão mal configurados, o vim
resolve o
problema. Enquanto digita o texto, basta um Ctrl+k
seguido dos dois caracteres
que compõem o dígrafo, assim:
á = Ctrl+k `a ç = Ctrl+k ,c ® = Ctrl+k rO
Para obter uma lista completa de todos os dígrafos, :dig
. E todas essas
funcionalidades estão extensivamente descritas na documentação on-line
que acompanha o editor :help
, que pode ser facilmente "navegada" entre
tópicos, como numa página HTML, e é um exemplo de documentação eficiente de
um programa, com cerca de 1Mb de texto puro!
A tecla Tab
ajuda muito aqui também, então para ver os tópicos de ajuda
sobre o mouse por exemplo, :help mous<TAB>
.
A partir da versão 6.0 temos duas funcionalidades há muito pedidas pelos
usuários: "vertical split" : ver dois ou mais arquivos abertos na tela,
separados por barras verticais; "folding": como no MS Word, você ter
aquela visão estruturada, dos tópicos do documento, expansível e retrátil. É
difícil de implementar e será um marco na história do vim
.
Um detalhe peculiar é o fanatismo e fidelidade ao programa que existe por parte dos usuários. É como se fosse uma religião, uma seita, em que todos os seguidores defendem seu editor até o último argumento e uma preferência por outro editor pode gerar segmentação de grupos.
O vim
tem um arquiinimigo, que se chama emacs, e tem usuários igualmente fanáticos.
É desnecessário dizer que quem usa vim
odeia o emacs e vice-versa.
Discussões entre usuários dos dois editores são intermináveis e são chamadas
de "guerras santas ". E não poderia ser diferente, pois esses editores seguem
filosofias completamente opostas.
O emacs tenta ser uma central de aplicações, tendo embutido nele várias
outras tarefas que normalmente não estão num editor de textos como
telnet, navegador, jogo e leitor de correio eletrônico/notícias,
entre outros, e todos os seus comando s são mnemônicos e
extensos como: calendar-mouse-insert-islamic-diary-entry
e
gnus-summary-lower-same-subject-and-select
.
Enquanto isso o vim
é apenas um editor de textos, para editar textos!
Seus comandos são todos compostos por uma ou duas letras (ou símbolos), como
p
, x
, /
, #
e gq
. Simples, rápido e eficiente.
E se mesmo com tudo isso você ainda não se convenceu do quão bom o vim
é, saiba que ele é chamado de "charityware", algo como software de
caridade, pois apesar de ser um aplicativo de livre distribuição, doações
são incentivadas para ajudar órfãos de Uganda, na África. O autor do vim
,
Bram Moolenaar, já esteve lá e se comoveu tanto com a situação, que além de
ajudar na construção de uma escola para as crianças, quando voltou à Holanda,
criou uma fundação, que só em 1998, conseguiu arrecadar US$12mil! Para mais
detalhes: :help uganda
. Se você não achou o vim
atraente, pelo menos
considere o fato de usá-lo pelo lado humanitário &:)
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários