Как перестать ждать и полюбить поиск файлов в Neovim с помощью FFF

18 фев 2026
10,946
462
24
2 дня

Знакомая ситуация: вы работаете в огромном монорепозитории, нажимаете привычную комбинацию для поиска файла, и... Neovim на мгновение задумывается. Или, что еще хуже, вы допускаете опечатку в названии, и поисковик выдает «ничего не найдено», заставляя вас перепечатывать запрос. В мире, где скорость разработки решает всё, такие мелочи начинают раздражать.

Сегодня мы разберем проект, который обещает решить эти проблемы раз и навсегда. Знакомьтесь — FFF.nvim (Freakin Fast Fuzzy Finder). Это не просто очередной плагин для поиска, а инструмент с собственным «движком» на Rust, созданный специально для тех, кто ценит миллисекунды своего времени.

Stars Issues Contributors

Почему стандартных средств уже мало?

Большинство из нас привыкло к Telescope или fzf.lua. Это отличные инструменты, но у них есть архитектурные особенности. Например, Telescope написан на Lua, и при очень больших объемах данных (десятки и сотни тысяч файлов) он может подтормаживать.

Автор FFF.nvim пошел другим путем. Вместо того чтобы нагружать процесс Neovim тяжелыми вычислениями, он вынес индексацию и поиск в отдельный бэкенд на Rust. Результат впечатляет: поиск по кодовой базе в 50 000 файлов занимает менее 10 миллисекунд. Это буквально быстрее, чем вы успеете моргнуть.

Реклама

Что делает FFF по-настоящему «умным»?

1. Устойчивость к опечаткам

Это, пожалуй, моя любимая фича. Мы все люди, и пальцы иногда не попадают по нужным клавишам. FFF использует алгоритм frizbee, который понимает, что вы имели в виду main.rs, даже если написали mian.rs. Больше не нужно судорожно стирать и переписывать запрос.

2. Кросс-режимные подсказки

Представьте: вы ищете файл по названию, но такого файла нет. Обычный плагин просто покажет пустое окно. FFF в этот момент не сдается — он автоматически «пробежится» по содержимому файлов (grep) и предложит результаты оттуда. И наоборот: если вы искали текст и ничего не нашли, плагин предложит файлы с похожими названиями. Это экономит кучу времени и нервов.

3. Глубокая интеграция с Git

Плагин не просто игнорирует файлы из .gitignore. Он подсвечивает статус файлов прямо в списке поиска: измененные, новые, удаленные или стадированные. Вы сразу видите, над какими файлами работали недавно. Более того, FFF учитывает время последнего изменения в Git, чтобы поднимать наиболее актуальные для вас файлы выше в выдаче.

4. Мульти-выбор и Quickfix

Если вам нужно найти пять разных файлов и что-то в них поменять, вам не нужно открывать поиск пять раз. Выбираете нужные файлы через <Tab>, нажимаете <C-q>, и они мгновенно улетают в Quickfix-лист Neovim.

Под капотом: Rust и ленивая инициализация

FFF.nvim требует наличия Rust (nightly-версии) для сборки бинарного бэкенда. Кого-то это может отпугнуть, но поверьте, профит того стоит. Бэкенд работает в фоне, поддерживает актуальный индекс файлов и не блокирует основной поток редактора.

Интересно реализована ленивая загрузка: плагин практически не потребляет ресурсы, пока вы его не вызовете. А когда вызываете — он уже готов к работе благодаря эффективному кэшированию.

Как попробовать?

Установка через lazy.nvim выглядит стандартно, но с небольшим нюансом для сборки бинарника:

{
  'dmtrKovalenko/fff.nvim',
  build = function()
    require("fff.download").download_or_build_binary()
  end,
  lazy = false, -- Плагин сам управляет своей ленивостью
  keys = {
    { "ff", function() require('fff').find_files() end, desc = 'Найти файл' },
    { "fg", function() require('fff').live_grep() end, desc = 'Живой поиск по тексту' },
  },
  opts = {
    -- Ваши настройки здесь
  }
}

Практические кейсы: когда это спасает

  • Работа с легаси-кодом: Когда структура папок напоминает лабиринт, и вы помните только примерное название файла. Устойчивость к опечаткам и Frecenty (приоритет часто используемых файлов) делают поиск почти интуитивным.
  • Большие монорепозитории: Если ваш node_modules или папка с артефактами сборки весят гигабайты, FFF справится с индексацией без лагов.
  • Поиск по изображениям: Да, FFF умеет показывать превью картинок прямо в терминале (если ваш терминал это поддерживает, например, через snacks.nvim). Удобно для фронтенд-разработчиков.

Итог: стоит ли переходить?

FFF.nvim — это инструмент для тех, кто чувствует, что «перерос» стандартные решения. Если вам не хватает скорости, если вы часто ошибаетесь в названиях или просто хотите более умного поведения от своего редактора — это отличный кандидат на место в вашем init.lua.

Проект активно развивается, и автор открыт к фидбеку. Сейчас отличное время, чтобы вкатиться и, возможно, даже предложить свою фичу в этот «чертовски быстрый» поисковик.

А какой поисковик используете вы? Готовы ли вы доверить индексацию своих файлов Rust-бэкенду ради скорости? Пишите в комментариях!

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.