Neovim - Instalação, primeiras configurações, Plugins e atalhos
anchietajunior / April 2020 (1137 Words, 7 Minutes)
Pra quem não conhece, o Neovim é um fork do Vim, o famoso e “milenar” editor de textos utilizado tanto por profissionais de infra que configuram distros Linux em nível hard até programadores front-end que usam React ou Vue e suas infinitas ferramentas.
Não vou falar sobre curva de aprendizado nesse post, a mensagem a ser passada aqui é: Instale, quebre a cabeça e aprenda a utilizar o Neovim.
Instalando
Caso não possua ainda o Neovim instalado, no MacOS é bem fácil utilizando o Homebrew:
brew install neovim
Configurações
O arquivo principal de configuração é por padrão o init.vim, que podemos criar no seguinte local:
~/.config/nvim/init.vim
Exibindo número das linhas
Para exibir as linhas do arquivo basta adicionar:
set number
Para que as alterações surtam efeito, o arquivo de configuração deve ser recarregado, dentro do Neovim pode ser carregado através do comando:
:source ~/.config/nvim/init.vim
Instalando plugins com Vim-Plug
O Vim-Plug sem dúvidas é um dos melhores gerenciadores de plugins para o Neovim, neste post vamos utiliza-lo.
Para instalar o Vim-Plug no MacOS, basta executar o seguinte comando:
curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
Lembrando que na página do Github podem ser encontradas as outras formas de instalação para outros SO.
Configuração básica do Vim-Plug
Voltando ao arquivo init.vim:
" Vim-Plug Config
call plug#begin('~/.vim/plugged')
Plug 'scrooloose/nerdtree'
call plug#end()
set number
Nesse caso, dentro do begin/end do Vim-Plug ficarão os plugins que precisamos, adicionei o nerdtree que é um plugin para exibir os arquivos da pasta atual na lateral da tela.
Para instalar os plugins adicionados ao arquivo init.vim, dentro do Neovim podemos executar o comando:
:PlugInstall
Criando arquivos
Com o Nerdtree instalado, podemos criar arquivos através da janela lateral ou podemos apenas executar no Neovim:
:touch meuarquivo.js
No Nerdtree, digite m e uma janela com opções será exibida, a opção a permite adicionar um novo arquivo.
Comandos básicos
A grande sacada do Vim/Neovim é criar comandos que facilitem a rotina de cada usuário, nesse caso, cada programador. Mas o Vim/Neovim já possui uma quantidade gigante de comandos que por padrão já tornam a vida mais fácil, é só esquecer por enquanto que os mouses existem. =)
Comando | Função |
---|---|
:v | Modo visual |
:i | Modo insert |
:q | Sair |
:q! | Forçar Sair |
:w | Salvar |
:w! | Forçar Salvar |
:split | Divide tela na horizontal |
s | utilizando NERDTree |
:vsplit | Divide tela na vertical |
i | utilizando NERDTree |
:tabnew | Nova tab |
Navegação
A primeira regra da navegação no Vim é: Esqueça o seu mouse. A grande sacada é que ações comuns em editores como Sublime, Atom e VSCode também sejam no Vim pra que o período de transição não precise ser doloroso.
Comando | Função |
---|---|
k | Ir para linha de cima |
j | Ir para a linha de baixo |
l | Ir para a direita |
h | Ir para esquerda |
e | Ir para o fim da palavra atual |
w | Ir para a próxima palavra |
b | Ir para a palavra anterior |
} | Ir para o próximo parágrafo |
{ | Ir para o parágrafo anterior |
$ | Ir para o fim da linha |
0 | Ir para o começo da linha |
gg | Ir para o começo do arquivo |
G | Ir para o fim do arquivo |
M | Ir para o meio da tela atual |
H | Ir para o início da tela atual |
L | Ir para o fim da tela atual |
CTRL + ww | Alterna entre janelas na tela atual |
Edição
Outra coisa muito útil do Vim são os comandos de edição e navegação+edição. Segue outra tabela de comandos úteis.
Comando | Função |
---|---|
o | Abrir nova linha em modo Insert |
A | Ir para o fim da linha em modo Insert |
dd | Excluir linha |
yy | Copiar linha |
p | Colar |
:u | Desfazer |
Mapeando atalhos
Retornando ao arquivo principal de configuração (init.vim), vamos otimizar nossa rotina de escrever código criando atalhos dentro do Neovim.
Leader Key
O primeiro passo é criar uma leader key, ou uma tecla específica para combinar com outras teclas e criar nossos atalhos, atualmente uso a vírgula do teclado como leader key, mas já usei também a barra de espaço, isso fica totalmente a seu critério, para definir a leader basta acrescentar ao init.vim:
let mapleader=','
Mapeando comandos de Plugins
Agora pra utilizar a leader key, podemos testar com o NERDTree. O comando NERDTreeToggle abre ou fecha a janela lateral dos arquivos, vamos mapear um atalho para executar esse comando sempre que digitado:
nmap <leader>/ :NERDTreeToggle<CR>
Então, dessa forma estou “ensinando” ao meu Neovim que toda vez que eu digitar minha leader key (,) e em seguinda digitar barra (/), quero que ele execute o comando :NERDTreeToggle, para abrir ou fechar a janela lateral de arquivos, o
Mapeando comandos do Vim
Outro exemplo, podemos mapear uma tecla específica que em conjunto da leader key possa salvar o arquivo atual sem precisar digitar ESC + :w toda vez, então podemos adicionar ao arquivo init.vim:
nmap <leader>s :w<CR>
Então, fica definido que toda vez que a leader key (,) for apertada e seguida da letra s, o Neovim executa o comando :w + ENTER para salvar o arquivo.
Mudando o tema
Sim, podemos modificar facilmente o tema do Neovim como em outros editores e uma coisa legal é que a maioria dos temas encontrados para o VSCode por exemplo, também são encontrados para o Neovim.
Nesse caso, vamos utilizar o famoso tema Molokai.
Adicionando novo Plugin/Tema
O tema também é um Plugin, portanto voltamos ao Vim-Plug e suas configurações para adicionar o Molokai, dentro do begin e end no arquivo init.vim:
Plug 'tomasr/molokai'
Dentro do Neovim instalamos o Plugin:
:PlugInstall
Agora podemos definir o Molokai como tema padrão, fora do begin e end do Vim-Plug:
colorscheme molokai
set background=dark
Fonte e tamanho do texto
Também é muito comum modificar a fonte do editor conforme mais nos agrade, portanto basta acrescentar ao init.vim:
set guifont=Fira\ Code:h16
No caso, estou utilizando a fonte Fira Code no tamanho 16.
Dicas de plugins
Um site bem famoso e ótimo para buscar plugins do Vim/Neovim é o VimAwesome, retirada dele, deixo uma lista de plugins que já utilizei ou utilizo no meu Neovim.
Plugin | Função |
---|---|
vim-airline/vim-airline | Barra de status com várias informações |
sheerun/vim-polyglot | Identifica várias linguagens diferentes |
jiangmiao/auto-pairs | Fecha automaticamente pares como aspas, colchetes, chaves e etc. |
Conclusão
O arquivo init.vim final fica da seguinte forma:
" Vim-Plug Config
call plug#begin('~/.vim/plugged')
Plug 'scrooloose/nerdtree'
Plug 'tomasr/molokai'
Plug 'vim-airline/vim-airline'
Plug 'sheerun/vim-polyglot'
Plug 'jiangmiao/auto-pairs'
call plug#end()
colorscheme molokai
set background=dark
set guifont=Fira\ Code:h16
set number
let mapleader=','
nmap <leader>/ :NERDTreeToggle<CR>
nmap <leader>s :w<CR>
O Neovim não é um bicho de 7 cabeças, basta investir algumas horas definindo os atalhos que sejam mais úteis para você e decorar alguns comandos básicos. É isso.