Quickfix e location list

    Definição curta: A quickfix é uma lista global de posições em arquivos — erros de compilação, resultados de busca, diagnósticos. A location list é o mesmo, mas local a uma janela.

    Antes de começar

    • Saber sair do Neovim (:q) e navegar em modo normal

    O que você vai aprender

    • Explicar Navegação com suas palavras
    • Explicar De onde vem o conteúdo com suas palavras
    • Explicar Edição em massa com suas palavras
    • Localizar o assunto desta página no :help do seu próprio Neovim

    O que é

    Muitas operações produzem uma lista de “lugares onde algo acontece”: erros de compilação, ocorrências de uma busca, diagnósticos do LSP. O Neovim tem uma estrutura única para todas elas.

    • Quickfix: uma por sessão, global. Preenchida por :make, :grep, :vimgrep, plugins.
    • Location list: uma por janela. Mesmos comandos com l no lugar de c.

    A distinção prática: use a location list para resultados que pertencem a um arquivo específico (diagnósticos daquele buffer) e a quickfix para resultados que atravessam o projeto.

    QuickfixLocation listAção
    :copen:lopenabre a janela da lista
    :cclose:lclosefecha
    :cnext / :cn:lnextpróxima entrada
    :cprev / :cp:lprevanterior
    :cfirst / :clast:lfirstprimeira / última
    :cdo:ldoexecuta comando em cada entrada
    :cfdo:lfdoexecuta comando em cada arquivo

    Mapeamentos que valem a pena:

    vim.keymap.set('n', ']q', ':cnext<CR>', { desc = 'Próxima quickfix' })
    vim.keymap.set('n', '[q', ':cprev<CR>', { desc = 'Quickfix anterior' })
    vim.keymap.set('n', '<leader>q', ':copen<CR>', { desc = 'Abre quickfix' })

    O padrão ]x / [x para “próximo/anterior de x” é convenção difundida no ecossistema — vale adotar para diagnósticos, hunks do git e buffers também.

    De onde vem o conteúdo

    Busca no projeto.

    :grep -r 'TODO' .        " usa grepprg
    :vimgrep /TODO/ **/*.lua " busca interna, mais lenta

    Compilação e testes.

    :set makeprg=cargo\ build
    :make

    O errorformat diz ao Neovim como interpretar a saída. Para muitas ferramentas já existe um compiler pronto: :compiler cargo.

    Diagnósticos do LSP.

    vim.diagnostic.setqflist()   -- todos os diagnósticos do projeto
    vim.diagnostic.setloclist()  -- só do buffer atual

    Edição em massa

    O uso mais poderoso da quickfix é como entrada de uma edição em vários arquivos:

    :grep -r 'nomeAntigo' .
    :copen                      " confira a lista antes
    :cdo s/nomeAntigo/nomeNovo/g | update

    O passo :copen não é decorativo: revisar a lista antes de executar evita substituições em arquivos que você não pretendia tocar.

    :cfdo roda uma vez por arquivo, em vez de uma por ocorrência — mais rápido para comandos que já operam no arquivo inteiro.

    Histórico de listas

    O Neovim guarda as dez últimas quickfix:

    :colder      " lista anterior
    :cnewer      " lista seguinte
    :chistory    " mostra o histórico

    Isso salva o caso de fazer uma busca nova e perceber que a anterior era a certa.

    Erros comuns

    • Confundir as duas listas:cnext não navega a location list
    • :cdo sem revisar :copen antes — edição em massa sem conferência
    • Esquecer | update — os arquivos ficam modificados e não salvos
    • :vimgrep em projeto grande — use :grep com ripgrep, é ordens de grandeza mais rápido

    Você aprendeu

    • Navegação
    • De onde vem o conteúdo
    • Edição em massa
    • Histórico de listas
    • Erros comuns

    Perguntas para reflexão

    1. O que Navegação resolve, e o que se perde sem isso?
    2. O que De onde vem o conteúdo resolve, e o que se perde sem isso?
    3. O que Edição em massa resolve, e o que se perde sem isso?
    4. Qual parte desta página você conseguiria reproduzir sem consultar, direto no editor?

    Artigos relacionados

    Veja também

    Referências

    • :help quickfix
    • :help :cdo
    • :help errorformat