三个开源终端工具分别对应写代码时的三个环节:Yazi 用来浏览和预览文件,fzf 用来从一长串候选里挑出一项,Lazygit 用来检查和暂存 Git 改动。本文只根据各项目官方文档里写明的行为,说明怎么把它们串成一个循环。核对的版本:fzf 0.74.5、Lazygit 0.66.2、Yazi 26.9.1。Boloop 没有为本文安装或运行这些工具,请以你实际安装版本的文档为准。

三个工具各做什么、不做什么

  • fzf 从标准输入读取候选行,把选中的那一行写到标准输出。没有管道输入时,用内置的文件遍历生成候选列表。它筛选的是名称,不会搜索每个文件的内容。
  • Yazi 是用 Rust 写的终端文件管理器,支持文件预览、多标签、跨目录选择、搜索集成和批量重命名。文件类型识别需要 file,其他预览要看可选工具。
  • Lazygit 是 Git 的终端界面,能看 diff,也能只暂存某个 hunk 或某几行。它会执行真正改变仓库状态的 Git 操作,先在可以恢复的仓库里练手。

第 1 步:配置 fzf 的 shell 集成

fzf 的 README 给每种 shell 一行配置:

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

配置后有三个快捷键:CTRL-T 把选中的文件和目录粘到命令行,CTRL-R 从历史命令里挑一条粘到命令行,ALT-C 进入选中的目录。先试最基本的选择(ls | fzf,回车选中、Esc 取消),再考虑自定义触发符。Boloop 的 fzf 页面记录了一条关于 Bash 自定义补全触发符的未关闭反馈。

第 2 步:用 Yazi 打开项目,退出时留在该目录

输入 yazi 启动,按 q 退出,按 F1 或 ~ 打开帮助。Yazi 快速上手文档建议加一个 y shell 包装函数:退出 Yazi 时,shell 会切到你刚才浏览的目录。请从官方快速上手页面复制对应 shell 的版本,不要手打。

在 Yazi 里,默认键位把 z 绑定为“通过 fzf 跳到文件或目录”,Z 绑定为“通过 zoxide 跳到目录”。z 需要 fzf 0.53.0 或更新版本,zoxide 也依赖 fzf。前两个工具就在这里接上。

预览依赖额外工具:JSON 用 jq,PDF 用 poppler,视频缩略图用 ffmpeg,找文件用 fd,搜内容用 rg。图片预览取决于终端协议(Kitty、iTerm2、Sixel 或降级方案),请对照官方兼容表检查你用的终端。

第 3 步:用 Lazygit 检查并暂存

用包装函数退出 Yazi 后,shell 已经在项目目录里。运行 lazygit,README 里写的步骤是:

  1. 在改动的文件上按 0,聚焦它的 diff。
  2. 按空格暂存当前 hunk,并跳到下一个。
  3. 按 a 逐行选择,按 v 选一段范围。
  4. 按 Tab 切到已暂存面板,在那里按空格取消暂存。
  5. 按 c 直接提交,不用离开 diff。

提交前看一眼已暂存面板。干净的暂存 diff 只说明改了什么,不能证明改动能用。可以配合我们的 AI 生成代码验收清单一起用。

完整循环

  1. y 打开 Yazi,预览文件,按 z 用 fzf 跳转。
  2. q 退出,shell 停在该目录。
  3. 自己改代码,或让编码 agent 改。
  4. lazygit 检查,只暂存该进这次提交的部分,然后提交。
  5. CTRL-R 找回上次跑过的测试或构建命令。

我们的判断:这个顺序适合有 agent 参与的开发,因为 agent 可能一次改很多文件,Lazygit 的按 hunk 暂存方便把它们拆成小提交。这是观点,不是测评结果。

常见问题

三个工具必须一起装吗?

不用,每个都能单独用。Yazi 的 z 跳转需要 fzf(0.53.0 或更新);Lazygit 不依赖另外两个。

fzf 会搜索文件内容吗?

不会。fzf 只筛选它收到的行。要搜内容,Yazi 文档把 rg(ripgrep)列为可选工具。

Yazi 为什么不显示图片预览?

图片预览取决于终端协议,有些终端还有最低版本要求,终端复用器也会影响结果。请按 Yazi 的图片预览指南检查你的环境。

能直接在正式仓库里试 Lazygit 吗?

它执行的是真实的 Git 操作。先在练习仓库或可恢复的副本里试,并查看你所装版本的快捷键说明。

本文对应哪些版本?

fzf 0.74.5、Lazygit 0.66.2、Yazi 26.9.1,核对时间为 2026 年 10 月下旬到 11 月初。快捷键可能随版本变化。

来源

  • fzf README:https://github.com/junegunn/fzf
  • Lazygit README:https://github.com/jesseduffield/lazygit
  • Yazi 安装:https://yazi-rs.github.io/docs/installation
  • Yazi 快速上手:https://yazi-rs.github.io/docs/quick-start
  • Yazi 默认键位:https://github.com/sxyazi/yazi/blob/main/yazi-config/preset/keymap-default.toml