Back to articles

Telescope vs fzf-lua for Neovim

Computer TechDevelopmentEditorsNeovimTelescope vs fzf-lua for Neovim
Updated 4/23/2026

Telescope vs fzf-lua for Neovim

The confusion: Neovim has multiple fuzzy finder plugins. Here's the complete breakdown.

TL;DR Decision Matrix

Use CaseRecommendationWhy
New to NeovimTelescopeBuilt-in to LazyVim, feature-rich, batteries-included
Existing fzf userfzf-luaLeverage existing fzf knowledge, faster, lighter
Want bothUse Telescope, add fzf-lua laterNot mutually exclusive!

The Three Options

1. Telescope (nvim-telescope/telescope.nvim)

What it is: Pure Lua fuzzy finder built specifically for Neovim

Pros:

  • Default in LazyVim (you already have this!)
  • ✅ Pure Lua (no external dependencies)
  • ✅ Extremely feature-rich (LSP integration, live grep, git integration)
  • ✅ Highly extensible (huge ecosystem of extensions)
  • ✅ Beautiful UI with customizable themes
  • ✅ Built-in file preview

Cons:

  • ❌ Slightly slower than fzf (pure Lua vs native)
  • ❌ Heavier (more features = more complexity)
  • ❌ Different keybindings/UX than CLI fzf

Common use:

lua
-- Already in LazyVim
:Telescope find_files
:Telescope live_grep
:Telescope buffers

2. fzf-lua (ibhagwan/fzf-lua)

What it is: Neovim plugin that wraps the CLI fzf tool you already use

Pros:

  • Fast (uses native fzf binary)
  • ✅ Lighter/simpler than Telescope
  • ✅ Consistent UX with CLI fzf (same keybindings!)
  • ✅ Can use existing FZF_DEFAULT_OPTS
  • ✅ Less resource-intensive

Cons:

  • ❌ Requires fzf to be installed (you already have it!)
  • ❌ Smaller ecosystem than Telescope
  • ❌ Not included in LazyVim by default

Common use:

lua
:FzfLua files
:FzfLua live_grep
:FzfLua buffers

3. fzf.vim (junegunn/fzf.vim)

What it is: Original Vim/Neovim fzf plugin (Vimscript-based)

Status: Being replaced by fzf-lua for Neovim users

When to use: If you're still using Vim (not Neovim), use this

The Real Question: Why the Confusion?

You have Telescope already (it's in LazyVim by default). The question is:

Should you ADD fzf-lua or stick with Telescope?

Argument for Sticking with Telescope

  • ✅ Already configured and working
  • ✅ More features out-of-the-box
  • ✅ LazyVim has sensible defaults set up
  • ✅ One less thing to configure/maintain

Argument for Adding fzf-lua

  • ✅ Consistent workflow with your shell (same rfv mindset)
  • ✅ Faster performance
  • ✅ Lighter weight
  • ✅ Can keep Telescope for some features (not mutually exclusive!)

Side-by-Side Comparison

FeatureTelescopefzf-lua
SpeedFastFaster (native fzf)
File search
Live grep
LSP symbols
Git integration✅ Excellent✅ Good
Preview
DependenciesNone (pure Lua)Requires fzf binary
ExtensibilityHuge ecosystemSmaller ecosystem
UI customizationExtensiveGood
LazyVim default✅ Yes❌ No
Learning curveMediumLow (if you know fzf)

What You Have Now (LazyVim)

Check your current Telescope setup:

bash
nvim ~/.config/nvim/lua/plugins/telescope.lua

Default LazyVim keybindings:

  • <leader>ff - Find files
  • <leader>fg - Live grep
  • <leader>fb - Buffers
  • <leader>fh - Help tags
  • <leader>fr - Recent files
  • <leader>gc - Git commits

Should You Switch to fzf-lua?

Recommendation: Start with Telescope, consider fzf-lua later

Why:

  1. Telescope is already working
  2. LazyVim has excellent Telescope integration
  3. You can always add fzf-lua for specific tasks

When to add fzf-lua:

  • You want consistency with shell fzf workflow
  • You find Telescope too slow/heavy
  • You want to use same preview settings as rfv

How to Add fzf-lua to LazyVim (Optional)

If you decide you want fzf-lua:

lua
-- ~/.config/nvim/lua/plugins/fzf-lua.lua
return {
  "ibhagwan/fzf-lua",
  dependencies = { "nvim-tree/nvim-web-devicons" },
  config = function()
    require("fzf-lua").setup({
      winopts = {
        height = 0.85,
        width = 0.80,
        preview = {
          layout = 'horizontal',
          horizontal = 'right:60%'
        }
      }
    })
  end,
  keys = {
    { "<leader>pf", "<cmd>FzfLua files<cr>", desc = "Find Files (fzf-lua)" },
    { "<leader>pg", "<cmd>FzfLua live_grep<cr>", desc = "Live Grep (fzf-lua)" },
    { "<leader>pb", "<cmd>FzfLua buffers<cr>", desc = "Buffers (fzf-lua)" },
  },
}

This adds fzf-lua alongside Telescope (not replacing it!):

  • <leader>pf/pg/pb for fzf-lua
  • <leader>ff/fg/fb for Telescope (still works!)

My Recommendation for You

Use Telescope for now. Here's why:

  1. ✅ It's already configured in LazyVim
  2. ✅ It's excellent and you don't need to change anything
  3. ✅ The performance difference is negligible for your use case
  4. ✅ One less thing to configure/maintain

Later, if you want:

  • Add fzf-lua for specific workflows where you want shell-fzf consistency
  • Keep Telescope for LSP/Git features where it excels
  • Use both! They complement each other

The Bigger Picture: Terminal vs Editor Fuzzy Finding

You now have TWO workflows:

1. Terminal (Shell) Workflow:

bash
fzf              # Browse files
rfv TODO         # Interactive code search

2. Editor (Neovim) Workflow:

vim
:Telescope find_files
:Telescope live_grep

These are SEPARATE and that's OK!

  • Terminal: When you're exploring, not in an editor yet
  • Neovim: When you're already editing, want editor integration

Common Misconception

"I use fzf in my terminal, so I MUST use fzf-lua in Neovim"

Reality: Telescope and terminal fzf can coexist happily!

They solve different problems:

  • Terminal fzf: Before you open editor
  • Telescope: Inside editor with LSP/Git integration

Summary

What you should do RIGHT NOW:

  1. ✅ Keep using Telescope (it's already working!)
  2. ✅ Learn Telescope keybindings in LazyVim
  3. ✅ Use rfv in terminal for code search
  4. ⏸️ Don't worry about fzf-lua unless you have a specific need

When to revisit this decision:

  • You find Telescope too slow (unlikely)
  • You want identical UX between terminal and Neovim
  • You're comfortable with Neovim and want to optimize

Official Documentation