Por que aprender Vim

- 8 mins

Screenshot

Há alguns meses, li um artigo do blog do professor Daniel Lemire intitulado You are your tools. No texto, ele argumenta sobre a importância que as ferramentas têm em nossas vidas e que aprender novas ferramentas ao longo da vida nos torna mais inteligentes. Pessoalmente, já notei que aprender a usar uma nova tecnologia hoje torna mais fácil aprender outra no futuro. Você desenvolve habilidades bastante úteis no caminho, tais como: resolver problemas, se adaptar, ter mais paciência e não desistir facilmente.

Tenho usado o Vim há quase um ano. Começou meio que sem querer, porque eu coloquei na cabeça que ía aprender a usar o Emacs pra poder desfrutar do incrível e atemporal Org Mode, talvez a ferramenta de organização mais poderosa que já conheci. Acontece que, no tutorial que encontrei, o instrutor também usava os comandos do Vim dentro do Emacs. Quando percebi o potencial que aquele tal ”Modo Vim” tinha, passei a usar o editor puro no terminal do meu computador e, por fim, instalei uma extensão do Vim no VS Code, que é meu ambiente de desenvolvimento atual. Você percebeu uma coisa aqui? Usei os mesmos comandos de teclado em TRÊS ambientes diferentes! De fato, é possível usá-los em muitos outros, como: as maravilhosas IDEs da JetBrains (o que inclui o Android Studio), o Xcode da Apple, o VS Code, Atom e Sublime Text. Se você usa o Overleaf para escrever em LaTeX, pode ativar o Modo Vim também. Isso é realmente fantástico, porque, para um programador, reaprender os atalhos de teclado de uma nova IDE ou editor de texto é quase o mesmo que reaprender a digitar, ou ainda, como se o layout do teclado fosse bruscamente alterado. Eliminar essa overhead diminui muito a sobrecarga cognitiva desnecessária e nos dá mais tempo e energia pra colocar onde mais importa, o software em si!

Recentemente, comprei um livro pra aprofundar meus conhecimentos de Vim. Ele se chama Pratical Vim (em inglês). Nele, encontrei essa frase, que traduzi com as seguintes palavras:

"Assim como os pintores gastam uma fração de seu tempo pintando, os programadores gastam uma fração de seu tempo escrevendo código. A maior parte do tempo é gasto lendo, pensando e navegando de uma parte à outra do código."

Isso é verdadeiro. Escrever código não é uma tarefa puramente técnica. Na verdade, há muitos elementos intrinsecamente artísticos nela. Decisões são tomadas frequentemente, baseadas no contexto em que o software está inserido. Além disso, existem diversas soluções possíveis, adequadas ou não para o problema. Algumas delas são inerentemente elegantes e bem construídas. Dessa forma, bons engenheiros de software têm criatividade pura correndo nas veias. Mas, ainda mais apropriado é afirmar que um programador passa mais tempo analisando uma base de código do que escrevendo nela. Nisso, a abordagem de uso do Vim é inteiramente compatível, já que ele te dá o poder de navegar e saltar de qualquer lugar do código pra qualquer outro numa fração de segundo. Pessoalmente, eu não conheço outra ferramenta que faz isso com tamanha eficiência.

Como o Vim funciona

O Vim tem origem no editor de texto vi, criado por Bill Joy em 1976. Como os clássicos editores criados para o sistema Unix, ele desconsidera o Mouse, já que, naquela época, ele simplesmente não existia. Por isso, tudo no Vim foi pensado em termos de comandos no teclado, isso significa velocidade e precisão. E não me entenda mal, eu amo o Mouse e o uso no meu dia a dia. Mas, quando o assunto é lidar com texto, usar o teclado é simplesmente imbatível! Considere a figura abaixo:

Screenshot

Dentre todo o layout do teclado, no Vim suas mãos ficam limitadas apenas ao teclado alfanumérico. Você nunca usará as teclas de função, por exemplo. E o Mouse, enquanto você usa o Vim, não passa de um enfeite de mesa! Isso é um show de ergonomia e evita ter de fazer ginástica com os dedos. Pode parecer pouco, mas no final de um dia ou semana de trabalho faz uma grande diferença. E o fato de você praticamente não precisar olhar pro teclado também é um diferencial.

Eu não quero dizer que você não pode perder nem um segundo do seu dia de trabalho com esse tipo de coisa. Pelo contrário, faça pausas, tome seu cafezinho, chá ou água. Use o Mouse nos outros contextos e ambientes. Perder tempo não é o fim do mundo. O que eu quero dizer é: não precisar pensar ou procurar a combinação de teclas para aquele atalho do editor de textos ou tirar a mão do teclado pra selecionar um parágrafo ou trecho do código, no fim do dia, te ajuda a poupar energia pra fazer o que gosta. Eu sei, esse pensamento parece bobo à primeira vista, mas existem estudos importantes sobre os malefícios das mudanças de contexto (programadores que o digam), há um esforço cognitivo real nessas pequenas coisas e eles fazem diferença, quer você os perceba ou não.

Usar os comandos do Vim é semelhante a tocar notas musicais num piano, onde cada tecla tem uma função e, se você conhece os acordes, pode pressionar várias teclas de uma vez pra fazer a harmonia e, de novo, ter um resultado único! Eu também posso comparar a um LEGO, já que, assim como o brinquedo, se você souber os encaixes certos, pode construir objetos bem impressionantes.

Alguns princípios do Vim revelam muito sobre as possibilidades que ele nos oferece. Por exemplo, você já ouviu falar do DRY (don’t repeat yourself)? No Vim, tudo que é repetitivo pode ser otimizado, é possível até mesmo usar MACROS de forma bastante simples. Outra coisa que faz parte do ”Vim Way” ou “Jeito Vim” é: sempre mude para o Normal Mode (onde você navega pelo texto), isso te permite fazer qualquer coisa com mais velocidade, inclusive alterar o texto, acredite em mim!

Os modos do Vim

No Vim, você usará quatro modos principais. São eles:
Normal Mode: o modo principal, onde você pode navegar pelo código, fazer pequenas alterações, buscas e saltos pelo texto.
Insert Mode: é o modo onde você vai escrever de fato.
Visual Mode: nele, você pode selecionar o texto de diversas formas.
Command-Line Mode: o nome é sugestivo. Nele, é possível, dentre muitas outras coisas, fazer alterações usando Regex e até executar comandos do Shell.

Como aprender

Bem, agora que apresentei alguns valores e princípios do Vim, e espero ter motivado você até aqui, vou partir para conceitos gerais do Vim, a começar por duas dicas iniciais.

Dica 1: Aprenda a digitar (sem olhar, é claro!) Isso garantirá que você obtenha ainda mais velocidade e desenvoltura no uso do Vim, já que o Mouse é completamente desnecessário. Você usará o teclado o tempo todo! Aliás, se você quiser aprender ou melhorar sua habilidade em digitar, recomendo esse site. Não é o único a oferecer isso, mas nele você pode, gratuitamente, estudar e treinar de acordo com o seu nível.

Dica 2: Tenha em mente que, no início, é natural “perder tempo” lembrando dos comandos. Isso pode ser frustrante mas, não desanime. À medida que for se acostumando e ganhar agilidade, o tempo é mais do que compensado!

No início dos meus estudos eu aprendi o básico sem muita estrutura, ou seja, eu pesquisava em tutoriais de vídeo ou texto à medida que a necessidade aparecia. Isso não é necessariamente ruim, é pragmático. Mas eu recomendo que você tenha um material pra te guiar e vou sugerir um. Entrei no YouTube e pesquisei por: “curso vim”. O único que encontrei em português foi no canal do professor Rodolfo Dirack e, assisti a todos os vídeos. São ótimos! Mesmo tendo um ano de experiência eu aprendi coisas legais e já estou usando!

Aprender Vim é um processo contínuo e eu gosto disso, sempre encontro formas de melhorar o que já considero bom e me divirto e surpreendo com isso. Desejo o mesmo a você!

Uma dica final: Sabe a famosa tecla ”caps lock” do seu teclado? Então… Troque ela pelo “Control”! Basta configurar isso no seu sistema operacional alterando as teclas modificadoras. No macOS é extremamente simples e rápido de fazer isso. Vá em Preferências do Sistema » Teclado » Teclas Modificadoras…. Na frente de Tecla Caps Lock (⇪), mude para ⌃ Controle e pronto!

fig3

No Windows também é fácil fazer isso com um aplicativo da Microsoft, chamado PowerToys. Se você usa Linux, pesquise como fazer isso na sua distribuição. Seja ela Ubuntu, Mint, Arch ou outra, deve haver tutoriais por aí ( ;

Considerações finais

Não queira aprender tudo de uma vez. Comece aos poucos… No começo, eu aprendi apenas os comandos básicos (usava uma “colinha” pra lembrar deles no dia a dia, é fácil encontrar modelos online) e, toda semana, eu aprendia alguns comandos novos e me esforçava pra usá-los, assim era fácil lembrar e incorporá-los no meu uso cotidiano.

E agora você está pronto pra começar. Te desejo sucesso nisso!

Giorgio Braz

Giorgio Braz

“As grandes coisas não são feitas por impulso, mas através de uma série de pequenas coisas acumuladas” - Vincent Van Gogh

rss podcasts facebook twitter github gitlab youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora