O Neovim já é bastante poderoso, mas tirar o máximo proveito dele envolve menos acumular plug-ins e mais escolher os plug-ins certos. Os plugins abaixo não são populares porque estão na moda, mas porque resolvem incômodos específicos que aparecem depois que você passa bastante tempo dentro do editor (geralmente mais tempo do que o planejado).
Nenhum dos plug-ins é necessário para usar o Neovim corretamente. Eles conquistam seu lugar desbloqueando partes do editor que só importam quando você tenta tirar o máximo proveito dele. As etapas de instalação nas seções abaixo pressupõem o uso do Lazy (muitas vezes confundido com o LazyVim), um gerenciador de plugins amplamente utilizado para o Neovim.
Expiar
A primeira é uma descoberta inesperada porque não pensei que algo assim pudesse existir de uma forma tão limpa e utilizável (e ainda assim parecer tão coerente). Atone apresenta seu histórico de desfazer como uma árvore que você pode realmente explorar, em vez do habitual desfazer, desfazer e desfazer até atingir o objetivo.
Tenho certeza de que você já passou por isso, ao fazer uma série de edições, continuar trabalhando por um tempo e então perceber que uma alteração específica anterior foi melhor ou pelo menos menos errada. Desfazer desde então não é uma opção. Atone resolve exatamente esse problema visualizando cada ramificação que suas edições criaram, e você pode percorrer históricos alternativos do mesmo arquivo e restaurá-lo exatamente para o estado desejado.
Usá-lo é simples, basta executar :Expiar e uma janela lateral se abre com uma árvore de desfazer. Você navega entre os nós com a tecla de seta e restaura um estado usando o atalho de teclado fornecido.
A instalação é tão simples quanto isto:
return { "XXiaoA/atone.nvim", cmd = "Atone", opts = {}, }
Por que o Neovim é meu editor de texto preferido e o que o torna tão poderoso
Neovim é minha ferramenta preferida para quase tudo relacionado a texto.
Conforme
Talvez Go seja o responsável por essa obsessão, mas preciso de código formatado. A formatação adequada remove toda a confusão (nem toda se o seu código for ruim) e mantém as diferenças legíveis.
O Conform se define como um formatador leve, mas poderoso, e essa descrição se mantém na prática. Em vez de substituir buffers inteiros, ele calcula diferenças mínimas e aplica apenas o que precisa ser alterado. Isso preserva marcas, dobras e posição do cursor, que podem parecer pequenas até que você experimente a alternativa.
Ele também corrige formatadores LSP mal comportados, interceptando sua saída e convertendo-a em edições incrementais adequadas. Além disso, ele pode formatar intervalos mesmo que o formatador subjacente não ofereça suporte.
Para instalar e configurar, execute isto:
return { 'stevearc/conform.nvim', opts = { lua = { "stylua" }, -- Conform will run multiple formatters sequentially python = { "isort", "black" }, -- Use a sub-list to run only the first available formatter javascript = { { "prettierd", "prettier" } }, markdown = { { "prettierd", "prettier" } }, typescript = { "eslint_d" }, sh = { "shfmt" }, bash = { "shfmt" }, }, config = function() vim.api.nvim_create_user_command("Reformat", function(args) local range = nil if args.count ~= -1 then local end_line = vim.api.nvim_buf_get_lines(0, args.line2 - 1, args.line2, true)[1] range = { start = { args.line1, 0 }, ["end"] = { args.line2, end_line:len() }, } end require("conform").format({ async = true, lsp_fallback = true, range = range }) end, { range = true })
Clarão
Nem todo o seu tempo no Neovim é gasto escrevendo código; muito disso é gasto percorrendo-o (infelizmente), e o Flash se concentra nisso.
Em um nível básico, ele melhora os movimentos f, F, t, T integrados, tornando os alvos de salto mais claros e precisos, mas também vai além da navegação de personagens. Ele permite pular para palavras, linhas, nós de sintaxe ou padrões definidos por expressões regulares.
O que o torna fascinante é o quão bem ele se integra ao modo pendente do operador. Você inicia um operador, invoca o Flash e, em seguida, aplica esse operador exatamente onde deseja, sem quaisquer etapas intermediárias complicadas. Também torna a pesquisa contextual, permitindo alternar entre funções e variáveis dependendo do buffer.
Para instalar o Flash:
return { "folke/flash.nvim", event = "verylazy", ---@type flash.config opts = {}, keys = { { "s", mode = { "n", "x", "o" }, function() require("flash").jump() end, desc = "flash" }, { "S", mode = { "n", "x", "o" }, function() require("flash").treesitter() end, desc = "flash treesitter" }, { "r", mode = "o", function() require("flash").remote() end, desc = "remote flash" }, { "R", mode = { "o", "x" }, function() require("flash").treesitter_search() end, desc = "treesitter search" }, { "", mode = { "c" }, function() require("flash").toggle() end, desc = "toggle flash search" }, }, }
Diagnóstico Inline Minúsculo
Os diagnósticos inline no Neovim são realmente úteis, mas muitas vezes quando são longos, muito longos, eles são cortados e você vê apenas parte deles. As coisas pioram se for uma linguagem muito detalhada. Este plugin corrige esse problema.
Ele faz com que as mensagens de diagnóstico se expandam adequadamente, suporta múltiplas linhas e permanece legível sem qualquer interação extra. Você pode ver toda a mensagem ao vivo onde estiver trabalhando, o que simplifica significativamente a depuração.
Para instalar o TiD, use o seguinte código:
return { "rachartier/tiny-inline-diagnostic.nvim", event = "VeryLazy", priority = 1000, opts = { add_messages = { display_count = true, }, multilines = { enabled = true, always_show = true, }, show_source = { enabled = true, } }, }
Neogitos
Eu tinha o Neogit instalado há muito tempo sem realmente usá-lo. Principalmente porque os hábitos são difíceis de mudar. Isso mudou quando adicionei um atalho de teclado e me comprometi a usá-lo como minha interface principal do Git.
Neogit fornece uma UI Git focada dentro do Neovim. Ele permite que você inspecione o status do repositório, prepare blocos, escreva commits, gerencie ramificações e resolva conflitos sem mudança de contexto. Executá-lo em uma janela flutuante mantém-no visualmente contido e evita ocupar a tela.
Para instalar o Neogit:
return { "NeogitOrg/neogit", dependencies = { "nvim-lua/plenary.nvim", -- required "sindrets/diffview.nvim", -- optional - Diff integration "nvim-telescope/telescope.nvim", -- optional }, opts = { kind = "floating", }, config = true }
11 dicas do Vim que economizarão horas de edição
Seja um profissional do Vim.
Bárbaro
A maioria de nós é multitarefa e geralmente não tem apenas um arquivo aberto. Muito pelo contrário, na verdade, via de regra temos vários arquivos abertos. Isso é quase o mesmo que acontece com as guias do seu navegador. Barbar reconhece essa realidade e oferece uma barra de proteção adequada.
Ele fornece guias reordenáveis, ícones, indicador de status do Git e um modo de seleção de buffer que transforma a troca de buffer em memória muscular. No modo BufferPick, cada guia recebe uma letra que permanece estável durante a vida útil desse buffer. Depois de um tempo, você para de pensar nos nomes dos arquivos e simplesmente pula diretamente (suas mãos lembram antes do seu cérebro).
Para instalar o Barbar, use este código:
return{ { 'romgrk/barbar.nvim', dependencies = { 'lewis6991/gitsigns.nvim', 'nvim-tree/nvim-web-devicons', }, init = function() vim.g.barbar_auto_setup = false end, opts = { sidebar_filetypes = { ['neo-tree'] = { event = 'BufWipeout' } }, }, }, }
Vistos isoladamente, esses plug-ins podem não parecer tão notáveis, e é exatamente por isso que são importantes. Cada um desses plug-ins remove uma limitação pequena, mas persistente, no uso diário do Neovim, desde o histórico de desfazer e formatação até a navegação e gerenciamento de buffer. Juntos, eles ajudam a ir além do simples uso do Neovim e a tirar o máximo proveito dele.