Minha jornada com neovim
Fala pessoal, tudo tranquilo? Já tem um bom tempo desde a última vez que postei alguma coisa. E já tem vários meses que eu penso em voltar a publicar. Hoje decidi que eu poderia começar nem que fosse com algo simples. Não vamos ter código por aqui dessa vez, mas no próximo sim! Aqui queria contar um pouco sobre essa experiência que tive.
Comecei a usar neovim como meu editor padrão há mais ou menos 2/3 anos. Mas antes disso, já usei quase que todos os outros editores disponíveis na época. Na lista, alguns dos editores vão ser:
Desses, Sublime Text e PyCharm foram os que mais utilizei, sempre intercalando entre um e outro. O motivo era que, na falta de alguma integração/funcionalidade em um, ela estava presente no outro (nesse ponto, Sublime Text sempre perdia vários pontos). Já o PyCharm, apesar de ser muito completo, dependendo do tamanho do projeto em que você vai trabalhar, ele vai devorar os recursos da sua máquina (CPU/RAM). Por conta disso, era quase impossível ter mais de 2 projetos abertos nele simultaneamente.
Durante esses anos, já havia ouvido falar diversas vezes desse editor chamado vim/neovim, e os comentários de quem já usava eram sempre os melhores possíveis. Mas vim/neovim tem um grande problema: a curva de aprendizado.
Vim (uma contração de Vi IMproved, em português Vi Melhorado) é um clone do programa editor de textos vi para Unix de Bill Joy. É extremamente configurável e também orientado a comandos. Isso significa que muitas coisas que você vai/precisa fazer, haverá um comando a ser executado. Show, mas agora o que é NeoVim?
Neovim é uma versão refatorada do Vim, tornando ele uma continuação e extensão do Vim. É quase como se fosse The Good Parts of Vim and More. Algumas das suas características e funcionalidades são:
- Mantém as características do Vim (velocidade, versatilidade)
- Maior facilidade para pessoas criarem plugins
- Entrega uma alternativa do Vimscript, que seria uma interface baseada na linguagem Lua
- E muito mais
Mais do que esperado ao saber de tudo isso, meu primeiro pensamento foi: também quero usar! Mas, mal sabia eu que a barreira seria maior do que o que eu estava preparado na época. Essa imagem define muito bem o sentimento:
Nessa época, eu tentei várias vezes usar o vim. Alguns amigos me davam dicas, passavam suas configurações e tudo mais. Mas ainda assim, pra alguém extremamente acostumado com o famoso mouse e várias opções de cliques e botões, de repente não ter nada disso bloqueava bastante. Então num certo dia, simplesmente desisti.
Corta pra alguns anos depois, enquanto estou trabalhando em alguns projetos (ainda usando PyCharm), estava começando a ficar inviável. Por conta do alto consumo de recursos, quem estava fazendo quase que todo o serviço de gerenciamento de CPU/RAM era eu. Era a decisão: pra usar esse outro app, preciso fechar esse projeto aqui no PyCharm...
Nessa hora eu decidi que estava na hora de dar uma nova chance ao vim (só que agora, neovim). Mas eu não queria ter que começar a configurar tudo do zero, então comecei a pesquisar sobre projetos que já entregassem algo pelo menos minimamente funcional. Foi aí que encontrei projetos como LunarVim e NvChad. Ambos os projetos foram criados para entregar ao usuário uma configuração prática pra quem quer usar o neovim, sem ter que abrir mão de várias funcionalidades que se encontram em outras IDEs. Entre os 2, preferi seguir com o LunarVim.
Acredito que foi a melhor decisão que fiz. Isso somado com um pouco mais de maturidade com o passar dos anos, fez com que a experiência de uso fosse muito mais simples e suave. Minha transição foi de 0 a 100: instalei LunarVim e em seguida comecei a abrir os projetos. E para a minha surpresa, mesmo com todos os projetos que eu precisava abertos, a máquina não estava gritando por socorro. Como também uso tmux, para cada projeto vou ter uma sessão, e em cada sessão vou ter um pane dedicado ao editor. Nesse momento que vi que eu estava com ~5 projetos abertos (alguns gigantes) e ainda assim a performance estava ótima.
Daí em diante, foi só alegria. Comecei a me aventurar mais no mundo dos plugins, personalizar uma coisa aqui e outra acolá, cada vez deixando o editor da maneira como eu queria. Mas como nem tudo são flores, esbarrei em outro problema: LunarVim estava praticamente abandonado. Antes de eu mudar de configuração, o repositório já estava há quase 1 ano sem novos commits. Hoje se formos checar lá, o último commit foi há 7 meses. Ao notar isso, fui novamente ver outras opções até esbarrar em uma que se tornou a definitiva: AstroNvim.
Assim como os outros, AstroNvim entrega uma configuração extremamente completa, mas sem impactar na sua personalização ou performance. Além disso, o projeto é muito ativo, tendo novos commits quase que semanalmente. Outro ponto positivo é que a maneira como eles fizeram pra que você possa adicionar novos plugins ficou ainda mais simples. Com tudo isso, desde Abril desse ano, se tornou minha configuração padrão. Um exemplo da aparência dele na minha máquina:
Nesse post aqui, só queria poder contar um pouco da minha experiência com NeoVim. Num próximo irei mostrar os arquivos da configuração em si, caso alguém se interesse e queira dar uma olhada pra testar também.
Referências: