fzf — Fuzzy Finder
If you like this project, consider supporting me on Buy Me a Coffee ☕️
📖 Basics / Основы
fzf # Interactive fuzzy finder / Интерактивный нечёткий поиск
fzf -m # Multi-select mode / Режим множественного выбора
fzf --height 40% # Set height / Установить высоту
fzf --reverse # Reverse layout / Обратная раскладка
fzf --border # Show border / Показать рамку
fzf --prompt='Select: ' # Custom prompt / Произвольная подсказка
fzf --query='init' # Start with query / Начать с запроса
fzf --select-1 # Auto-select if only one match / Авт выбор если одно совпадение
fzf --exit-0 # Auto-exit if no matches / Автовыход если нет совпадений
📁 File & Directory Navigation / Навигация по файлам и каталогам
fd -t f | fzf # Find and select file / Найти и выбрать файл
fd -t f | fzf | xargs -r $EDITOR # Pick file to edit / Выбрать файл для редактирования
fd -t d | fzf # Find and select directory / Найти и выбрать каталог
fd -t f | fzf | xargs -r cat # View file content / Просмотреть содержимое
find . -type f | fzf --preview 'cat {}' # With preview / С предпросмотром
fd . | fzf --preview 'bat --color=always {}' # Syntax highlighted preview / Предпросмотр с подсветкой
fd . | fzf --preview 'tree -C {} | head -100' # Tree preview for dirs / Дерево для каталогов
📜 Command History / История команд
history | fzf # Search command history / Поиск по истории команд
history | fzf +s --tac # Reverse history / Обратная история
history | fzf +s | sed 's/^ *[0-9]* *//' | sh # Execute selected command / Выполнить выбранную команду
fc -l 1 | fzf | awk '{print $2}' # Alternative history / Альтернативная история
🌿 Git Integration / Интеграция с Git
git branch | fzf | xargs -r git checkout # Switch branch / Переключить ветку
git branch -a | fzf | sed 's/remotes\/origin\///' | xargs -r git checkout # Checkout remote branch / Переключить удалённую ветку
git log --oneline | fzf | awk '{print $1}' | xargs -r git show # View commit / Просмотреть коммит
git status -s | fzf -m | awk '{print $2}' | xargs -r git add # Stage files / Добавить файлы
git diff --name-only | fzf | xargs -r git checkout -- # Discard changes / Отменить изменения
git branch | fzf -m | xargs -r git branch -d # Delete branches / Удалить ветки
git log --oneline | fzf --preview 'git show --color=always {1}' # Log with preview / Лог с предпросмотром
git reflog | fzf | awk '{print $1}' | xargs -r git checkout # Browse reflog / Просмотр reflog
🔄 Process Management / Управление процессами
[!WARNING]
kill -9forcefully terminates processes without cleanup. Use with caution.kill -9принудительно завершает процессы без очистки. Используйте с осторожностью.
ps aux | fzf | awk '{print $2}' | xargs -r kill # Kill process / Убить процесс
ps aux | fzf -m | awk '{print $2}' | xargs -r kill -9 # Force kill multiple / Принудительно убить несколько
systemctl list-units --type=service | fzf | awk '{print $1}' | xargs -r systemctl status # Service status / Статус сервиса
systemctl list-units --type=service --state=running | fzf | awk '{print $1}' | xargs -r systemctl restart # Restart service / Перезапустить сервис
journalctl -u $(systemctl list-units --type=service | fzf | awk '{print $1}') # View service logs / Просмотр логов сервиса
🖼️ Custom Preview / Настраиваемый предпросмотр
fzf --preview 'cat {}' # File content preview / Предпросмотр содержимого
fzf --preview 'head -100 {}' # First 100 lines / Первые 100 строк
fzf --preview 'bat --style=numbers --color=always {}' # Syntax highlight with bat / С подсветкой синтаксиса
fzf --preview 'ls -lah {}' # File details / Детали файла
fzf --preview-window=right:50% # Preview on right 50% / Предпросмотр справа 50%
fzf --preview-window=up:40%:wrap # Preview up with wrap / Предпросмотр сверху с переносом
fzf --preview-window=hidden # Hidden preview (toggle with ctrl-/) / Скрытый предпросмотр
🐳 Docker & Kubernetes
docker ps -a --format '{{.Names}}' | fzf | xargs -r docker logs # View container logs / Просмотр логов контейнера
docker ps -a --format '{{.Names}}' | fzf -m | xargs -r docker rm -f # Remove containers / Удалить контейнеры
docker images --format '{{.Repository}}:{{.Tag}}' | fzf -m | xargs -r docker rmi # Remove images / Удалить образы
docker ps --format '{{.Names}}' | fzf | xargs -r docker exec -it # Exec into container / Войти в контейнер
kubectl get pods -o name | fzf | xargs -r kubectl logs # View pod logs / Просмотр логов пода
kubectl get pods -o name | fzf | xargs -r kubectl describe # Describe pod / Описание пода
kubectl get pods -o name | fzf | xargs -r kubectl delete # Delete pod / Удалить под
🌟 Real-World Examples / Примеры из практики
# Select and edit config file / Выбор и редактирование конфига
fd -e conf -e yaml -e yml /etc | fzf | xargs -r $EDITOR
# Select and tail log file / Выбор и просмотр лога
find /var/log -name "*.log" | fzf | xargs -r tail -f
# Kill process by name / Убить процесс по имени
ps aux | fzf --header 'Select process to kill' | awk '{print $2}' | xargs -r kill -9
# SSH to host / SSH на хост
cat ~/.ssh/config | grep "^Host " | awk '{print $2}' | fzf | xargs -r ssh
# Change directory / Сменить каталог
cd $(fd -t d | fzf)
# Git checkout with preview / Git checkout с предпросмотром
git branch -a | sed 's/^* //' | sed 's/remotes\/origin\///' | sort -u | fzf --preview 'git log --oneline --color=always {}' | xargs -r git checkout
# Select and compress files / Выбор и сжатие файлов
fd -t f | fzf -m | xargs -r tar -czf archive.tar.gz
# Find and remove old files / Найти и удалить старые файлы
find . -name "*.tmp" -mtime +7 | fzf -m --preview 'ls -lh {}' | xargs -r rm
# Browse and edit recent files / Просмотр и редактирование недавних файлов
find . -type f -mtime -7 | fzf --preview 'bat --color=always {}' | xargs -r $EDITOR
🔧 Advanced Techniques / Продвинутые техники
# With ripgrep for content search / С ripgrep для поиска по содержимому
rg --files-with-matches "" | fzf --preview 'rg --pretty --context 3 {q} {}'
# Interactive file manager / Интерактивный файловый менеджер
fd . | fzf --bind 'enter:execute($EDITOR {})'
# Multi-select with custom actions / Множественный выбор с действиями
fd -t f | fzf -m --bind 'ctrl-d:execute(rm {}),ctrl-e:execute($EDITOR {})'
# Environment variable selector / Выбор переменной окружения
env | fzf | cut -d= -f1
# Select and copy to clipboard / Выбор и копирование в буфер
fd -t f | fzf | xargs -r cat | xclip -selection clipboard
# Kill process by port / Убить процесс по порту
lsof -ti:$(seq 1 65535 | fzf) | xargs -r kill -9
💡 Keybindings & Options / Клавиатурные сокращения и опции
Default Keybindings / Стандартные сочетания
| Key | Action / Действие |
|---|---|
Ctrl-J / Ctrl-K |
Move down/up / Вниз/вверх |
Ctrl-N / Ctrl-P |
Move down/up / Вниз/вверх |
Enter |
Select / Выбрать |
Ctrl-C / Esc |
Cancel / Отменить |
Ctrl-Space |
Toggle selection (multi-select) / Переключить выбор |
Ctrl-/ |
Toggle preview / Переключить предпросмотр |
Custom Keybindings / Пользовательские сочетания
fzf --bind 'ctrl-a:select-all,ctrl-d:deselect-all' # Select all/none / Выбрать все/ничего
fzf --bind 'ctrl-y:execute-silent(echo {} | xclip)' # Copy to clipboard / Копировать в буфер
fzf --bind 'ctrl-e:execute($EDITOR {})' # Edit file / Редактировать файл
fzf --bind 'ctrl-r:reload(fd -t f)' # Reload results / Перезагрузить результаты
🎨 Color Schemes / Цветовые схемы
fzf --color=fg:#f8f8f2,bg:#282a36,hl:#bd93f9 # Dracula theme / Тема Dracula
fzf --color=dark # Dark theme / Тёмная тема
fzf --color=light # Light theme / Светлая тема
fzf --color=16 # 16-color scheme / 16-цветная схема
🔍 Search Modes / Режимы поиска
fzf --exact # Exact match / Точное совпадение
fzf -e # Short exact flag / Короткий флаг точного совпадения
fzf -i # Case-insensitive / Без учёта регистра
fzf +i # Case-sensitive / С учётом регистра
fzf --nth 2,3 # Search only fields 2,3 / Искать только в полях 2,3
fzf --with-nth 2.. # Display from field 2 / Показывать с поля 2
🚀 Performance / Производительность
fzf --algo=v2 # Use v2 algorithm / Использовать алгоритм v2
fzf --no-sort # Don't sort results / Не сортировать результаты
fzf --tiebreak=index # Tiebreaker strategy / Стратегия равенства