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.
- Repositório: github.com/junegunn/fzf
- Documentação oficial: junegunn.github.io/fzf
Instalação
macOS / Linux (Homebrew)
brew install fzfLinux (outros gerenciadores)
| Distro | Gerenciador | Comando |
|---|---|---|
| Alpine | APK | sudo apk add fzf |
| Debian/Ubuntu | APT | sudo apt install fzf |
| Fedora | DNF | sudo dnf install fzf |
| Arch | Pacman | sudo pacman -S fzf |
| NixOS | Nix | nix-env -iA nixpkgs.fzf |
| Void | XBPS | sudo xbps-install -S fzf |
| Gentoo | Portage | emerge --ask app-shells/fzf |
Windows
| Gerenciador | Comando |
|---|---|
| Winget | winget install fzf |
| Scoop | scoop install fzf |
| Chocolatey | choco 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 | sourceSintaxe de Busca
Múltiplos termos
Termos separados por espaço são tratados de forma independente (AND implícito).
Tipos de Match
| Token | Tipo | Comportamento |
|---|---|---|
texto | fuzzy | Caracteres na ordem |
'texto | exact | Contém exatamente texto |
'texto' | boundary | Contém texto nos limites de palavra |
^prefixo | prefix | Começa com prefixo |
sufixo$ | suffix | Termina com sufixo |
!texto | inverse | Não contém texto |
!^texto | inverse prefix | Não começa com texto |
!texto$ | inverse suffix | Nã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:
gasparagit add something - Quanto menos caracteres, maior a chance de match útil
Casos de Uso Comuns
| Tarefa | Lista |
|---|---|
| Abrir arquivo no editor | Arquivos do diretório |
| Trocar de diretório | Subdiretórios |
| Reutilizar comando | Histórico do shell |
| Matar processo | Processos ativos |
| SSH em servidor | ~/.ssh/known_hosts |
| Checkout de branch Git | Branches do repositório |
| Trocar namespace Kubernetes | Namespaces disponíveis |
Recursos Avançados (links)
- Shell Integration
- Tips: Ripgrep Integration
- Tips: Browsing Log Streams
- Examples: Git Objects
- Examples: Directory Navigation
- Examples: Tmux Integration