Executando verificação de segurança...
2

Como migrei totalmente do VS Code para o Neovim

Uso do terminal

Eu sempre gostei muito do uso do terminal, não só por parecer mais "hacker", mas por produtividade mesmo. Comandos em terminal são sempre mais resumidos e portáveis do que ações em um ambiente gráfico. Por não termos a vivência de utilizar o terminal achamos que é mais difícil, quando não é.

Por exemplo: intalar um programa no linux e no windows.

Para instalar um programa no windows, usualmente precisamos do seguinte passo a passo:

  1. Pesquisar no google pelo programa
  2. Filtrar possíveis fraudes e baixar preferencialmente do site oficial um instalador
  3. Seguir o passo a passo do instalador e torcer para dar tudo certo

Enquanto na maioria das distribuíções Linux seria assim:

  1. Abrir o terminal
  2. Executar um comando com o gerenciador de dependências da distro (apt, dnf, pacman e etc.)

É muito mais simples e rápido no Linux do que no Windows, mas para quem não é acostumado, parece ser o contrário.

Migração para o Linux

Há mais ou menos dois anos passei a utilizar apenas Linux no meu computador. Essa decisão não me deixou nenhum tipo de arrependimento, inclusive para coisas que normalmente são um problema, como drivers e jogos. Inicialmente migrei para o Ubuntu, onde aprendi muito sobre o Linux, logo depois fui para o Manjaro, que me abriu as portas para o mundo do Arch Linux, que é a distro que utilizo atualmente.

A forma com que utilizo o Linux me faz ser mais produtivo, porque é tudo simples e objetivo. Aprendi muito sobre a computação com o Linux e continuo aprendendo. Foi no Linux que deixei de ter medo de documentações, de ler em inglês e das antiquadas págidas de manuais. Me aventurar em um território até então desconhecido me fez me desenvolver muito mais como programador e também me dá muito mais controle sobre a minha máquina.

Motivação para usar o nvim

Tudo o que escrevi até agora foi para dar o contexto do porquê saí do VS Code para o Nvim. Para a maioria dos desenvolvedores isso não é nenhuma vantagem e provavelmente será perda de tempo. Contudo, é importante saber se isso não é vantajoso por conta de não trazer vantagens ou simplesmente por que você está se tornando dependente de uma IDE. No meu caso, nas muitas tentativas de migração que fiz até dar certo, a realidade era a segunda opção. Eu me via refém das funcionalidades do Vs Code e na maioria das vezes incapaz de programar sem elas.

Pode parecer até engraçado, mas você só irá perceber se é realmente o caso quando tentar algo diferente. Não me entenda mal, eu não defendo a ideia de que um bom desenvolvedor deve fazer tudo na unha, em um bloco de notas e sem nenhum tipo de code highlighting, só estou defendendo de que se você se torna muito dependente dele, deveria no mínimo saber se virar sem esse tipo de coisa, ou utilizar alguma outra alternativa.

Hoje em dia nós já temos muita coisa out of the box e isso atrapalha muito quem está aprendendo. É ótimo ter um Codeium ou um Copilot para escrever uma suíte inteira de testes sozinho, mas se você está aprendendo a construir bons testes, isso dá a falsa impressão de progresso. A melhor forma de saber se você realmente aprendeu algo é se limitando e se desafiando.

Como foi a migração

Com esses motivos em mente, tentei fazer definitivamente a migração por quatro vezes. Nas primeiras vezes acabei desistindo por me sentir fora da zona de conforto, com dificuldades para coisas básicas. Toda vez que tentamos aprender algo que tem uma curva de aprendizado mais alta, ficamos muito frustrados e tendemos a desistir, é normal. Mas na quarta vez a migração deu certo pois eu a fiz de forma gradual.

Eu não migrei diretamente para o vim ou nvim padrão, fui para uma distribuição neovim chamada AstroNvim, que já trás várias coisas pré configuradas. Eu escolhi esse editor pois achei mais parecido com a forma com que eu utilizava o Vs Code, no quesito de atalhos e layout.

Inicialmente eu comecei a apenas fazer pequenas edições utilizando o nvim. Normalmente era um arquivo ou outro de configuração ou apenas uma anotação, apenas para ir me acostumando aos poucos, nada muito radical. Em uma das disciplinas da faculdade eu registrava todas as minhas notas de aula em markdown utilizando o nvim ao invés do VS Code, além de todos os exercícios dessa disciplina.

Aos poucos fui pegando mais confiança para ir me aprofundando cada vez mais nas funcionalidades do editor. Isso as vezes me fazia passar horas pesquisando sobre como fazer algumas coisas no editor, até que chegou um momento que eu não precisava mais pesquisar, ou já havia me habituado a procurar diretamente na documentação do neovim que já vem embutida com o próprio editor. Esse ímpeto de sempre pesquisar, aos poucos foi fazendo com que eu conseguisse moldar o editor para a minha forma de usar. Algo que percebi é que cada pessoa tem uma configuração completamente diferente de vim, achei isso muito interessante.

Contato com o mundo do free software e open source

Provavelmente um dos melhores projetos para se entender como funciona o open source e o free software é o Vim. Existe literalmente zero interesse econômico no projeto, é simplesmente usuários do editor que trabalham para que ele fique cada vez melhor e mais moderno. É incrível ver pessoas completamente diferentes, de lugares diferentes e por diferentes motivos se unindo para contribuir para projetos de pessoas completamente desconhecidas. Isso mostra como software é algo democrático e colaborativo.

Além disso, também pude entender como o open source se beneficia de produtos de grandes empresas como a Microsoft, ao mesmo tempo que essas empresas se beneficiam com o open source. Um bom exemplo é o pyright da Microsoft. O plugin Python do VS Code, feito pela Microsoft é um projeto de código fechado. Isso significa que nós só utilizamos o produto final, que nos limita a utiliza-lo somente no editor da Microsoft. Contudo, uma parte dele, mais especificamente o type checker, que é o pyright é open source. Isso é uma faca de dois gumes: a comunidade utiliza o pyright em seus projetos, como o neovim e, a Microsoft aproveita as contribuíções da comunidade para o pyright para melhorar o seu próprio plugin do python.

Os mundos close e open source trabalham juntos e se beneficiam mutuamente, esse é o mundo real.

Entendimento de como funcionam as IDEs

Configurar o vim e nvim pode parecer como fazer um editor completamente do zero. No caso do vim é praticamente isso mesmo, pois ele não vem com muitas funcionalidades para auxiliar na hora de escrever o código. Isso tudo faz muito sentido quando olhamos para a história do Vim e seu antecessor, o Vi.

O Vi surgiu para ser literalmente um editor de código. É por isso que o vi e seus sucessores funcionam muito melhor para editar código do que para criar, uma das motivações iniciais para a sua criação, foi a partir da constatação de que um programador passa mais tempo editando código do que escrevendo novas linhas de código. Para isso o vi, vim e nvim possuem inúmeras funcionalidades que aumentam drásticamente a edição de código, como o seu sistema de pesquisa, navegação, macros e etc.

Isso é o completo oposto do que IDEs são, que é basicamente um ambiente de desenvolvimento integrado, ou seja, um conjunto de funcionalidades que auxiliam e facilitam na hora do desenvolvimento, ao contrário dos editores, que possuem essas características para a edição.

Como editores podem se tornar IDEs?

Há muita discução em torno de até onde um editor continua sendo um editor e onde ele passa a se tornar uma IDE. O próprio VS Code é alvo dessas discuções. Normalmente uma IDE possui três funcionalidades principais:

  1. Um editor
  2. Automações para processos de build
  3. Debugger

Obviamente IDEs hoje possuem várias outras funcionalidades, como code highlight, mas elas servem para um propósito: te dar mais produtividade na hora de desenvolver.

A partir desse ponto, podemos concluir também que qualquer editor pode se tornar uma IDE no momento que ele começa a te tornar mais produtivo no desenvolvimento das suas aplicações. Nesse contexto o VS Code, nvim, emacs e vários outros editores entram, pois a partir de plugins conseguem se tornar verdadeiras IDEs nas mãos de seus usuários.

LSPs

Language Servers Protocols, ou simplesmente LSPs, são os resposáveis pela portabilidade e sucesso da maioria dos editores e IDEs modernos. Esses programas tem um objetivo: analizar o seu código e lançar os possíveis erros na sua tela. É a partir de um LSP que sabemos que existe um erro no seguinte código em python:

print('hello world")

sem esse tipo de funcionalidade, poderíamos perder horas procurando um erro bobo como esse em qualquer projeto.

O nvim possui um suporte nativo para LSPs, o que facilita muito na hora de configura-los. Na maioria das distros neovim basta apertar a tecla : para entrar no modo de comando e escrever LspInstall que você poderá instalar o LSP adequado para o arquivo que você está editando e, após instalar, fazer o mesmo para o comando LspStart para iniciar o servidor de linguagem. Esse é o equivalente a baixar um plugin de linguagem no VS Code. Isso pode parecer muito arcaico e rudimentar, mas com o tempo se torna simples e automático.

Existem vários outros programas parecidos com os LSPs:

  • DAPs (Debugger Adappters): servem para o processo de debug (exemplo: java-test)
  • Linters: reforçam padrões de código (exemplo: eslint)
  • Formatters: reforçam formatação de código (exemplo: prettier)

Isso tudo trabalha de baixo dos panos para nos dar produtividade em diferentes IDEs, com o vim podemos ver o que está funcionando de baixo dos panos nitidamente.

Conclusão

Migrar para o nvim me fez ser muito mais produtivo do que eu era utilizando o VS Code, principalmente porque me fez aprender mais e ter mais controle sobre o que eu realmente estou fazendo. Essa mudança me fez me aventurar mais em documentações e manuais, algo que me ajuda até mesmo para pesquisar de forma mais rápida e assertiva quando tenho algum problema no código. É claro que eu não aconselharia a qualquer um trocar o VS Code pelo nvim, mas acho válido se aventurar em novas terras, para não se tornar refém de uma ferramenta.

A partir disso eu pude entender melhor como as IDEs funcionam, além de entender quando um editor de código pode se tornar uma IDE, ao me dar produtividade na hora do desenvolvimento. Por conta disso sei exatamente o que está acontecendo por de baixo dos panos ao utilizar o meu nvim, o que pode ser útil na hora de procurar a solução de possíveis problemas.

Por fim, caso você tenha alguma experiência parecida, fique a vontade para compartilhar nos comentários.

Carregando publicação patrocinada...
1
1

Excelente.

O neovim faz um trabalho fantástico ao diminuir a barreira de entrada para o vim e consequentemente para o universo Unix. Mas não pare por aqui. Continue essa jornada, explore mais fundo.

O que eu mais gosto no vim, por exemplo é sua onipresença. Ele está disponível por padrão em virtualmente todos os lugares. Dominá-lo significa ter sempre à mão uma ferramenta poderosa para editar código ou texto.

A filosofia de não tirar a mão do "home-row" é o que realmente me encanta nos editores tipo vim. Pode parecer besta para quem nunca experimentou, pois não é sobre economizar tempo, ao não mover as mãos para realizar tarefas secundárias, mas manter a "mão na massa" ajuda a manter a concetração e a não perder o 'fio da meada' de lógicas complexas durante tarefas de edição e navegação.

Fico contente com sua jornada. Concordo 100% com tudo o que escreveu na parte de Migração para o Linux. Sinceramente, eu não confio em programador que não conhece no minimo o básico do unix.

1

Bom dia,
Gostei muito do seu artigo, você tem algum blog ou site falando mais sobre o nvim, gostaria muito de ler.
grato,
Leandro Costa

1

Muito bom esse artigo. Eu comecei a usar Linux em abril, não pq não gosto do Windows, mas pq queria aprender mais sobre sistemas e ele também me ajuda bastante nessa compreensão. Ainda uso Windows e gosto também, uso os dois. Já sobre editores, eu até tentei usar o Vim, mas para inexperientes como eu, acabava sendo complicado ter que aprender outra ferramenta ao invés de investir na base. Para mim, a curva de aprendizado maior do Linux vale bastante a pena, aprendo muito no processo, especialmente gerenciamento de pacotes, sistema de arquivos e resolver meus problemas sem precisar chamar um técnico, e isso já me ajudou a resolver problemas no Windows, inclusive. Mas a curva de aprendizado do Vim eu não sei se valeria a pena para mim nesse momento. Claro, é a minha opinião, não digo que é bom ou ruim, foi só questão de adaptação. Além disso, eu considero o VSCode incrível. A curva de aprendizado para iniciantes é bem pequena, ao mesmo tempo em que vejo muitos experientes usando como editor padrão, pois é altamente personalizável com extensões.

1

muito bom seu artigo. passei pelas mesmas coisas, me vi 100% dependente do vscode, mas como diz o Fábio Akita, nós como programadores precisamos saber linux e saber como o nosso computador funciona. Aprender nvim nao é só asthetic, é aprender linux, aprender estrutura de pastas no ambiente unix, aprender como usar um compilador para instalar coisas que a gente nunca soube que precisávamos, entender como o syntax highlight funciona (e que nao é mágica do vscode), enfim, é ter controle sobre suas ferramentas. estou fazendo um plugin para o nvim em lua, estou saindo 300% da minha zona de conforto.

1

É ótimo para aprender e parece bem hacker quando você fala de ir pro vim, arch, etc...

Mas não se enganem, configuração, customização e automação são formas bonitas de procrastinação.

Um ambiente bom de desenvolvimento bom e produtivo é aquele que você nao fica todo tempo pensando em melhorias, customização etc. Se você acha que programa mais eficientemente no nvim, maravilha. Mas já parou pra calcular essa eficiência somando o tempo que gasta configurando todo dia pra uma melhoria?

VSCode tem sim muita coisa que não precisava, e que ocupa espaço a toa. mas depois que configurei, ativei a sincronização e tudo está pronto. troquei de pc? Faço login no github, faço a sync, começo a programar em 5 min. Estou em casa e preciso acessar o ambiente de desenvolvimento da empresa? Login, sync, tunnel... 6 minutos e estou programando.

1

Você acha isso uma vantagem? Com o nvim eu posso literalmente acessar a minha máquina via ssh e editar literalmente com a mesma IDE que eu utilizo no meu computador e literalmente no meu computador, podendo fazer isso até mesmo do celular.

Troquei de computador? Basta dar um git clone na pasta .config/nvim e pronto! Configuração e migração muito mais rápida que a do VS Code, que demora uma eternidade para baixar todas as extensões e sincronizar.

Tudo o que eu tinha no VS Code eu tenho no nvim, inclusive com menos complicações e com muito mais velocidade e produtividade. O VS Code te dá um ambiente procrastinador muito maior do que qualquer outro editor ou IDE.

1
1

Existem muitos contra-pontos que realmente tornam o VS Code melhor em muitas situações. Apenas rebati os contra pontos que você expos, pois, não fazem sentido, já que em cada uma dessas situações o nvim é melhor e mais rápido.

Os maiores problemas são:

  • neovim não é comercial

Diferente do VS Code, o nvim não tem nenhuma empresa o mantendo e atualizando, portanto isso o limita a contribuições do mundo open source, o que faz com que alguns plugins deixem de ser mantidos, atualizados ou que bugs sejam corrigidos. Um bom exemplo é o plugin null-ls, que é amplamente utilizado pela comunidade e foi arquivado recentemente.

  • soluções closed source

O VS Code tem muitas soluções close source que são realmente boas. O próprio lsp de python do VS Code é closed source, o astro lsp e outros. Isso sem contar nos vários plugins que funcionam da mesma maneira, tornando muito mais difícil para o nvim implementar algo parecido, pois no mundo do free softwares precisamos sempre depender da boa vontade de alguém.

  • barreira de entrada

É muito mais difícil configurar o nvim do que o VS Code, que é praticamente plug and play. As soluções out of the box do VS Code auxiliam muito os iniciantes, trazendo uma barreira de entrada muito baixa. Em contrapartida, no nvim você tem que se virar e fazer quase tudo manualmente, o que torna a migração complexa e demorada. Mas depois que se entende o que se deve fazer e como fazer, isso deixa de ser um problema.

  • qualidade dos plugins

Como já disse, todas as soluções do nvim são open source, feita por usuários de forma totalmente voluntária. Isso em alguns casos acaba com alguns plugins tendo qualidade baixa, principalmente com os que se propõe a implementar alguma funcionalidade ou outro plugin disponíveis no VS Code. Mas depois de se pegar o jeito de utilizar o nvim da maneira correta, isso também deixa de ser um problema.