Uma Lição de VIM #16: Conclusão

(Essa é a parte em que nos despedimos.)

Pessoalmente, a palavra que eu usaria para descrever o VIM é extensível. Não apenas pela quantidade de plugins criados e aperfeiçoados nestes 20 anos de editor (na verdade, 22 se você considerar a primeira versão disponibilizada em 1991 ou 25 se você considerar quando Bram Moolenaar fez a versão 1.0 para o Amiga), mas pela forma como os comandos foram projetados: Você sabe que uma movimentação do cursor com um número da frente “pula” outras ocorrências, então qualquer comando que você descobre como movimentação repete esse comportamento; Você sabe que comandos que requerem movimentação aceitam qualquer comando de movimentação (incluindo a quantidade, discutido antes); e assim por diante. Claro que isto permite várias formas diferentes de fazer a mesma coisa, mas isto também garante que você vai achar uma forma que se encaixe com o seu workflow de desenvolvimento.

E não que, como eu falei lá no começo, VIM seja o editor perfeito para todas as condições: Existem coisas novas surgindo a todo momento (por exemplo, a idéia de múltiplos cursores só foi popularizado quando o TextMate foi lançado no OS X) e que o editor base não consegue fazer — mas como o editor é extensível em várias formas, alguém já fez um plugin para repetir o comportamento no editor. Existem arquivos de sintaxe que são terríveis, e mesmo assim fazem parte do pacote original — e existem formas de atualizar por versões melhores. Existem plugins que baseiam-se unicamente no tipo de arquivo inteiro e não no bloco — mas não há nada que não garanta que, no futuro, alguém consiga fazer um plugin que troque automaticamente de modo baseado no contexto atual.

Na contrapartida, existem certas coisas que o VIM consegue fazer que outros editores não fazem: Pular para o ponto onde o texto foi inserido da última vez é o que sempre me faz voltar a usar o VIM e que eu sinto uma tremenda falta nos outros editores — que, diga-se de passagem, é fácil do editor controlar pela existência dos modos.

E, como dicas de despedida: Quando alguém comentar sobre uma feature em outro editor, lembre-se de procurar por “vim {feature}” na internet; muito provavelmente a feature já existe em alguma forma para o VIM ou já tem alguém tentando escrever um plugin para fazer a mesma coisa. E lembre-se sempre que :wq só funciona no VIM, não nos demais editores ou no seu emulador de terminal[1].

[1] Você pode perguntar para qualquer usuário de longa data quantas vezes eles tentaram fechar o terminal ou mesmo um editor de textos como Word ou LibreOffice com :wq e a resposta provavelmente vai ser “mais vezes que eu posso lembrar”.

Uma Lição de VIM #15.10: Plugins – Vim-Multiple-Cursors

(Essa é a parte em que você pode repetir várias coisas, visualmente.)

O último plugin da lista de plugins é o Vim-Multiple-Cursors.

Já que sempre falamos em usar Vundle…

Bundle ‘terryma/vim-multiple-cursors’

Assim como outros plugins já comentados, Vim-Multiple-Cursors não tem nenhuma apresentação inicial. O que este plugin faz é permitir que você tenha várias cursores no texto ao mesmo tempo, aplicando a mesma transformação em todos os lugares.

A forma mais simples de usar Vim-Multiple-Cursors é ir até a palavra que você quer alterar e pressionar [Ctrl]n. Você vai notar que o VIM irá mostrar como se você tivesse entrado em modo visual e selecionado apenas aquela palavra, o que não é nada impressionante. No entanto, se você pressionar [Ctrl]n de novo, você verá que o cursor irá para a próxima ocorrência da palavra. Na verdade, o que você tem agora são dois cursores e tudo que você fizer em um será repetido no outro. Por exemplo, se você fizer ce sobre a palavra, você verá as duas palavras mudando ao mesmo tempo.

De certa forma, o que você está fazendo é um “search and replace” só que está vendo exatamente o que vai ser alterado.

Teoricamente, você poderia fazer I"[Esc]ea" para adicionar aspas ao redor da palavra, mas há um pequeno inconveniente: [Esc], que você precisa usar para retornar para o modo normal depois de entrar em modo de inserção com I irá também terminar o modo de múltiplos cursores.

A segunda forma de usar Vim-Multiple-Cursors é fazer uma seleção visual e usar [Ctrl]n. Para cada linha da seleção, será adicionado um novo cursor. E, novamente, o que você fizer em um deles será repetido em todos.

Simples assim.

A única coisa que eu posso deixar de aviso é que, por algum motivo, utilizando uma seleção visual de várias linhas ([Shift]v), entrando em modo de múltiplos cursores ([Ctrl]n) e usando aspas (com o Auto-Pairs), meu undo acabou sendo perdido (u removia o texto inteiro, não a alteração feita com Vim-Multiple-Cursors).