Zooming out on the fzf ecosystem: alternative fuzzy finders and tools that occupy the same niche, and a final reflection that collects this whole series into a clear mental model.

For 21 episodes you've built fzf skill — from the first pre-requisites to a production-ready setup. This final episode zooms out. Episode 22 is the alternative ecosystems & final reflections chapter: first, where fzf sits among the alternatives — the other fuzzy finders and tools that fill the same niche; then, a reflection that collects the whole series into one clear mental model.
This isn't a "switch to X" chapter. It's an orientation chapter: knowing the landscape makes you a better user of your own tool — because you understand what fzf chooses to be, and what it chooses not to be.
fzf is not the only fuzzy finder in the terminal ecosystem. Four names keep coming up in the same conversations:
| Tool | The core idea | Positioning |
|---|---|---|
| fzf | Fuzzy filter + preview + actions + HTTP API | The most complete: filters and executes |
| fzy | A very fast fuzzy matcher algorithm | The engine, not the tool |
| skim | A Rust rewrite in the fzf spirit | Same niche, faster in some workloads |
| fzf-lua / Telescope | Fuzzy finder inside Neovim | The editor-native front-end |
The first distinction to make: an engine versus a tool. fzy is the algorithm (the same one fzf's old v1 algorithm is built on); fzf is a complete interface that filters, previews, and executes. Comparing them directly is comparing a gearbox to a car. The second distinction: the terminal tool versus the editor front-end — fzf runs in your terminal and talks to processes; fzf-lua and Telescope live inside Neovim and talk to buffers and the LSP.
Tip
Don't play "which one is best" — play "which role does each fill". fzf is your terminal glue; Telescope-like finders are your editor glue. They're not rivals; they're different layers of the same stack, and understanding that means choosing the right tool per job instead of picking one to defend.
Looking at the alternatives clarifies fzf's own design choices. Three contrasts are worth naming:
1. Speed versus features. skim is written in Rust and is notably fast on enormous lists. fzf counters with a different strategy: smarter integration — actions, previews, the HTTP API, shell integration — rather than raw speed alone. The result: fzf is often fast enough while being far more capable.
2. Language versus integration. A Rust rewrite and a Lua plugin show the ecosystem's language diversity — but the value isn't the language, it's the integration depth. fzf's value is that it glues processes together, from ps to git to an LSP, without needing a particular editor or runtime.
3. Terminal versus editor. Some finders live entirely in an editor (Telescope); some live entirely in the terminal (fzf). The ecosystem's lesson: the filtering idea is universal — the shell of the tool is a choice, not a doctrine.
Every episode in this series built toward one coherent picture. Let's assemble it explicitly:
The universal fzf loop — source, filter, preview, select, act — appears in every episode:
accept, execute, become, reload — the moment a choice becomes an action.Whatever fzf's surface details — --bind, --preview, --listen, --track — they're all one motion repeated: take a list, filter it, pick, and act.
If this series had to be compressed into four sentences, they would be:
rg/fd), skip unneeded sorting, lighten the preview. fzf's modern engine is fast — your job is to stay out of its way. (episodes 11, 17){}, --listen exposure — trusting a list means verifying it first. (episode 14)Important
One closing caution to carry forward: a tool learned in a vacuum is a tool half-understood. The real fluency comes from using fzf where it actually lives — inside your shell, your editor, your scripts — and returning to this series' concepts (the loop, the quoting, the reload) when you meet an unfamiliar screen. Skill is a habit of returning to first principles, not a memorized set of commands.
The series ends — the practice doesn't. A short roadmap of what to do next, in order:
git add with reload from episode 15) and write it again without looking.--listen. Build one automation where another process controls fzf (episode 16) — it's the most underused power.fzf --version you see.Note
And remember the very first episode's promise: fzf is not a trick — it's a way of thinking. Every new terminal screen you meet is now an opportunity to apply the loop: source, filter, preview, select, act. That's the skill this series was really about.
In this final episode 22 you zoomed out: mapping the fuzzy-finder landscape (fzy as the engine, skim as the Rust rewrite, Telescope-like finders as the editor front-end), seeing what alternatives reveal about fzf's own design choices, assembling the whole series into one mental model — the universal loop of source, filter, preview, select, act — and collecting the big lessons: fzf as glue, speed from boundaries, security as a workflow, and testing before trusting.
The message to take home from the entire series: fzf is a tool you grow with. The more it's woven into your shell, your editor, and your scripts, the more it stops being a feature and becomes a way of working.
We started with a question: what can you do with a list that filters itself? Twenty-one episodes later, the answer is clear — nearly everything. Keep building, keep testing, and keep the loop in your muscle memory. That's the end of this series — but it's the start of your own fzf practice. See you in the terminal.