The source content for blog.juliobiason.me
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
3.7 KiB

+++
title = "Eu Refiz Minha Configuração do NeoVim"
date = 2022-01-19
[taxonomies]
tags = ["vim", "neovim", "configuração", "lsp", "treesitter"]
+++
Por algum motivo obscuro, minha instalação do NeoVim não queria mais mostrar os
alertas do LSP. Então eu decidi refazer minha configuração.
<!-- more -->
Acredite-me, eu não fiz porque "PQP, tudo quebrado". Eu acredito que eu poderia
encontrar o problema com a forma como o
[LanguageClient](https://github.com/autozimu/LanguageClient-neovim) estava
instalado -- poderia até mesmo estar desatualizado, já que eu atualizei para o
NeoVim 0.6 recentemente -- mas eu também geria instalar o TreeSitter para ter
um suporte melhor à coloração do fonte. Estes dois fatores foram suficientes
para tentar fazer uma configuração nova, e eu decidi que eu iria fazer a coisa
toda, usando o arquivo de configuração em formato Lua.
Eu comecei com [o post do Takuya
Matsyama](https://blog.inkdrop.app/how-to-set-up-neovim-0-5-modern-plugins-lsp-treesitter-etc-542c3d9c9887)
como referência -- eu não costumo usar gerenciadores de pacote (e provavelmente
aí é que está o problema com o plugin desatualizado) e eu prefiro trabalhar com
submódulos e coisas do tipo -- um formato que é bem próximo da forma como o
[Pathogen](https://github.com/tpope/vim-pathogen) funciona.
Como eu queria mover algumas coisas da minha antiga configuração para a nova,
eu precisei procurar como "traduzí-las". Foi aí que eu encontrei [um post por
Heiker Curiel](https://vonheikemen.github.io/devlog/tools/configuring-neovim-using-lua/),
que lista as antigas opções de configuração e como elas aparecem numa
configuração em Lua.
O resultado é que eu agora tenho uma instalação novinha do NeoVim, com todas as
firulas:
![](vim6.png "Sim, eu gosto de escrever longas descrições para as funções")
O arquivo de configuração (e submódulos) está no [meu repositório pessoal do
Git](https://git.juliobiason.me/dotfiles.git/tree/nvim).
### O que ficou pra trás?
Enquanto eu estava migrandion, eu resolvi não adicionar algumas coisas nessa
nova configuração:
- Fuzzy find: Anteriormente eu estava usando o
[Skim](https://github.com/lotabout/skim) para abrir arquivos com fuzzy find
(digite algumas letras, veja uma lista de arquivos que tem essas letras). O
plugin do Vim para o Skim apresentava alguns problemas (algumas vezes
ignorando completamente o que era digitado na entrada, o que me faz pensar
que o plugin teria crasheado de alguma forma). Mas, como eu só usava quando
estava entediado, eu acabei deixando a opção de fuzzy find de fora; minha
forma favorita de procurar arquivos é usando o atalho `-`, que eu botei para
chamar o `:Ex`.
- Snippets: [UltiSnips](https://github.com/sirver/UltiSnips) não estava
funcionando antes então eu resolvi não tentar de novo. Eu provavelmente vou
procurar por alguma outra opção no futuro.
- Configuração por tipo de arquivo: Anteriormente eu tinha um bocado de
"autocommands" para definir configurações específicas para cada arquivo (por
exemplo, arquivos Python devem usar espaços ao invés de tabulações, mas
arquivos HTML devem usar tabulações ao invés de espaços). Eu deixei de fora
porque, até onde eu vi, não há suporte na versão em Lua para isso (ainda é
possível rodar comandos VimScript, mas eu tô sendo meio chato com relação à
isso).
- Remover espaços no final das linhas: A minha configuração anterior tinha um
autocommand para executar uma expressão regular que removia todos os espaços
no final das linhas. Como eu atualmente estou usando mais Rust e a
configuração do LSP roda um autoformatter (no caso, o `rustfmt`) e isso já
remove os espaços, eu decidi não aplicar essa opção de novo.
<!--
vim:spelllang=pt:
-->