fzf: Нечёткий поиск в терминале, который изменит ваш workflow

Устали листать историю команд или использовать grep и find для поиска файлов? fzf — интерактивный фильтр командной строки, который позволяет быстро находить файлы, команды из истории, процессы и даже коммиты Git с нечётким совпадением.

Установка

fzf доступен в большинстве репозиториев и можно установить несколькими способами:

  • Ubuntu/Debian
sudo apt install fzf
  • macOS
brew install fzf
  • Установка через скрипт (добавит хуки в оболочку)
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install

Преимущества

  • Скорость: мгновенный поиск даже в сотнях тысяч строк.
  • Универсальность: работает с любым списком через пайп.
  • Интеграция: готовые биндинги для Bash, Zsh, Fish.
  • Предпросмотр: можно сразу просматривать содержимое файлов.

Недостатки

  • Добавляет ещё одну зависимость в систему.
  • Необходимость привыкания к новым сочетаниям клавиш.

Киллер‑фичи

  1. Поиск в истории команд (замена Ctrl+R)
  2. Нажмите Ctrl+R и начните вводить часть команды. fzf покажет все подходящие варианты из истории, которые можно выбрать стрелками и нажатием Enter.

  3. Быстрый поиск и открытие файлов
  4. Найдите файл, просмотрите его в превью и откройте в выбранном редакторе:

    vim $(fzf --preview 'bat --color=always {}')

    Если нужно ограничить поиск только файлами и директориями:

    fzf --type f --type d
  5. Убийство процесса по имени
  6. Выберите процесс из списка и автоматически завершите его:

    kill -9 $(ps aux | fzf | awk '{print $2}')
  7. Поиск по коммитам Git
  8. Просмотрите лог и выберите коммит для подробного просмотра:

    git log --oneline | fzf --preview 'git show --color=always {1}'

Пример рабочего дня с fzf

  1. Найти и открыть конфиг nginx:
  2. sudo vim $(find /etc/nginx -type f | fzf)
  3. Найти старую длинную команду для сборки проекта (Ctrl+R + «docker build»).
  4. Подключиться к существующей tmux‑сессии:
  5. tmux attach -t $(tmux list-sessions | fzf | cut -d: -f1)

Ссылка на GitHub репозиторий.

Теперь grep и find выглядят как каменный век. Особенно, когда за 2 секунды находите файл, название которого только смутно помните.

Вы уже используете fzf? Или предпочитаете другие инструменты для быстрого поиска? Поделитесь в комментариях и ставьте лайки, если статья полезна.