Table of Contents
🔍 fzf: кратко и по делу#
fzf — интерактивный инструмент для поиска и фильтрации данных в реальном времени.
Ищет файлы, строки, процессы, команды, интегрируется с git, ranger, ripgrep, fd, tmux и автодополнением shell.
📝 Топ‑20 ключевых флагов и приёмов fzf#
fzf— поиск по списку файлов (stdin или текущая директория).fzf < file.txt— искать в переданном списке.find . | fzf— интерактивный поиск файлов.fzf --preview 'cat {}'— превью содержимого файлов.fzf --height 40%— уменьшить окно поиска.fzf --reverse— панель поиска внизу.fzf --multi— множественный выбор.fzf --bind "tab:toggle+down"— переключение выбора клавишей Tab.fzf --bind "ctrl-a:select-all"— выделить всё.fzf --bind "ctrl-d:deselect-all"— снять выделение.fzf --preview 'bat --style=numbers --color=always {}'— красивое превью кода.fzf --ansi— поддержка цветного вывода.fzf --query "keyword"— сразу искать по запросу.fzf --exact— поиск по точному совпадению.fzf --tiebreak=end— сортировать совпадения по порядку.fzf --cycle— циклическая навигация по результатам.fzf --layout=reverse-list— вывод совпадений сверху вниз.fzf --delimiter=: --nth=2— искать только по второму полю.fzf --border— добавить рамку.fzf --help— помощь.
⌨️ Горячие клавиши fzf#
Tab— выделить / снять выделение.Shift+Tab— инвертировать выбор.Enter— выбрать результат.Ctrl-a— выбрать всё.Ctrl-d— снять всё.Ctrl-r— поиск по истории команд.Ctrl-t— вставить путь к выбранному файлу в команду.Ctrl-o— открыть результат в редакторе.Ctrl-y— скопировать результат в буфер обмена.Esc— выйти.
🚀 Айсберг команд fzf — от базового к гуру#
🟢 Уровень 1 — База (разогрев)#
fzf
- Поиск файлов в текущей директории
find . | fzf
- Поиск по результатам
find
cat list.txt | fzf
- Поиск по списку из файла
history | fzf
- Поиск по истории команд
ps aux | fzf
- Поиск процессов
🟡 Уровень 2 — Множественный выбор и превью#
fzf --multi
- Выбрать несколько файлов
fzf --preview 'cat {}'
- Показывать содержимое выбранного файла
fzf --preview 'head -n 20 {}'
- Показывать первые 20 строк
fzf --preview 'ls -lh {}'
- Предпросмотр метаданных
fzf --ansi
- Поддержка цветного вывода
🟠 Уровень 3 — Интеграция с ripgrep и grep#
rg --files | fzf
- Быстрый поиск файлов с
ripgrep
rg --line-number "error" | fzf --delimiter : --nth 3..
- Найти ошибки в коде
grep -R "TODO" * | fzf
- Искать TODO в проекте
grep -R "main()" src | fzf --preview 'bat --style=plain {}'
- Подсветка совпадений в превью
fzf --query "main"
- Сразу открыть поиск по слову “main”
🔵 Уровень 4 — Интеграция с git#
git ls-files | fzf
- Быстрый поиск файлов в репозитории
git log --oneline | fzf
- Поиск по истории коммитов
git branch | fzf
- Выбор ветки
git stash list | fzf
- Поиск по stash
git diff --name-only | fzf --multi | xargs git add
- Добавить выбранные файлы в коммит
🟣 Уровень 5 — Поиск по истории и автодополнение#
CTRL+r
- История команд bash/zsh
export FZF_DEFAULT_COMMAND='fd --type f'
- Использовать
fdвместоfind
export FZF_DEFAULT_OPTS="--height 40% --reverse --border"
- Глобальные настройки
bind '"\C-t": "$(fzf)"\n'
- Автодополнение файлов
export FZF_CTRL_T_COMMAND="rg --files"
- Более быстрый поиск
🔴 Уровень 6 — Гуру‑режим и макросы#
fzf --bind "ctrl-a:select-all,ctrl-d:deselect-all"
- Полный контроль выбора
fzf --bind "change:reload(fd .)"
- Динамическая перезагрузка списка
fzf --delimiter=: --nth=2 --preview 'awk -F: "{print $2}" {}'
- Поиск по полям CSV
find . -type f | fzf --multi --preview 'head -n 10 {}'
- Быстрое превью нескольких файлов
fzf --exact --tiebreak=end
- Строгий поиск
🟤 Уровень 7 — Автоматизация и сценарии#
fzf --multi --preview 'bat --style=plain --color=always {}' | xargs -o vim
- Открыть выбранные файлы в Vim
journalctl -xe | fzf
- Быстрый просмотр логов
ssh $(cat ~/.ssh/known_hosts | cut -d, -f1 | fzf)
- Подключение к серверу через fzf
history | fzf | xargs -I {} echo "Выполню команду: {}"
- Подбор и запуск команды
find . | fzf --multi | xargs rm -i
- Удаление выбранных файлов
🧩 Бонус — практические сценарии#
Выбор файла в текущей директории:
fzf
Поиск коммитов в git:
git log --oneline | fzf
Интеграция с ranger:
:map <C-f> fzf_select
Множественный выбор файлов и передача в Vim:
fzf --multi | xargs vim
Поиск процессов и завершение выбранного:
ps aux | fzf | awk '{print $2}' | xargs kill -9