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

Por que você deveria usar NeoVim para programar

Não, essa não é uma batalha de editores ⚔️

Talvez você fique decepcionado, mas a ideia desse post não é dizer que Vim é melhor que o editor X, Y ou Z. E não. Eu não abandonei o VS Code ainda. Apesar do VS Code ser particularmente bem bonito, há uma coisa muito especial em programar direto pelo terminal. É como se o espírito dos programadores ancestrais habitasse dentro de mim.

DIY - Faça você mesmo 🔨

Terminal

Se você é nerd como eu, a ideia de personalizar tudo deve te agradar bastante. Essa é uma das razões para eu amar tanto o Linux. E consequentemente, também me faz gostar muito de programar em seu terminal.

terminal

Eu particularmente gosto do visual do Gnome Terminal. Eu coloco os botões da janela para o lado esquerdo e uso um o tema do MacOs Big sur, que tem um visual muito elegante. Além disso eu uso o shell zsh com o tema spaceship, além de outros plugins desse shell para aumentar a produtividade.

NeoVim

Há várias coisas que eu acho incríveis no Vim. Uma é a possibilidade de deixar ele com a minha cara. Há várias extensões que a comunidade cria, e diversos language servers que podem prover a ele uma inteligência como a do querido VS Code. Ele é simplesmente um editor de código que você pode construir. Se você for mais hardcore, poderia até baixar seu código fonte e compilá-lo manualmente.

neovim

Atualmente, meu vim está configurado com vimscript, mas hoje ele suporta linguagem lua também. Eu testei alguns temas nele, inclusive o Dracula, que é o tema que eu uso em praticamente tudo, mas senti que o contraste dele cansou mais a minha vista nesse caso, então troquei para o sonokai que foi o tema de vim que eu mais gostei. Em breve farei outros posts no Tabnews falando mais detalhadamente sobre os plugins e configs que eu uso. Se já estiver ansioso para ver, você pode acessar meus dotfiles, um dos arquivos que você encontrará nele, é o meu init.vim, dentro de .config/nvim.

Tmux

Para completar, você ainda pode usar o tmux como multiplexador de terminal, que permitirá que você feche o terminal mas possa continuar de onde parou (desde que não desligue o computador), além de muitas outras coisas. Ele permite que você tenha várias "instâncias" do terminal em uma mesma janela, o que pode dar muita produtividade.

tmux

Keyboard Driven Aproach

Ter uma abordagem orientada a comandos de teclado, além de dar muita agilidade, é muito divertido na minha opnião. Meu cérebro de nerd sempre fica pensando qual a combinação de teclas mais eficiente para chegar em determinada parte do código. 🤓

  • gg - Ir ao início do arquivo
  • G - Ir ao final do arquivo
  • 0 - Ir ao início da linha
  • $ - Ir ao final da linha
  • 50% - Ir à metado do arquivo
  • 15G - Ir à linha 15
  • di' - Deletar o conteúdo dentro das aspas simples

Sim, a lista vai até o infinito e além hehehe 😅

Conclusão

IDE é uma questão bastante pessoal. Existe aquela que te atende, mas uma das principais coisas que o vim me ensinou foi buscar solução. Você precisa configurá-lo até para realizar coisas simples como copiar e colar e apesar de parecer perda de tempo, essa necessidade melhorou minhas abilidades de pesquisa e minha confiança em consumir conteúdos em inglês, uma vez que por ser menos utilizado, há menos conteúdo em português sobre ele. Esse é na minha opnião, o motivo de você dever dar uma chance ao vim. Ainda que just for fun.

Vídeos para se aprofundar mais

Como Configurar o VIM e o NEOVIM do ZERO em 2022. Produtividade Absurda.

Playlist sobre NeoVim

Vim Conf 2021

5

Mais uma dica!

Você pode compilar o programa que estiver desenvolvendo dentro do próprio Vim com o comando :make.

Por padrão o comando make é atribuído ao programa make, mas você também pode configurar a variável makeprg para outro valor, por exemplo: set makeprg=python\ hello.py (lembre sempre de escapar os espaços com \, o vim não suporta atribuir valores com "") e quando rodar o comando :make ele vai executar o comando python hello.py e exibir a saída em um buffer.

O mais legal é que se o compilador suporta erros e avisos formatados com número de linha, você pode rodar o comando :copen e vai abrir um buffer com os erros e avisos do compilador e se você der Enter ele pula para o buffer na linha onde o erro se encontra.

Você pode alterar entre as janelas com Ctrl+w w

Vim make

3

Muito massa!
Outra adição ao uso do nvim, pode ser utilizar o w3m, quando estou utilizando o vim, pelo intuito de não sair da janela, acabo apenas splitando a tela e abrindo o Google pelo w3m mesmo, que é um navegador baseado em texto pra terminal, é bom usar com o w3m img também, pra poder visualizar imagens dentro dele

sudo apt install w3m w3m-img

2
3
1
3

Sou dev .Net e consequentemente uso Windows + Visual Studio (com plugin do Vim), mas recentemente adquiri um Mac pra praticar mais o uso do terminal e focar mais em projetos pessoais em outras tecnologias. Desde então, tento dar uma brincada com o Neovim, mas o começo tá sendo bem difícil porque ele não vem prontinho que nem o VS Code.

Já experimentei vários init.nvim, com os mais variados tipos de configuração de atalhos de teclas, plugins e temas, mas infelizmente até agora ainda não consegui utilizá-lo de maneira tão efetiva quanto tem sido com o VS Code, o que tenho usado principalmente (nos projetos pessoais).

Dei uma lida no seu artigo e pretendo experimentar o seu init.nvim mais tarde e, embora eu saiba que o Neovim ainda não seja tão fácil de usar quanto o VS Code (pelo menos inicialmente), sinto que irei fazendo a migração aos poucos, de modo que naturalmente irei passar a usar mais o Neovim do que o VS Code.

Parabéns pelo artigo!

3

Valeu! 😄 A ferramenta tem que ajudar a gente, então cada um deve usar o que for mais confortável para o tipo de trabalho. Então não tenha pressa. Recentemente migrei todo o meu vim para a linguagem lua, que fornece uma api de configuração mais moderna. Ele ficou bem mais otimizado e agradável de usar. Espero criar vários posts aqui no tabnews para pessoas que curtem o vim assim como eu!

2

Tem alguns Vims que já vêm configurados, você pode gostar do LunarVim: https://github.com/LunarVim/LunarVim

Ele é quase uma IDE completa, tem LSP configurado e até instala alguns plugins lsp automaticamente, sugestões, autocomplete, explorador de arquivos e alguns atalhos que te mostram menus com as ações disponíveis.

3

Eu já tinha ouvido falar dele durante algumas pesquisas, mas acabei ficando mais focado no Neovim. Dei uma olhada no link que vc mandou e vi que o LunarVim parece vir com muito mais coisas configuradas, o que é uma ótima pra quem não tem paciência de ficar catando as configs pra colocar no Neovim.

Vou dar uma conferida melhor mais tarde, valeu a dica!

2

NeoVim é vida! Demora um pouco para se integrar bem, mas depois que você configura tudo do seu jeitinho fica maravilhoso. O mais incrível é que depois de um tempo você começa a entender seu fluxo de edição e adéqua o editor para atender a essas necessidades através das infindáveis possibilidades que ele fornece. Recentemente passei minhas configs para Lua e até me animei para aprender mais sobre a linguagem.

Sobre o 'Keyboard Driven Aproach', eu curti tanto que tento sempre usar softwares com teclas vim-like.

Para deixar os meus dois centavos, segue algumas coisas que eu acho da hora:

  • C - Deleta tudo a partir do cursor e entra no Insert Mode
  • Ctrl + v [Selecione as linhas e colunas] + I [Digite] + Esc - Escreve uma vez e repete em todas as linhas selecionadas
  • ~ - Troca entre maiúsculo e minúsculo
  • :%s/RegEx/Texto - Substitui determinado texto através de uma RegEx
  • :set laststatus=3 - Define a barra de status como global (Apenas na versão nightly)
  • :set ignorecase - Ignora maiúsculo ou minúsculo na busca
  • :set smartcase - Caso você digite em maiúsculo na busca, força esse padrão
3

Boa! Esse do Ctrl-v eu não conhecia. Fiz um post compartilhando partes do meu init.vim também, para pessoas que estejam montando os seus. Sobre a linguagem lua, eu também amei. Reconfigurei tudo do zero e ficou mais rápido e muito mais funcional!

1

gi -> enter insert mode at the last insert point
gf -> open file under the cursor
ctrl-w gf -> open file in a new window
gd ->go to definition
ctrl-6 -> get back to the last file (alternate buffer)

1

A curva de aprendizado do Vim é um pouco grande, pra fechar uma simples tab única que está aberta já é complicado, imagina saber todos os comandos que ele tem.

Eu tentei usar mas ao usar O vscode dia a dia e ao trocar isso, para usar o vim, você já começa sentir faltar do vscode por causa das funcionalidades que ele tem.

1

Muito legal a publicação, excelente conteúdo. Fiquei bem feliz que é possível fazer postagens com imagens. Ainda estou entendendo o conceito do Tab News. Aproveitando, estou fazendo um teste com uma imagem abaixo.

Vim make
1

Eu amo usar o Vim motions ao ponto de mapear o ALT + H/J/K/L no Windows para serem as setas em qualquer programa (usando o PowerToys). Ainda não peguei muito o ESC e tal, mas estou trabalhando nisso.

Aprender a trabalhar sem tirar as mãos do teclado me dá uma sensação de rapidez que, às vezes, acho bem louca. Nunca havia me sentido tão produtivo ao combinar vim motion com emmets, como faço com o Neovim.

Se alguém tiver alguma curiosidade nos meus dotfiles, está no meu GitHub. Como já pulei para este mundo de editores de texto em linha de comando diretamente no NeoVim, tudo o que aprendi sobre Vim foi nele e minhas configurações foram feitas totalmente em Lua, o que me possibilitou aprender uma ou outra coisa sobre essa linguagem (enquanto estudo front-end). Ainda não está pronto, pretendo mudar uns plugins e configurações, mas basicamente é essa a configuração do meu editor (que está repleto de plugins, mas todos com alguma função real).

PS: Se o @NathanFirmo não tivesse dito que estava usando o GNOME com modificações, eu realmente iria achar que era uma screenshot do MacOS na primeira imagem, apesar de ainda assim estar com a pulga atrás da orelha pois parecia e não parecia exatamente um MacOS, ao mesmo tempo! hahahaha

1