+++ 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. 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.