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
:helpdo 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
lno lugar dec.
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.
Navegação
| Quickfix | Location list | Ação |
|---|---|---|
:copen | :lopen | abre a janela da lista |
:cclose | :lclose | fecha |
:cnext / :cn | :lnext | próxima entrada |
:cprev / :cp | :lprev | anterior |
:cfirst / :clast | :lfirst | primeira / última |
:cdo | :ldo | executa comando em cada entrada |
:cfdo | :lfdo | executa 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 atualEdiçã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 —
:cnextnão navega a location list :cdosem revisar:copenantes — edição em massa sem conferência- Esquecer
| update— os arquivos ficam modificados e não salvos :vimgrepem projeto grande — use:grepcom 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
- O que Navegação resolve, e o que se perde sem isso?
- O que De onde vem o conteúdo resolve, e o que se perde sem isso?
- O que Edição em massa resolve, e o que se perde sem isso?
- Qual parte desta página você conseguiria reproduzir sem consultar, direto no editor?
Artigos relacionados
Veja também
- Busca e substituição — o que popula a lista
- Comandos Ex
- Configuração do LSP — diagnósticos como fonte
Referências
:help quickfix:help :cdo:help errorformat