yazi 实战:用 Rust 打造的终端文件管理器

如果你常年泡在终端里,一定经历过这样的尴尬:想找一个文件,却不得不在 cd 和 ls 之间反复横跳;或者只是想预览一张图片、改个文件名,就不得不切回图形界面。yazi 就是为解决这个问题而生的——它是一款用 Rust 编写的终端文件管理器(Terminal File Manager),以异步 I/O 和零延迟预览为核心卖点。它启动快、内存占用低,还能直接在内置预览窗格里看图片、看 PDF、看代码高亮。本文将带你从安装、快捷键到进阶配置,把 yazi 真正用成日常生产力工具。

一、为什么要在终端里管文件

命令行用户的常态是:用 ls 看目录、用 cd 进目录、用 cat 瞄一眼内容,遇到图片或 PDF 就只能退出终端。这种上下文切换看似只花两秒,一天几十次下来就是实打实的时间与注意力损耗。更糟的是,传统 Python 写的文件管理器(比如 ranger)在目录文件很多时会明显卡顿,因为它默认是同步遍历。

yazi 的破局点是异步:它用 Rust 的异步运行时在后台并发读取缩略图、并发收集文件元数据,主线程始终不阻塞,所以即使目录里有上万张照片,光标移动也跟手。再加上基于 Lua 的现代插件系统和纯 TOML 的配置,它既快又好看,特别适合已经习惯了终端工作流、又想要一点「图形化体验」的开发者。更重要的是,它把「预览」做到了文件管理器的一等公民:图片、视频帧、PDF 首页、代码语法高亮都能在右侧窗格即时呈现,你不必再为了确认一个文件的内容而反复打开关闭。这种「所见即所得」的浏览方式,对经常翻日志、查截图、比对配置的人来说,体验提升是断崖式的。

二、安装 yazi

yazi 跨平台,主流包管理器都能装。建议顺手把几个「增强依赖」也装上,否则图片/视频预览会失效。

# macOS(Homebrew)
brew install yazi
# 增强依赖:图片/视频缩略图、解压、代码高亮
brew install ffmpegthumbnailer sevenzip unar jq

# Arch Linux
yay -S yazi

# Debian / Ubuntu(发行版版本偏旧,推荐用 cargo 装最新)
cargo install --locked yazi-fm yazi-cli

# Windows(scoop)
scoop install yazi

装完后直接在终端输入 yazi 即可启动。若提示命令找不到,记得把 Cargo 的 ~/.cargo/bin 加进 PATH。

三、核心操作与快捷键

yazi 默认采用类 Vim 的方向键布局,上手成本极低。下面这张表覆盖了 90% 的日常操作:

场景快捷键说明
上下移动j / k 或方向键在文件列表中移动光标
进入目录 / 打开文件l 或 Enter进目录,或调用 opener 打开文件
返回上级h 或 Backspace回到上一层目录
多选空格标记多个文件做批量操作
预览右方向 / P在右侧预览窗格查看内容
新建标签T多标签并行浏览不同目录
模糊搜索/在当前目录内即时过滤
跑命令冒号 :直接执行 shell 命令或插件

四、配置文件入门

yazi 的配置全部放在 ~/.config/yazi/ 目录下,核心是三个 TOML 文件,彼此职责清晰、互不干扰:

  • yazi.toml:全局行为与 opener(打开方式)定义;
  • keymap.toml:快捷键映射;
  • theme.toml:配色与界面主题。

4.1 基础配置(yazi.toml)

# ~/.config/yazi/yazi.toml
[manager]
show_hidden = true          # 显示隐藏文件( dotfiles )
[cwd]
show_hidden = true
[tabs]
max = 10                    # 最多同时打开的标签数
[plugin]
disabled = ["example"]      # 关闭示例插件,加快启动

4.2 自定义快捷键(keymap.toml)

把高频动作绑到自己顺手的位置,是 yazi 最爽的地方。下面把「用默认编辑器打开」绑到 e 键:

# ~/.config/yazi/keymap.toml
[[manager.keymap]]
on = ["e"]
run = "open"
desc = "用默认 opener 打开文件"

4.3 主题(theme.toml)

# ~/.config/yazi/theme.toml
[manager]
cwd = { fg = "blue" }       # 当前目录路径颜色
[hinter]
fg = "yellow"

五、与其他终端工具集成

5.1 与编辑器联动

在 yazi 里选中文件后一键丢给编辑器,是「不碰鼠标」闭环的关键。比如把当前文件用 VS Code 打开:

# ~/.config/yazi/keymap.toml
[[manager.keymap]]
on = ["v"]
run = "shell --confirm 'code \"$0\"'"
desc = "用 VS Code 打开选中文件"

如果你还没配好顺手的编辑器环境,推荐先看看我们整理的 VS Code 插件 清单,挑几个能提升文件操作效率的装上。

5.2 在 Git 工作流中嵌合

yazi 可以在任意目录启动,配合 lazygit 这种终端 Git 可视化工具,形成「文件浏览 → 暂存 → 提交」的无鼠标闭环。同样用 Rust 打造的效率工具还有 zoxide 智能 cd 和 fnm Node 版本管理器,再叠加 direnv 做目录级环境变量管理,整套现代终端工具链能显著减少鼠标依赖。

六、yazi 与 ranger / nnn / fzf 怎么选

工具语言核心优势适合人群
yaziRust异步预览、极快、现代 TOML 配置追求速度与颜值的终端党
rangerPython插件生态成熟、资料多老用户 / 重度插件需求
nnnC极致轻量、内存占用极低低配机器 / 远程服务器
fzfGo模糊查找极强,但非完整文件管理器只想快速定位文件

简单说:想要「完整文件管理器 + 好看预览」选 yazi;只想在管道里快速跳转到文件用 fzf;服务器内存吃紧用 nnn。三者并不互斥,很多人的真实组合是「yazi 日常 + fzf 在 shell 里补位」。

七、进阶玩法:插件与任务

yazi 的扩展能力来自 Lua 插件。社区里常用的几个:extract(在管理器内直接解压)、gitstatus(给文件打 Git 状态角标)、media-preview(更丰富的媒体预览)。启用方式就是在 ~/.config/yazi/ 下建 plugins/ 目录放插件,或用官方插件管理器。

# 在 yazi 内按「:」进入命令模式
:plugin extract      # 解压选中文件
:plugin gitstatus    # 显示 Git 状态角标

除了插件,yazi 的「任务(tasks)」机制也值得一用:复制、移动、删除大目录时会后台排队执行,并实时显示进度,不会卡住界面。一个真实的工作流是:在 yazi 里用 / 模糊定位到目标目录,空格多选当天要处理的文件,按 : 调起 extract 解压,再切到 lazygit 标签做提交——全程手不离开键盘。当你把 opener、keymap 和插件调到顺手,yazi 就不再只是「看文件的」,而是变成了一个轻量的工作枢纽。如果你在 Docker Compose 容器里跑工具链,也能把 yazi 装进开发镜像,保证本地和云端环境一致。

八、常见坑与排障

现象可能原因解决办法
预览窗格空白缺少预览依赖装 ffmpegthumbnailer / ueberzugpp
图片预览乱码/不显示终端不支持 Kitty 图形协议换 WezTerm / Kitty 等支持六维协议的终端
启动偏慢插件过多在 yazi.toml 禁用不用的插件
中文/图标乱码字体缺字形换成包含字形的 Nerd Font
按 v 打不开编辑器未配置 opener在 yazi.toml 配 opener,或用 keymap 绑定 shell

性能方面,yazi 本身非常轻,卡顿几乎都来自预览依赖缺失或终端协议不匹配。优先把「终端换成支持 Kitty 图形协议」+「装齐预览依赖」这两步做对,体验会立刻质变。

结语

yazi 把「在终端里看文件」这件事做到了极致:异步让它快,TOML 配置让它好改,Lua 插件让它能长。配合 zoxide、fnm、direnv、lazygit 这套现代工具链,你能把鼠标依赖降到最低。建议先装起来、打开 show_hidden,再慢慢调 keymap——一周左右就能形成肌肉记忆,到时候回看 cd + ls 的自己,大概会觉得有点原始了。

上一篇 FlashAttention 2 原理与 PyTorch 实战
最新评论
Docker 网络模式详解:bridge/host 生产选型 - FSData
Docker 网络模式详解:bridge/host 生产选型 - FSData
8月20日
[…] 注意最后那条:把端口绑定到 127.0.0.1,再由宿主机上的 Nginx 反代进来,比直接 -p 80:80 暴露安全得多,也方便统一做
Vue3 + TypeScript 工程化:类型安全的前端架构 - FSData
Vue3 + TypeScript 工程化:类型安全的前端架构 - FSData
8月20日
[…] Pinia 的工程化用法,可以参考我们之前的实战文章 《Vue3 组合式 API + Pinia:状态管理从入门到实战》,那里覆盖了 Sto
2026 年最值得装的 10 个 VS Code 插件(AI/前端/后端/效率全覆盖) - FSData
2026 年最值得装的 10 个 VS Code 插件(AI/前端/后端/效率全覆盖) - FSData
8月19日
[…] 状态,点一下就能起停容器,配合我们讲过的 Docker Compose 编排 […]
Redis 缓存设计:穿透、击穿、雪崩与最佳实践 - FSData
Redis 缓存设计:穿透、击穿、雪崩与最佳实践 - FSData
8月19日
[…] 缓存三大坑的本质都是”缓存失效导致请求穿透到数据库”。记住口诀:穿透用布隆、击穿用锁、雪崩用错峰。配合合理的过期策略
GitHub Actions 实战:从零搭建 CI/CD 流水线 - FSData
GitHub Actions 实战:从零搭建 CI/CD 流水线 - FSData
8月19日
[…] Docker 镜像部署。结合我们之前写的 Docker Compose 一键编排实战,可以在 CI […]