Como Turbinar sua Produtividade com VIM - Guia Definitivo do Desenvolvedor

Vamos transformar o VIM em uma IDE à la Visual Studio Code, combinando o que há de melhor entre os dois mundos. No final teremos um "juggernaut" VIM, pronto para turbinar sua produtividade em definitivo como desenvolvedor.

[ Hits: 22.957 ]

Por: Fábio Berbert de Paula em 28/07/2020 | Blog: https://fabio.automatizando.dev


Primeiras configurações no .vimrc e instalação de plugins



Para o decorrer do guia sugiro que mantenha dois terminais abertos, um para a instalação dos plugins e configuração do .vimrc e outro no diretório do projeto que clonamos, para acompanharmos a evolução do Vim.

Vamos começar criando seu arquivo .vimrc com algumas configurações básicas.

Linux e macOS:

vim $HOME/.vimrc

Windows:

vim $HOME/_vimrc

E adicione o seguinte conteúdo:

" ativar sintaxe colorida
syntax on

" ativar indentação automática
set autoindent

" ativa indentação inteligente, o Vim tentará adivinhar
" qual é a melhor indentação para o código quando você
" efetuar quebra de linha. Funciona bem para linguagem C
set smartindent

" por padrão o vim armazena os últimos 50 comandos que você
" digitou em seu histórico. Eu sou exagerado, prefiro armazenar
" os últimos 5000
set history=5000

" ativar numeração de linha
set number

" destaca a linha em que o cursor está posicionado
" ótimo para quem não enxerga muito bem
set cursorline

" ativa o clique do mouse para navegação pelos documentos
set mouse=a

" ativa o compartilhamento de área de transferência entre o Vim
" e a interface gráfica
set clipboard=unnamedplus

" converte o tab em espaços em branco
" ao teclar tab o Vim irá substituir por 2 espaços
set tabstop=2 softtabstop=2 expandtab shiftwidth=2

" ao teclar a barra de espaço no modo normal, o Vim
" irá colapsar ou expandir o bloco de código do cursor
" foldlevel é a partir de que nível de indentação o
" código iniciará colapsado
set foldmethod=syntax
set foldlevel=99
nnoremap <space> za

Salve e saia com ":x" e vamos conferir como está ficando nosso monstrinho:

vim App.js

Instalação de plugins

A partir do Vim 8.1 o editor veio com o recurso de instalação de plugins em forma de pacotes, o que facilitou demais. Antes disso ou você instalava o plugin manualmente, copiando cada arquivo para o diretório correspondente ou usava soluções de terceiros, que basicamente eram plugins para instalar plugins.

Estou falando do recurso "packages", onde maiores detalhes podem ser obtidos pela página de ajuda do editor com o comando:

:help packages

Resumindo, você tem um subdiretório chamado "pack" no diretório do Vim e precisa apenas descompactar ou clonar o repositório do plugin desejado dentro dela.

Então vamos lá, tanto no Linux quanto no macOS o diretório de pacotes será:
  • $HOME/.vim/pack

No Windows será:
  • $HOME/vimfiles/pack

Abaixo de "pack" você criará um subdiretório para o plugin ou grupo de plugins e mais dois subdiretórios:
  • start :: os plugins abaixo de start serão carregados automaticamente durante a inicialização do Vim
  • opt :: os plugins em opt estarão disponíveis somente após carregamento manual com o comando :packadd

Então vamos montar nossa estrutura assim:

Linux ou macOS:

mkdir -p $HOME/.vim/pack/git-plugins/start

Windows, não sei como faz para criar subdiretórios neste sistema, mas tenho certeza que você sabe. Então crie a seguinte estrutura:

HOME\vimfiles\pack\git-plugins\start

Para começar a brincadeira, vamos baixar nosso primeiro plugin, que será justamente o de embelezar a tela inicial do Vim, aquela mesmo do primeiro print deste artigo, lembra?

Entre no diretório "start" que acabamos de criar:

cd $HOME/.vim/pack/git-plugins/start
ou
C:> cd $HOME\vimfiles\pack\git-plugins\start

e clone o seguinte repositório:

git clone https://github.com/mhinz/vim-startify

Simples assim, plugin instalado! Vamos testar? Volte ao terminal do código que baixamos no início do artigo e digite:

vim
Já deu diferença né? Agora temos um menu com a lista dos arquivos recentes, acessível pelo número entre colchetes ou por navegação via setas direcionais. Também temos uma vaquinha falante, vai vendo!

Não deixe de visitar o repositório de cada plugin citado no artigo para maiores detalhes sobre suas configurações. Neste guia citarei apenas as configurações que foram relevantes para MIM. Porém minhas preferências não são necessariamente as tuas...

A partir de agora a brincadeira começa a ficar mais interessante, partiu próxima página?

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Primeiras configurações no .vimrc e instalação de plugins
   3. Plugins de aprimoramento visual
   4. Explorador de arquivos NERDTREE
   5. Barra de status com vim-airline
   6. Abrir arquivos com "Ctrl + p" à la Visual Studio Code
   7. Comentários automáticos com nerdcommenter
   8. emmet-vim - expansão inteligente
   9. vim-ale - análise de código
   10. vim-polyglot - syntax highlight avançado
   11. coc.nvim - Intellisense para Vim
   12. vimrc completo
   13. Conclusão
Outros artigos deste autor

Rodando ASP em servidores web Linux

Transferindo arquivos com o rsync

SQL Dicas & Truques (parte 2)

Viva o Linux adere à moda Orkut

A forma correta de se instalar módulos Perl

Leitura recomendada

Utilizando o Buffer de Gravação no Editor Vim

Compilação e instalação do Vim e habilitando a copiar e colar com o mouse

Utilização do Vim para iniciantes

GitHub Copilot - Inteligência Artificial no NeoVim

Como preparar o Vim/Neovim para corrigir ortografia em português

  
Comentários
[1] Comentário enviado por removido em 28/07/2020 - 14:43h

Muito bom! Estava esperando esse artigo!

[2] Comentário enviado por maurixnovatrento em 28/07/2020 - 23:30h


Eu também. Muito bom.

___________________________________
Conhecimento não se Leva para o Túmulo.

[3] Comentário enviado por leoCCB em 29/07/2020 - 12:33h

Rapaz, isso não é um mero artigo: É basicamente um curso completo. Muito bom! Congratulações.

[4] Comentário enviado por cizordj em 30/07/2020 - 14:41h

Eu programo com o Vim há um ano, vou salvar este artigo pra depois :P

[5] Comentário enviado por maurixnovatrento em 30/07/2020 - 22:08h


Não tá pegando o syntax on.

___________________________________
Conhecimento não se Leva para o Túmulo.

[6] Comentário enviado por maurixnovatrento em 30/07/2020 - 22:09h


A minha versão é mais atual e mesmo assim tô tendo problemas. Vou ter que compilar?

___________________________________
Conhecimento não se Leva para o Túmulo.

[7] Comentário enviado por fabio em 30/07/2020 - 23:04h


[5] Comentário enviado por mauricio123 em 30/07/2020 - 22:08h


Não tá pegando o syntax on.

___________________________________
Conhecimento não se Leva para o Túmulo.


Tem o "vi" e o "vim". O syntax funciona no vim (vi improved).

[8] Comentário enviado por maurixnovatrento em 31/07/2020 - 00:24h


Sim era com o vim que eu testei. Mas, resolvi. Desinstalei a versão do mint e compilei a versão mais atual 8.2, aí sim funcionou. Agora tá indo as coisas.

___________________________________
Conhecimento não se Leva para o Túmulo.

[9] Comentário enviado por removido em 31/07/2020 - 08:39h


[8] Comentário enviado por mauricio123 em 31/07/2020 - 00:24h


Sim era com o vim que eu testei. Mas, resolvi. Desinstalei a versão do mint e compilei a versão mais atual 8.2, aí sim funcionou. Agora tá indo as coisas.

___________________________________
Conhecimento não se Leva para o Túmulo.


Estranho... uso o vim dos repositórios do mint e aqui funcionou 100%...

[10] Comentário enviado por maurixnovatrento em 31/07/2020 - 08:59h


Usei o mesmo vimrc pra garantir que não era erro. Talvez você instalou algo a mais no vim e que eu não instalei.

___________________________________
Conhecimento não se Leva para o Túmulo.

[11] Comentário enviado por maurixnovatrento em 31/07/2020 - 09:01h


Porém, me serviu de aprendizado. Compilei o vim e vou guardá-lo no git.

___________________________________
Conhecimento não se Leva para o Túmulo.

[12] Comentário enviado por removido em 31/07/2020 - 09:22h


[10] Comentário enviado por mauricio123 em 31/07/2020 - 08:59h


Usei o mesmo vimrc pra garantir que não era erro. Talvez você instalou algo a mais no vim e que eu não instalei.

___________________________________
Conhecimento não se Leva para o Túmulo.


Tenho esses packages instalados:
% dpkg -l | grep vim | awk '{ print $2}'
vim
vim-addon-manager
vim-common
vim-nox
vim-runtime
vim-tiny

[13] Comentário enviado por maurixnovatrento em 31/07/2020 - 09:35h


Eu não tinha tudo isso. O meu tá assim, já que eu gerei o pacote deb. Deve ter tudo isso integrado na minha compilação.

dpkg -l | grep vim | awk '{ print $2}'
vim

Até prefiro assim, é melhor pra gerenciar.
___________________________________
Conhecimento não se Leva para o Túmulo.

[14] Comentário enviado por maurixnovatrento em 31/07/2020 - 09:58h


Nossa. o coc pediu o node.

___________________________________
Conhecimento não se Leva para o Túmulo.

[15] Comentário enviado por maurixnovatrento em 31/07/2020 - 10:25h


Quem vai usar o vim no Mint instale o nodejs.

___________________________________
Conhecimento não se Leva para o Túmulo.

[16] Comentário enviado por maurixnovatrento em 31/07/2020 - 10:28h


[15] Comentário enviado por mauricio123 em 31/07/2020 - 10:25h


Quem vai usar o vim no Mint instale o nodejs.

___________________________________
Conhecimento não se Leva para o Túmulo.


Isso para o coc.nvim

[17] Comentário enviado por maurixnovatrento em 31/07/2020 - 12:54h


Para o nodejs também vai precisar do npm.

___________________________________
Conhecimento não se Leva para o Túmulo.

[18] Comentário enviado por fabio em 31/07/2020 - 13:37h

Maurício, precisa do pacote vim-tiny. Por isso não tinha nem o syntax.

[19] Comentário enviado por maurixnovatrento em 31/07/2020 - 19:29h


[18] Comentário enviado por fabio em 31/07/2020 - 13:37h

Maurício, precisa do pacote vim-tiny. Por isso não tinha nem o syntax.


Beleza, fica como dica para quem for seguir o tutorial, porque agora já tá compilado e configurado e funcionando. Só to apanhando do jedi-language-server, só porque não quero usar o pip. Sei i nome do pacote em deb, mas tá na versão 0.15 e o que precisa é a 0.19 pra cima. Aí complica.

[20] Comentário enviado por maurixnovatrento em 31/07/2020 - 19:30h


Outra coisa, tem plugin ctrl+z?

___________________________________
Conhecimento não se Leva para o Túmulo.

[21] Comentário enviado por maurixnovatrento em 31/07/2020 - 19:31h


E o terminal integrado?

___________________________________
Conhecimento não se Leva para o Túmulo.

[22] Comentário enviado por removido em 02/08/2020 - 15:06h

Pergunta: Você recomenta criar um vimrc monolítico ou modular?

Esse aqui é o meu https://github.com/realdanilomarto/vimrc.git

[23] Comentário enviado por fabio em 03/08/2020 - 02:11h


[22] Comentário enviado por realdanilomarto em 02/08/2020 - 15:06h

Pergunta: Você recomenta criar um vimrc monolítico ou modular?

Esse aqui é o meu https://github.com/realdanilomarto/vimrc.git


Acho que depende do tamanho do seu vimrc. E isso é algo bem pessoal também. Meu vimrc é monolítico, exceto pelo coc.nvimrc que está em arquivo separado. Gostei da organização do teu.

[24] Comentário enviado por retro em 06/08/2020 - 14:36h

artigo incrível, mas mesmo assim prefiro usar o nano
mas quem sabe um dia eu acabo me interessando em usar o vim né

~mudei pro lubuntu, TÁ EM SHOCK? mas o debian continua em meu coração UwU

[25] Comentário enviado por Calebss em 01/12/2020 - 00:11h

O artigo que faltava! Muito bom!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts