Three open-source terminal tools cover three different moments of a coding session: Yazi for browsing and previewing files, fzf for picking one item out of a long list, and Lazygit for reviewing and staging Git changes. This guide shows how they fit together in one loop, using only behavior documented by each project. Versions checked: fzf 0.74.5, Lazygit 0.66.2, Yazi 26.9.1. Boloop has not installed or run these tools for this article, so check the docs for the version you actually install.

What each tool does (and does not do)

  • fzf reads candidate lines from standard input and writes the selected line to standard output. Without piped input, its default file walker builds the list. It filters names; it does not search the contents of every file.
  • Yazi is a terminal file manager written in Rust, with file preview, multiple tabs, selection across directories, search integration and batch renaming. It needs file for type detection; other previews depend on optional tools.
  • Lazygit is a terminal UI for Git. It shows diffs and lets you stage single hunks or lines. It also runs state-changing Git operations, so practise in a repository you can recover.

Step 1: Set up fzf shell integration

fzf's README gives one line per shell:

# bash
eval "$(fzf --bash)"
# zsh
source <(fzf --zsh)
# fish
fzf --fish | source

That enables three key bindings: CTRL-T pastes selected files and directories onto the command line, CTRL-R pastes a command from your history, and ALT-C changes into the selected directory. Try plain selection first (ls | fzf, then Enter or Esc) before you add custom triggers. Boloop's fzf page notes an open report about a custom completion trigger in Bash.

Step 2: Open the project with Yazi and keep the directory

Start Yazi with yazi. Press q to quit and F1 or ~ for help. The Yazi quick start suggests a small y shell wrapper: when you quit, your shell moves to the directory you were browsing. Copy the wrapper for your shell from the official quick-start page rather than retyping it.

Inside Yazi, the default keymap binds z to "Jump to a file/directory via fzf" and Z to "Jump to a directory via zoxide". The z jump needs fzf 0.53.0 or newer; zoxide also requires fzf. This is where the first two tools meet.

Previews depend on extra tools: jq for JSON, poppler for PDF, ffmpeg for video thumbnails, fd for file search and rg for content search. Image preview depends on your terminal's protocol (Kitty, iTerm2, Sixel or a fallback), so check the official compatibility table for your terminal.

Step 3: Review and stage with Lazygit

After you quit Yazi with the wrapper, your shell is in the project folder. Run lazygit. The README describes this sequence:

  1. Press 0 on a changed file to focus its diff.
  2. Press Space to stage the selected hunk and move to the next one.
  3. Press a for line-by-line selection, v to select a range.
  4. Press Tab to switch to the staged pane; Space there unstages.
  5. Press c to commit without leaving the diff.

Check the staged pane before you commit. A clean staged diff shows what changed; it does not prove the change works. Pair it with our AI-generated code acceptance checklist.

The full loop

  1. y to open Yazi in the project, preview files, z to jump with fzf.
  2. q to quit; the shell is now in that folder.
  3. Edit, or let a coding agent edit.
  4. lazygit to inspect, stage only what belongs, and commit.
  5. CTRL-R to recall the test or build command you ran last time.

Our judgement: this order suits agent-assisted work, because the agent can touch many files and Lazygit's hunk staging makes it easy to split them into small commits. It is an opinion, not a benchmark.

FAQ

Do I need all three tools?

No. Each works alone. Yazi's z jump needs fzf (0.53.0 or newer); Lazygit has no dependency on the other two.

Does fzf search inside files?

No. fzf filters the lines it receives. For content search, Yazi's docs list rg (ripgrep) as an optional tool.

Why doesn't Yazi show image previews?

Image preview depends on the terminal protocol and, for some terminals, a minimum version. Multiplexers can change the result. Check Yazi's image preview guide for your setup.

Is Lazygit safe to try on a real repository?

It runs real Git operations. Start in a practice repository or a copy you can recover, and read the key bindings for your installed version.

Which versions does this guide describe?

fzf 0.74.5, Lazygit 0.66.2 and Yazi 26.9.1, as checked in late October and early November 2026. Key bindings can change between releases.

Sources

  • fzf README: https://github.com/junegunn/fzf
  • Lazygit README: https://github.com/jesseduffield/lazygit
  • Yazi installation: https://yazi-rs.github.io/docs/installation
  • Yazi quick start: https://yazi-rs.github.io/docs/quick-start
  • Yazi default keymap: https://github.com/sxyazi/yazi/blob/main/yazi-config/preset/keymap-default.toml