Sobre o Vim
Um editor de 1991 feito sobre um editor de 1976 e ainda é minha melhor experiência editando texto

Em 1976, Bill Joy, co-fundador da Sun Microsystems (a empresa que inventou Java) criou o editor vi, que supria muito bem as necessidades dele para edição de textos com as limitações dos computadores da época. Em 1991, Bram Moolenaar criou o Vim, acrônimo para Vi IMitation, dado que era um clone do Vi, posteriormente alterado para Vi IMproved.
Apesar do Vim ser basicamente um editor de terminal, também possui interface gráfica diversos sistemas operacionais, incluindo meus dois sistemas de uso diário, Linux, com gVim, e macOS, com MacVim (do qual fui principal mantenedor por um período e ainda sou committer, apesar de estar inativo há um certo tempo). Mesmo com as interfaces gráficas (no macOS ainda há uma vantagem, a tecla ⌘ não é usada normalmente pelo Vim, o que permite suporte simultâneo aos atalhos comuns do Mac e do Vim), ainda há muito questionamento sobre por que usar um editor de 40 anos num sistema moderno com tantos outros disponíveis, como Sublime Text ou Atom.
Pois recentemente, com lançamento da versão 8.0, esse mesmo questionamento surgiu nos comentários de um post no blog BR-Linux.org. O usuário Patola deu uma resposta excelente, bem completa, mas que, por estar nos comentários, corre o risco de se perder facilmente. Reproduzo abaixo, com permissão do autor, para posteridade:
Eu costumo dizer que o vim usa a mesma abordagem de interface vs. celeridade do Blender: ele é finamente projetado pra rapidez, produtividade e flexibilidade, e isso envolve a decisão de tornar a interface menos intuitiva mas o mais eficiente possível para o dia-a-dia. Para editores de texto puro, especialmente os voltados a tarefas de programação ou próximas (como editar XML e markdown), isso envolveu criar uma interface que, para as funções principais, usasse só teclas únicas, sem modificadores, que estivessem no teclado, como <esc> e letras e números sem <ctrl> e <shift>; somente as funções mais complexas envolvem shift, control, e outras combinações e sequências. Além disso, como o workflow típico de alguém que edita um texto desses geralmente envolve 3 situações facilmente discerníveis: ou a pessoa está teclando o texto, ou a pessoa está navegando e editando o texto, ou a pessoa está executando comandos/menus, o vim tem, igualmente, 3 modos: edição, navegação e comandos. E todos os comandos do vim podem ser executados pelo teclado, sem colocar a mão no mouse. Esses dois fatores geram uma economia de digitação gigantesca — você aperta muito menos teclas que o necessário em qualquer outro editor para realizar a mesma tarefa — e no início é estranho porque você tem que formar esse “modelo mental” distinto do que está acostumado pra usá-lo. Depois que passa do limiar e decora uma certa quantidade de atalhos e comandos, entretanto, você se vê digitando, e produzindo, muito mais rapidamente do que fazia antes. Esse cenário geralmente é subestimado porque a gente não visualiza “rapidez de apertar botões” como um gargalo, mas ele é. E tem um bônus moderno, se você costuma usar embarcado com tecladinho wireless ou mesmo celular/tablet pra administrar máquinas Linux remotamente, vai ver como a edição pelo vim é fluida, por ele evitar combinações de teclas, tão desajeitadas nesses dispositivos.
Aí você se pergunta por que não é a mesma coisa que Sublime Text, Atom, ou qualquer desses outros editores ou IDEs que têm “modo vi”. Simplesmente porque não é a mesma coisa, esse modo vi é um conjunto de shortcuts pra emular um modelo mental diferente, que a pessoa não está usando porque todas as outras partes do software não foram desenhadas pensando nisso. Você vai ter os menus, as operações que não precisam de menus, os plugins ou algumas operações comuns exigindo combinações de teclas, toda uma confusão que te impedirá de pensar do jeito certo.
Ah, e claro, tem uma parte importantíssima também que é os plugins. Sim, todo editor de texto moderno tem plugins, mas veja que o vim é muito antigo e tem uma bagagem histórica de muitos plugins já feitos pra ele por anos, por desenvolvedores profissionais que afinal são seu mais numeroso público-alvo, e isso você não supera com qualquer editorzinho da moda. Os plugins transformam o vim em quase qualquer coisa que você queira, e costumam ser maduros e funcionar muito bem, lembro anos atrás em que fui tentar debug remoto em PHP e passei o dia inteiro pra funcionar mais ou menos no Eclipse. No dia seguinte, feriado, por curiosidade fui ver como seria feito no vim e em menos de meia hora estava com o plugin instalado, funcionando e sem nenhum problema ou aresta pra aparar como no eclipse. Todas as minhas experiências de scripts com o vim seguem essa tendência de funcionamento “liso”. E, surpresa surpresa, substitutos competentes pra esses scripts não existem nos editores modernos que emulam vim!!!
Por fim, pra ter idéia do poder de concisão do vim, olha esses dois textos que mostram coisas poderosíssimas que você pode fazer com ele:
Dark Corners of Vim Your Mom Never Told You About
Some Vim Tips
Por último, segundo a fonte, vim é pronunciado como Jim, mas eu acho que pronunciar errado como se fosse um acrônimo em inglês (“vi-ai-em”) deixa mais chique.
Obrigado, Patola.
:wq
