fzf Cheatsheet

0.57

Busca fuzzy para tudo — arquivos, histórico, processos e mais

Português: 2026-03-29

fzf é um fuzzy finder para o seu terminal, e quando você começa a usar, vai se perguntar como sobreviveu sem ele. Pipe qualquer coisa nele — listas de arquivos, branches do git, IDs de processos, variáveis de ambiente, literalmente qualquer input baseado em linhas — e o fzf te dá uma interface de busca instantânea, interativa e tolerante a erros de digitação. Ele transforma "rolar 400 linhas de output apertando os olhos em cada uma" em "digitar três caracteres e pronto."

A beleza do fzf é que ele é um filtro Unix. Ele lê linhas do stdin, deixa você escolher uma (ou várias), e escreve sua seleção no stdout. Só isso. Esse contrato simples significa que ele se conecta a tudo. Combine com find, rg, git, ps, docker, ou qualquer outra coisa que produza texto, e você tem um seletor interativo de graça. É a fita adesiva dos workflows de terminal — só que na verdade é elegante.

Este cheatsheet foca nos padrões que você vai usar constantemente: os comandos principais, as integrações com o shell que vão mudar como você navega no seu sistema de arquivos, a janela de preview que faz seleções parecerem luxuosas, e as receitas do mundo real que transformam o fzf de "brinquedo legal" em "infraestrutura essencial." Se você só aprender três coisas aqui, que sejam Ctrl-R, Ctrl-T e a flag --preview. Todo o resto é bônus.

Uso Básico

Os fundamentos. A maioria das pessoas começa aqui e nunca percebe quão fundo o buraco do coelho vai.

Uso Básico
fzf
Iniciar o fzf com uma lista recursiva de arquivos do diretório atual
<cmd> | fzf
Redirecionar o output de qualquer comando para o fzf para filtragem interativa
fzf --query "str"
Iniciar com uma busca pré-preenchida
fzf --filter "str"
Modo não-interativo — imprime resultados no stdout e sai
fzf --select-1
Selecionar automaticamente se houver apenas um resultado
fzf --exit-0
Sair imediatamente se não houver resultados
fzf -m
Habilitar modo multi-seleção (Tab para alternar seleções)
fzf --height 40%
Abrir fzf inline em vez de tela cheia
fzf --reverse
Exibir a lista de cima para baixo em vez de baixo para cima
fzf --exact
Desabilitar busca fuzzy — mostrar apenas correspondências exatas de substring

Sintaxe de Busca

A linguagem de busca do fzf é pequena mas surpreendentemente poderosa. Você pode combinar esses tokens em uma única consulta.

Sintaxe de Busca
sbtrkt
Correspondência fuzzy — caracteres devem aparecer em ordem, mas não consecutivamente
'wild
Correspondência exata (prefixada com aspas simples)
^music
Correspondência exata de prefixo — deve começar com "music"
.mp3$
Correspondência exata de sufixo — deve terminar com ".mp3"
!fire
Correspondência inversa exata — excluir linhas contendo "fire"
!'.mp3$
Correspondência inversa de sufixo — excluir linhas terminando com ".mp3"
foo | bar
Operador OR — corresponder linhas com "foo" ou "bar"

Atalhos de Teclado Dentro do fzf

Uma vez que o fzf está aberto, essas teclas controlam navegação e seleção.

Atalhos de Teclado Dentro do fzf
Ctrl-j / Ctrl-n
Mover cursor para baixo
Ctrl-k / Ctrl-p
Mover cursor para cima
Enter
Aceitar seleção atual
Tab
Alternar seleção no modo multi-seleção (-m)
Shift-Tab
Desmarcar no modo multi-seleção
Ctrl-a
Selecionar todos os resultados (modo multi-seleção)
Ctrl-d
Desmarcar todos (modo multi-seleção)
Ctrl-/
Alternar visibilidade da janela de preview
Ctrl-c / Esc
Cancelar e sair do fzf
Ctrl-l
Limpar a consulta de busca

Integrações com o Shell

Esses são os três atalhos que fazem o fzf parecer um superpoder. Eles se conectam diretamente ao seu shell e funcionam imediatamente após a instalação.

Integrações com o Shell
Ctrl-R
Buscar no histórico de comandos do shell — o melhor recurso do fzf
Ctrl-T
Encontrar arquivos e colar o caminho selecionado na sua linha de comando
Alt-C
Busca fuzzy de diretório e cd imediatamente
**<Tab>
Acionar completação do fzf (ex.: vim **<Tab>, cd **<Tab>)
kill **<Tab>
Busca fuzzy de um processo para matar via completação
ssh **<Tab>
Busca fuzzy de um host do known_hosts / ssh config

Janela de Preview

A janela de preview transforma o fzf de um seletor em um navegador completo. Você pode visualizar arquivos, código com syntax highlighting, imagens, diffs do git — qualquer coisa que possa passar por um comando.

Janela de Preview
--preview "cat {}"
Mostrar conteúdo do arquivo em um painel de preview
--preview "bat --color=always {}"
Preview com syntax highlighting usando bat (o padrão ouro)
--preview-window right:60%
Posicionar preview à direita, ocupando 60% da largura
--preview-window up:50%:wrap
Posicionar preview no topo com quebra de linha
--preview-window hidden
Iniciar com preview escondido, alternar com Ctrl-/
--bind "ctrl-u:preview-half-page-up"
Vincular Ctrl-u para rolar para cima no preview
--bind "ctrl-d:preview-half-page-down"
Vincular Ctrl-d para rolar para baixo no preview

Padrões Comuns

Essas são as receitas prontas para copiar e colar que tornam o fzf indispensável. Cada uma resolve um problema real que você provavelmente enfrentou esta semana.

Gerenciamento de Processos
kill -9 $(ps aux | fzf | awk '{print $2}')
Busca fuzzy e matar um processo
ps aux | fzf -m | awk '{print $2}' | xargs kill
Matar múltiplos processos de uma vez
Workflows Git
git branch | fzf | xargs git switch
Busca fuzzy e trocar para uma branch do git
git log --oneline | fzf --preview "git show {1}"
Navegar commits com preview de diff
git diff --name-only | fzf --preview "git diff {}"
Navegar arquivos alterados com diff inline
git stash list | fzf | cut -d: -f1 | xargs git stash pop
Escolher um stash para aplicar interativamente
Docker
docker ps | fzf | awk '{print $1}' | xargs docker stop
Busca fuzzy e parar um container em execução
docker images | fzf | awk '{print $3}' | xargs docker rmi
Busca fuzzy e remover uma imagem
docker logs -f $(docker ps | fzf | awk '{print $1}')
Acompanhar logs de um container selecionado
Navegação de Arquivos e Diretórios
vim $(fzf)
Abrir um arquivo encontrado via fuzzy no seu editor
cd $(fd -t d | fzf)
Busca fuzzy de diretório e cd para ele
rg --files | fzf --preview "bat --color=always {}"
Navegar arquivos do projeto com preview com syntax highlighting
rg -l "pattern" | fzf --preview "rg --color=always pattern {}"
Encontrar arquivos correspondendo a um padrão, visualizar correspondências em contexto

Dicas

Defina FZF_DEFAULT_COMMAND para usar fd ou rg em vez do find padrão. Eles são mais rápidos, respeitam o .gitignore e pulam lixo como node_modules automaticamente. Tente export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git' no seu perfil de shell.

Customize as integrações do shell independentemente com FZF_CTRL_T_COMMAND, FZF_CTRL_R_OPTS e FZF_ALT_C_COMMAND. Por exemplo, defina FZF_ALT_C_COMMAND='fd --type d' para que Alt-C use fd para busca ultrarrápida de diretórios e ignore automaticamente entradas do .gitignore.

Coloque suas opções padrão do fzf em FZF_DEFAULT_OPTS para que se apliquem em todo lugar. Um bom ponto de partida: export FZF_DEFAULT_OPTS='--height 40% --reverse --border --preview-window right:50%:wrap'. Isso te dá um layout compacto, de cima para baixo, com painel de preview em toda invocação.

Use --bind para adicionar ações personalizadas. Por exemplo, --bind 'ctrl-y:execute-silent(echo {} | pbcopy)' copia a seleção atual para o clipboard sem sair do fzf. Você pode vincular qualquer tecla para executar, recarregar, visualizar ou mudar o comportamento do fzf em tempo real.

O comando --preview tem acesso a placeholders: {} é a linha completa, {1} é o primeiro campo, {q} é a consulta atual, e {n} é o número da linha. Esses permitem construir previews surpreendentemente sofisticados sem escrever um script wrapper.

Combine fzf com --header para dar contexto amigável aos seus scripts personalizados. Algo como git branch | fzf --header "Trocar para branch:" faz scripts descartáveis parecerem polidos. Combine com --prompt para personalizar o texto do prompt de busca também.

No tmux, o fzf pode abrir em um popup em vez de inline. Use fzf-tmux -p 80%,60% para iniciar o fzf em uma janela popup flutuante centralizada. É elegante, fica fora do seu pane principal e desaparece quando você termina. Uma vez que experimentar, fzf inline vai parecer apertado.

Related Tools