你在终端里折腾过文件管理吗?如果你还在用cd和ls来回翻目录,或者在 Windows 的 PowerShell 里靠dir硬撑,那我觉得你真的该试试 yazi。这是一个用 Rust 写的新一代终端文件管理器,主打同步预览、异步 I/O 和丰富的插件机制,简单说就是让你在纯文本界面里也能拥有接近图形文件管理器的操作体验。这玩意儿目前在 GitHub 上已经很火了,而且对 Windows 的支持也在快速完善,我在 Windows Terminal 里把它当作日常主力文件管理工具已经有很长一段时间,今天就把从安装、配置到实战的心得全部分享出来。
这篇文章适合所有受够了目录切换痛苦、想在终端里提升文件操作效率的人。无论你是刚接触终端的新手,还是已经用了一段时间 ranger 或 lf 的老手,yazi 上手成本都很低,而且你完全可以直接照抄我整理的配置方案,省掉很多弯路上的时间。
1. 内容整体设计与思路拆解
1.1 为什么选 yazi:终端文件管理的痛点与解法
终端文件管理这个需求其实一直存在,只是以前它的地位很尴尬。图形界面里我们用资源管理器或者 Finder,鼠标点几下就完成操作,效率看起来很直观。但一旦你开始重度使用终端,就会发现问题:靠cd、ls一层一层翻路径,频繁敲目录名实在太浪费时间了;想看看文件内容、图片预览、压缩包里装了什么,传统终端工具根本做不到;批量重命名、快速移动、在多个项目目录之间跳转,更是只能靠各种命令组合加 Shell 脚本硬凑。
yazi 解决的正是这些问题。它的全称是 "Yet Another Zsh-inspired file manager" 吗?不是,实际意义就是听起来干脆,作者用 Rust 写的,把"异步"这个理念贯彻到了极致。文件列表加载、图片预览、文件类型识别全都是后台异步处理的,所以即使目录里几千个文件,滚动起来也不卡。它内置了终端 UI、预览面板、文件搜索、批量选择、按目录跳转、自定义插件等一整套能力,让你能在不离开终端的情况下完成绝大多数文件操作。
我记得最早用 ranger 的时候,感觉已经很惊艳了,但 ranger 的问题是 Python 写的,启动速度有点慢,而且配置语法是 rc.conf 风格,写多了容易绕。lf 也不错,够轻量,但功能相对朴素。yazi 的出现相当于把这两个工具的弱点都补上了:Rust 启动飞快,配置用 TOML,逻辑清晰,插件甚至支持用 Lua 扩展,这对想来点自定义操作的玩家来说自由度足够大。
1.2 方案选型的核心逻辑:异步框架带来的体验质变
为什么同类的终端文件管理器不少,yazi 却能在短时间内火起来?我自己分析,核心就两个字:异步。传统文件管理器在加载目录内容时是同步阻塞的,文件一多、网络挂载目录一慢,整个界面就卡住。而 yazi 在底层把 I/O 操作全做了异步处理,目录加载、文件预览、缩略图生成各跑各的,你按键盘切换目录时不会等到全部就绪才渲染。
这一点实际用起来感知非常强烈。我有一台配置不高的办公笔记本,之前用某工具打开带几万个文件的目录,要等两三秒才出列表。换到 yazi 后基本是秒开,而且滚动时也不会一卡一卡的。另一个让我惊喜的是预览机制:yazi 会根据文件类型调用不同插件,文本文件直接渲染高亮内容,图片会通过终端图像协议显示缩略图,压缩包直接列出内部结构,PDF 文件也能截出第一页预览。这种预览能力在终端里非常实用,尤其在找特定素材时,不用每个文件敲命令打开确认了。
所以如果你问"终端文件管理器那么多,为什么偏偏要学 yazi",我的回答是:因为它的设计理念更接近现代应用,它把图形界面里那些"高级功能"都搬进了终端,而且交互体验还保持得非常流畅。这篇文章后面的内容,我会围绕怎么在 Windows 上用好 yazi 来展开,毕竟目前网上关于 Windows 的教程相对零散,踩坑经验更需要整理。
2. Windows 环境准备与安装配置全流程
2.1 前置依赖:Windows 上跑 yazi 需要准备什么
yazi 本身是跨平台的,官方推荐在 Linux 和 macOS 上用,但 Windows 支持也已经比较成熟了。很多人在 Windows 上安装失败,不是 yazi 的问题,而是缺了两样东西:Windows Terminal 和一个能用的 Shell(PowerShell 或 Windows Terminal 里的 Git Bash 都可以)。yazi 运行在终端里,但对终端本身的渲染能力有一定要求,Windows 自带的 conhost 老古董就别指望了,很多字符画、边框、预览效果都会错乱,所以强烈建议先把 Windows Terminal 装好。如果你还没有它,去 Microsoft Store 搜 "Windows Terminal" 装一个就行,完全免费。
然后是 Shell 的问题。yazi 只是个文件管理器前端,它需要知道用什么命令去完成任务,比如打开文件、复制文件、删除文件、调用编辑器等。在 Windows 上,cmd、PowerShell、Git Bash 都行,但体验最好的是 PowerShell,因为 yazi 官方提供了针对 PowerShell 的集成方案,可以一键让 yazi 接管你的终端工作目录。如果你平时习惯用 Git Bash,也完全可以,只是在设置打开文件的应用时要注意路径写法。
还需要准备一个合适的终端字体。yazi 的界面大量依赖 Unicode 符号和图标,如果你字体不支持,界面会显示一堆方框。我自己用的是 "CaskaydiaCove Nerd Font",这是 Cascadia Code 的 Nerd Font 版本,Windows Terminal 里对它的渲染效果很好。你可以在 Nerd Fonts 官网下载,也可以去 GitHub 的 release 页面拿。安装字体时选"为所有用户安装",然后重新打开 Windows Terminal,在设置里把字体改成它就行。
2.2 安装 yazi 的三种方式,实测最推荐哪种
Windows 上安装 yazi 有很多种途径,我逐个试过,这里直接说结论。
第一种是通过包管理器安装。如果你用的是 Windows 包管理器 winget,直接执行命令:
winget install yazi这个命令会下载 yazi 的最新 release 并自动加入 PATH,很省事。但要注意,winget 仓库里的版本更新可能比官方慢一点,如果你追求新功能,可能还要手动更新。
第二种是 Scoop 安装。像我这种在 Windows 上重度使用终端的用户,Scoop 基本上是必备工具了。安装完 Scoop 之后,执行:
scoop bucket add extras scoop install extras/yaziScoop 的好处是安装位置干净、方便卸载更新,而且它还会自动帮你处理好很多依赖,实测没什么大坑。
第三种是自己下载二进制包。到 yazi 的 GitHub Releases 页面下载yazi-x86_64-pc-windows-msvc.zip(一般 x64 机器选这个),解压到某个目录,比如C:\Tools\yazi,然后把C:\Tools\yazi加进用户环境变量Path。这种方式最灵活,适合想用最新开发版或者离线安装的人。
从我个人的实际体验来说,最推荐 Scoop,因为它能同时管理 yazi 的后续升级,一条scoop update yazi就搞定了。安装完成后,在 PowerShell 里输入yazi --version验证一下,能正常输出版本号就说明安装成功了。
2.3 核心配置文件结构与 Windows 路径适配
yazi 的配置目录在 Windows 上是%AppData%\yazi,对应的完整路径一般是C:\Users\你的用户名\AppData\Roaming\yazi。程序首次运行后会自动创建默认的三个配置文件:yazi.toml(主配置)、keymap.toml(按键绑定)、theme.toml(主题样式)。如果你没有看到这些文件,可以手动建一个。
主配置文件yazi.toml里最重要的几个选项是:
[manager] show_hidden = false sort_by = "natural" sort_dir_first = true [preview] max_width = 1000 max_height = 1000 cache_dir = ""show_hidden控制是否显示隐藏文件,Windows 下对应那些带隐藏属性的文件。sort_by用natural可以在文件名排序时更自然,比如file2会排在file10前面。sort_dir_first建议始终保持true,让文件夹排在文件前面,更符合 Windows 用户的使用习惯。
预览区域的两项max_width和max_height控制预览内容的最大尺寸,一般默认就好,但如果你终端分辨率特别高,可以适当调大,否则图片预览可能显得太小。
需要注意的是,yazi 在 Windows 上的很多预览插件默认依赖file命令来识别文件类型,但 Windows 没有这个命令,所以你要么安装 Git for Windows 后在 PATH 里带上它的usr/bin目录,要么在yazi.toml里明确指定文件识别器。我的做法是装 Git for Windows,因为后面打开文件、调编辑器也得靠它带过来的很多 Unix 小工具。
3. 核心操作与高性能工作流实战
3.1 上手必备:yazi 的按键操作逻辑与高频技巧
yazi 的按键逻辑和 vim 有些像,但没那么极端。启动后你会看到三栏布局,最左是目录树,中间是当前目录的文件列表,最右是预览面板。方向键或者h、j、k、l可以切换选择,l进入目录,h返回上级目录,空格键选中/取消选中文件,回车针对当前文件执行"打开"操作。
这些基础操作你十分钟就能摸熟,但真正提升效率的是下面几个技巧:
第一,按/可以快速搜索当前目录下的文件,支持模糊匹配。你不需要打完整的文件名,输入几个关键字母,它会把匹配结果实时列出来,回车就能跳转到匹配项。相比在资源管理器里用 Ctrl+F,这个速度快了不止一倍。
第二,按y会弹出剪切/复制/粘贴的操作菜单,yy复制当前文件路径,dd移动文件,pp粘贴。这个机制和 vim 的寄存器逻辑有点像,上手后非常顺手。我自己最常用的场景是把一个目录里的几个文件复制到另一个目录,在 yazi 里全程按键就能完成,不用来回开资源管理器窗口。
第三,按Tab可以直接在当前文件、文件预览、目录预览之间切换焦点,这对键盘流用户很友好。比如你进入一个目录后,Tab 到左侧目录树,可以快速展开/收起子目录,然后回车跳转,整个浏览过程完全不需要鼠标。
另外,按.可以切换隐藏文件的显示状态,这个键位我在网上看到的教程里很少提,但实际排查问题、翻配置文件的时候非常有用。按空格标记文件后,再按a可以对所有标记文件进行批量操作,批量复制、剪切、删除都在这里。
3.2 在 Windows 上打开文件:Shell 命令与默认程序的正确配置
终端文件管理器的核心价值就是"在终端里完成操作,而不是打开图形界面",所以怎么定义"打开文件"这个动作非常关键。在 yazi 里,按回车打开文件时,会调用open命令,而这个命令是配置在yazi.toml的[opener]段里的。
Windows 上最简单的配置是这样:
[opener] open = [ { run = 'cmd /c start "" "$1"', desc = "打开文件", block = false }, ]你可能会奇怪,为什么要用cmd /c start?因为在 PowerShell 里直接调用start命令在某些环境会有别名冲突,而cmd /c start是最稳妥的方式,它会调用 Windows 的默认关联程序打开文件。比如你回车一个.md文件,它会用默认的 Markdown 编辑器打开;回车一个图片,会用默认图片查看器打开。
对于代码文件的打开方式,我通常还会配置一个用 VS Code 打开的选项,按快捷键Ctrl+o就能用 VS Code 打开当前文件或目录:
[opener] "open in vscode" = [ { run = 'code "$1"', desc = "用 VS Code 打开", block = false }, ]然后在keymap.toml里绑定快捷键:
[[manager.prepend_keymap]] on = [ "ctrl", "o" ] run = "open --choose 'open in vscode'"这样配置完之后,你在终端里浏览项目文件,发现某个文件需要改代码,直接 Ctrl+o 就跳进 VS Code 了,不需要先记住路径再切窗口,整个心流非常顺畅。
还有一点值得提醒:如果你在 Git Bash 环境下运行 yazi,cmd /c start依然有效,但路径需要转成正斜杠或者原样传递,yazi 默认会处理好。实测下来 Git Bash + cmd start 的组合没有任何问题。
3.3 高能进阶:批量重命名、按内容搜索与目录快捷跳转
日常文件管理里,最烦的操作莫过于批量重命名。比如你现在有一堆截图文件,名字全是截图_20240101_01.png这种,想统一改成report_01.png、report_02.png,用图形工具得装个批量重命名软件,用 PowerShell 写命令又有点门槛。yazi 内置了批量重命名功能,操作逻辑是这样的:
先选择要重命名的所有文件(空格键逐个选中,或者按Ctrl+a全选),然后按;进入批量重命名模式。这时你会看到一个类似编辑器的界面,光标落在文件名上,你可以直接改动,改动完成后按回车确认,所有被选中的文件就会按照你改动的规则依次应用。更神的是,yazi 的批量重命名是支持编号占位符的,你只要在文件名里保留一个n,它会自动替换成序号,比如改成report_n.png,实际重命名结果就是report_1.png、report_2.png。
再说搜索。前面提到按/是搜当前目录文件名,但如果你想在文件内容里搜索,就得配合rg(ripgrep)这样的工具。yazi 对 ripgrep 有原生集成,按f可以直接在当前目录对文件内容做全文搜索,搜索结果会列出来,回车即可跳转到对应文件。Windows 上你需要先安装 ripgrep,然后在配置里确认rg命令在 PATH 中。我自己用这个功能在项目里找代码片段,比在 IDE 里全局搜索还快,因为它只搜你要搜的那个目录,不会把整个代码仓库都索引一遍。
最后说目录快捷跳转。yazi 支持类似于 zoxide 的目录记忆功能,按z可以弹出一个历史目录搜索框,输入几个字母快速跳到之前去过的目录。如果你经常在多项目之间切来切去,这个功能能让你节省大量cd的时间。在 Windows 上它读取的是终端的访问历史,所以你只要在 yazi 里访问过一次的目录,之后按z都能搜到,非常智能。
4. 插件扩展、主题定制与内部工具选型实解
4.1 让预览脱胎换骨:Windows 下安装使用文件预览插件
yazi 本身的 UI 很简洁,但它的扩展生态才是让它真正好用的核心。官方以及社区提供了一大堆插件,你可以在 GitHub 上搜 "yazi-rs/plugins",也可以直接看 yazi 内置的ya pack命令。ya pack是 yazi 自带的插件管理器,用法类似各种语言生态的包管理工具,命令行执行:
ya pack add yazi-rs/plugins:full-borderfull-border这个插件可以让 yazi 的各个面板显示完整的边框和美观的分隔线,视觉效果提升非常明显。安装后要在yazi.toml的[plugin]段里注册,一般插件文档里会写清楚。
Windows 上最值得装的插件是image和pdf预览类。image插件会调用终端图像协议,在 Windows Terminal 新版中已经支持图片直出,所以你在终端里能看到真正的图片缩略图,不是那种用 ASCII 字符拼的假图。pdf插件会调用pdftoppm把 PDF 第一页转成图片再预览,前提是你安装了 poppler 工具集。安装方式可以参考:
scoop install poppler然后在预览插件配置里指定pdftoppm的路径。这个折腾完之后,你的终端基本上就是半个图形资源管理器了,图片、PDF、视频缩略图都能预览,体验非常爽。
4.2 主题与图标:让终端界面不再单调的关键配置
终端文件管理器很多人第一眼觉得丑,多半是因为字体和主题没配好。yazi 支持完整的主题系统,配置文件在theme.toml里。你既可以手动指定各个 UI 元素的颜色,也可以在网上找现成的主题直接贴进去。社区里比较火的有catppuccin、dracula、tokyonight,yazi 官方仓库的examples目录里就有现成的主题文件,直接复制过来改名成theme.toml就能用。
我目前用的主题是 Catppuccin Mocha 配色,配合 Windows Terminal 里同一个主题的背景色,整体看起来非常协调。如果你想要图标支持,yazi 也自带了图标映射表,只要你的终端字体是 Nerd Font,文件列表里就会显示对应的文件类型图标,.rs、.py、.jpg 都有各自的标识。这一步配置很容易被忽略,但做了之后整个界面信息辨识度会高很多。
还有一个小细节是文件高亮。theme.toml里可以配置不同类型文件的文字颜色,比如把.md文件标成绿色、把代码文件标成黄色、把压缩包标成红色。我习惯把经常碰的文件类型标出来,这样扫一眼文件列表就知道大概结构了。
4.3 内部工具选型:trash-cli、fd、ripgrep 的 Windows 替代方案
yazi 很多高级功能依赖外部命令行工具,比如删除文件时如果想走回收站而不是永久删除,就需要trash命令;搜索文件时用fd比内置的 find 更快;全文搜索用ripgrep。这三件套在 Linux 上是标配,但在 Windows 上需要自己安装。
我推荐的安装方式还是 Scoop:
scoop install trash fd ripgrep安装完成后,在yazi.toml里配置删除命令。默认情况下 yazi 删除文件是直接删的,如果你希望删除时进回收站,可以覆盖删除操作。我的配置是这样的:
[manager] trash = true启用trash后,yazi 会优先调用系统的回收站机制,Windows 上实测也是有效的。这对于偶尔误删文件的人来说算是一道保命防线。不过要提醒的是,某些插件内部的删除操作可能不经过回收站,所以在大批量删除之前还是自己留个心眼。
除了工具本身,还要注意 PATH 环境变量。Scoop 默认会把 shims 目录加到 PATH 里,所以装完之后重启终端应该就能识别fd、rg这些命令。如果你用二进制包手动解压安装,记得把工具路径手动加进 PATH。
5. 常见问题与排查技巧实录
5.1 启动报错、PATH 不生效与字体乱码的解决方案
先聊聊新手最容易遇到的三个启动问题。
第一种是安装完成后输入yazi提示"不是内部或外部命令",这几乎百分百是 PATH 没配好。如果你用的是 Scoop,多半是 Scoop 的 shims 目录没在 PATH 里;如果是手动解压的,就得去"系统属性 -> 环境变量"里确认路径。改完 PATH 之后,一定要重开终端,环境变量不会自动刷新到已有窗口。这里有个小技巧:在 PowerShell 里执行refreshenv,可以重新加载环境变量,不用关窗口。
第二种是 yazi 能启动,但界面出现大量"口口"字符或者边框错乱。这个基本就是字体问题。Windows Terminal 默认字体 Cascadia Mono 对 Nerd Font 字符支持不全,你需要装一个 Nerd Font,然后在 Windows Terminal 设置里把字体名改成它。改完字体后,yazi 里的图标、边框、状态栏符号就正常了。
第三种是启动 yazi 后提示缺少配置目录。这种情况一般是你手动建了配置目录但路径不对,或者 yazi 的版本升级后配置格式变了。最简单的解决办法是:把%AppData%\yazi目录先备份一下,然后整个删掉,重新启动 yazi 让它自动生成默认配置,然后你再把自己需要的配置一项项加回去。不要心疼配置,反正大部分配置文档里都有,重建成本很低。
5.2 预览不显示图片与某些文件打不开的处理方法
图片预览是很多人装 yazi 后的第一个惊叹点,但如果在 Windows 上没显示出来,原因可能有两个。
第一个是终端不支持图像协议。Windows Terminal 从某个版本开始支持了终端内图片预览,但如果你用的是老的 conhost 或者其他终端模拟器,可能就不支持。建议把 Windows Terminal 升级到最新正式版,在官方文档里确认你的版本支持 iTerm 图像协议。第二个原因是 yazi 的图片预览依赖一个外部工具chafa或者ueberzugpp,在 Windows 上通常用chafa作为后端。安装命令:
scoop install chafa然后在yazi.toml的预览设置里指定图片预览方式。如果还不行,打开 yazi 日志看报错信息,日志文件在%LocalAppData%\yazi下,里面有预览时的详细报错。我自己遇到过的问题是 chafa 版本太旧,升级到最新版之后一切正常。
文件打不开的情况,则要先确认opener配置是否正确。比如按回车打开.txt文件没反应,你可以先在终端里手动执行一下cmd /c start "" "C:\path\to\file.txt"看看能不能打开。如果这条命令能打开,说明 yazi 配置有问题;如果也打不开,说明文件关联本身有问题,要去 Windows 设置里修复默认应用。
5.3 性能优化技巧:大目录卡顿与延迟加载调优
yazi 本身很快,但如果遇到超大目录(几万甚至几十万个文件的模型数据集、node_modules 这种),偶尔也会有延迟。Windows 文件系统的枚举性能和 Linux 相比有一些差异,我自己实测在 NTFS 上打开超大目录,yazi 明显要比本地资源管理器快,但也需要注意一些调优细节。
第一个调优点是预览缓存。大目录里如果开启了图片预览,进入目录时所有图片都要生成缩略图,即使异步处理,CPU 也会飙升。你可以在yazi.toml里限制预览的并发数:
[preview] max_workers = 2这个数值默认是 4,改成 2 能明显降低 CPU 压力,当然预览出现速度会慢一点点。如果你的电脑是高端多核处理器,保持 4 也没问题。
第二个调优点是排序方式。如果对超大目录按modified(修改时间)排序,每次进入目录都要全量读取元数据,比按文件名排序更慢。所以日常使用时用natural排序就好,除非你确实需要按时间查找文件。
第三点是要留意杀毒软件。Windows Defender 实时监控会扫描新访问的目录,尤其是执行二进制文件时,会造成明显的启动和目录切换延迟。如果你把 yazi 加入 Defender 的排除列表,体感速度能快不少。这个操作在"病毒和威胁防护设置 -> 排除项"里添加 yazi 的可执行文件路径即可。
5.4 从 ranger、lf 迁移过来的按键习惯冲突解决办法
我在使用 yazi 之前,算是 ranger 和 lf 的老用户,迁移过来时最大的障碍就是按键习惯。ranger 里常用的yy复制、dd剪切、pp粘贴在 yazi 里其实是一致的,这一点设计得很好。但有一些操作变了,比如 ranger 里gh跳到 home 目录,yazi 里直接按~也能回到 home 目录;ranger 里按S在目录里开一个 shell,yazi 里是Ctrl+o打开 shell。
如果实在适应不了默认按键,yazi 允许你在keymap.toml里完全自定义。比如你可以把某个习惯的操作绑回到原来的键位。我迁移时唯一做的自定义是格式化整理了一个"跳到上一个访问目录"的快捷键:
[[manager.prepend_keymap]] on = [ "u" ] run = "back"因为在 ranger 里按u可以回到历史目录,而 yazi 默认的返回是h,按u更顺手。你完全可以按照自己的肌肉记忆去调整,不用强迫自己适应 yazi 的默认键位。
6. 我的实际使用心得与扩展建议
文章写到这里,该讲的技术点都讲得差不多了。回想我刚开始捣鼓 yazi 的那段时间,最大的收获并不是"换了一个好用的工具",而是明白了为什么一个终端文件管理器能火起来。它本质上是在终端这个看似原始的环境里,用现代的工程思维重新做了一遍人机交互设计。异步的体验、可定制的架构、丰富的插件生态,这些东西放在任何软件里都是优秀的标准。
如果你现在还在犹豫要不要从资源管理器切换到 yazi,我的建议是:先用一个月,把所有能塞进终端的操作都塞进去。前三天肯定会觉得按键繁琐,但从第二周开始,你的肌肉记忆会逐渐形成。一旦习惯了 yazi 的工作流,再回去用图形资源管理器,反而会觉得来回开窗口、点鼠标非常低效。
我个人目前的使用状态是:日常文件整理、项目目录跳转、快速搜索、批量重命名,全部在 yazi 里完成;需要编辑文件的时候,按一个快捷键呼出 VS Code;看完文件关掉编辑器,焦点回到终端又可以用 yazi 继续下一步操作。整个流程几乎没有停顿,这种流畅感是实打实提升工作效率的东西。
最后分享一个扩展想法:yazi 支持通过ya pack装插件,如果你懂一点 Lua,甚至可以自己写一个超级个性化的插件,比如一键把所有图片按拍摄日期归类、批量压缩某个目录下的所有文件、把选中的文件上传到对象存储。我目前已经在用自己写的一个小插件,专门把项目里面的临时文件自动移到.cache目录,省去了大量手动整理的时间。终端文件管理器的上限不在工具本身,而在你愿意花多少心思去打磨它。希望你在用 yazi 的过程中,也能体验到这种把工具变成自己专属形状的乐趣。