fzf — Fuzzy Finder de Linha de Comando

fzf é um filtro interativo de uso geral para o terminal, criado por Junegunn Choi. Permite busca fuzzy em qualquer tipo de lista — arquivos, histórico de comandos, processos, branches Git, namespaces Kubernetes, entre outros.


Instalação

macOS / Linux (Homebrew)

brew install fzf

Linux (outros gerenciadores)

DistroGerenciadorComando
AlpineAPKsudo apk add fzf
Debian/UbuntuAPTsudo apt install fzf
FedoraDNFsudo dnf install fzf
ArchPacmansudo pacman -S fzf
NixOSNixnix-env -iA nixpkgs.fzf
VoidXBPSsudo xbps-install -S fzf
GentooPortageemerge --ask app-shells/fzf

Windows

GerenciadorComando
Wingetwinget install fzf
Scoopscoop install fzf
Chocolateychoco install fzf

Binário direto

Baixar a última versão em: github.com/junegunn/fzf/releases e colocar no $PATH.


Integração com Shell

Habilita atalhos de teclado e completions fuzzy automáticas.

# bash (~/.bashrc)
eval "$(fzf --bash)"
 
# zsh (~/.zshrc)
source <(fzf --zsh)
 
# fish (~/.config/fish/config.fish)
fzf --fish | source

Sintaxe de Busca

Múltiplos termos

Termos separados por espaço são tratados de forma independente (AND implícito).

Tipos de Match

TokenTipoComportamento
textofuzzyCaracteres na ordem
'textoexactContém exatamente texto
'texto'boundaryContém texto nos limites de palavra
^prefixoprefixComeça com prefixo
sufixo$suffixTermina com sufixo
!textoinverseNão contém texto
!^textoinverse prefixNão começa com texto
!texto$inverse suffixNão termina com texto

Operador OR

^core go$ | rb$ | py$
# Itens que começam com "core" E terminam com "go", "rb" ou "py"

Modo Exato Global

fzf --exact   # Desativa fuzzy por padrão; ' passa a "desquotar"

Dicas para melhores resultados

  • Evitar espaços desnecessários: gitadd > git add
  • Acrônimos funcionam bem: gas para git add something
  • Quanto menos caracteres, maior a chance de match útil

Casos de Uso Comuns

TarefaLista
Abrir arquivo no editorArquivos do diretório
Trocar de diretórioSubdiretórios
Reutilizar comandoHistórico do shell
Matar processoProcessos ativos
SSH em servidor~/.ssh/known_hosts
Checkout de branch GitBranches do repositório
Trocar namespace KubernetesNamespaces disponíveis

Recursos Avançados (links)


Referências