Quando comecei a aprender mais sobre programação, sempre li e ouvi discussões sobre qual seria a melhor IDE (Integrated Development Environment) para desenvolvimento de software, e nunca vi uma resposta definitiva. Provavelmente porque ela não existe. No fim das contas, tudo se resume a gosto pessoal.

Sempre gostei bastante do VS Code. Me acostumei com ele desde o início da graduação, quando o utilizamos na disciplina de Algoritmos e Programação de Computadores (a.k.a. PROG1). É uma ferramenta robusta, com ótimos complementos para praticamente todas as linguagens com as quais já tive contato.

Com o tempo, comecei a ver muitos vídeos sobre Vim e Neovim no YouTube, e isso chamou bastante minha atenção. A proposta é interessante: um editor de texto que roda no terminal e que você pode customizar praticamente sem limites, chegando bem perto de uma IDE completa, só que muito mais leve e flexível. Isso foi o suficiente para me convencer a tentar.

Entre Vim e Neovim, acabei optando pelo Neovim, principalmente por ele ser um pouco mais amigável para iniciantes e ter um ecossistema mais moderno. Nesse processo, descobri o LazyVim, que facilita bastante a configuração inicial e a instalação de plugins.

Tela Inicial do LazyVim

Imagem 1 - Tela inicial do LazyVim

Mesmo já tendo uma noção básica dos comandos, a adaptação não foi simples. Quando começamos a usar o teclado, nos acostumamos a mover o cursor com as setinhas, mas no Vim/Neovim isso muda completamente. Aqui usamos h, j, k e l para mover o cursor para a esquerda, baixo, cima e direita, respectivamente. Sim, é estranho no começo. Forçar o uso dessas teclas chega a parecer uma pequena tortura, porque o cérebro insiste em ir para as setas. Ainda assim, decidi persistir e me obrigar a usar os motions.

Depois disso, fui atrás das configurações essenciais para as linguagens que utilizo. Pelo Mason, uma ferramenta que já vem integrada ao LazyVim, instalei os LSPs (Language Server Protocol) para C/C++, Python, Java, entre outros, além de algumas ferramentas adicionais, como o Prettier. A facilidade para instalar e gerenciar esse tipo de coisa foi uma grata surpresa.

Também acabei modificando algumas keybinds para facilitar meu dia a dia. Um exemplo simples: para selecionar todo o conteúdo de um arquivo no Vim, normalmente fazemos ggVG, onde gg vai para o início do arquivo, V entra no modo visual por linha e G vai para o final. Apesar de não ser um comando enorme, dá para simplificar bastante. Mapeei tudo isso para <C-a>, imitando o clássico Ctrl + A dos editores tradicionais. Muito mais prático.

Outra customização interessante foi em relação às janelas. Para abrir uma nova, normalmente é preciso entrar no modo de comando (:) e digitar tabedit. Para agilizar, criei um atalho (tr, no modo normal) que faz isso automaticamente.

Disclaimer: ainda não tenho certeza se o termo “janela” é o mais correto aqui. Já vi muita gente se referindo a isso como buffer. Ainda estou aprendendo essas distinções.

Também mapeei os comandos sh, sj, sk e sl para navegar entre janelas, o que deixou tudo bem mais intuitivo.

Talvez você tenha reparado que mencionei termos como “modo normal” e “modo de visualização”. Essa é uma das principais características do Vim/Neovim: ele é um editor modal. No normal mode você usa os motions e comandos para navegar e manipular o texto. No insert mode é onde você realmente digita e edita o conteúdo. Existem outros modos, como o visual, mas ainda não me aprofundei o suficiente neles, então vou deixar isso para outro momento.

Personalizei mais algumas coisas: troquei o tema, ajustei a fonte do terminal e fiz pequenas mudanças estéticas e funcionais. Nada muito avançado, mas o suficiente para deixar o ambiente confortável.

No geral, a experiência inicial com o Neovim foi muito positiva. Estou escrevendo esta própria postagem usando ele agora, o que já diz bastante. Ainda tenho dificuldade com alguns motions e com a troca constante de modos, mas isso faz parte do processo. Também não curti muito os formatters de código, mas isso não é um problema do Neovim em si.

Por enquanto, é isso. Estou animado para continuar usando a ferramenta e, quem sabe no futuro, escrever um novo post contando como foi essa evolução.