← Back to articles

Telescope vs fzf-lua for Neovim

Path: Computer Tech/Development/Editors/Neovim/Telescope vs fzf-lua for Neovim.mdUpdated: 2/3/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

Related Articles

Links

Official Documentation