yazi 是一个终端里的文件管理器,主程序 yazi.exe 33046528 字节。界面固定三栏:左边父目录,中间当前目录,右边预览。所有动作靠键盘,批量选中之后一次重命名或删除。
它解决的问题是「在终端里找文件太笨」。cd 一层层点进去,ls 一屏屏翻,想看一眼某个 md 写了什么还得 cat 再退出。yazi 把这三步压成一次方向键移动,右侧直接渲染内容。
这次从解压跑到出图:解压 0.28 秒,版本命令 138 到 173 毫秒,ConPTY 里首帧 967 毫秒,32 个文件的目录三栏都正常。
三栏布局,键盘操作
官方 zip 17126329 字节,解开 20 个条目,含两个 exe 与一份补全脚本目录。yazi.exe 是主程序,ya.exe 是命令行工具,装插件和发事件用它。
| 文件 | 字节 | 作用 |
|---|---|---|
| yazi.exe | 33046528 | 主程序,三栏界面 |
| ya.exe | 11561984 | 命令行工具,装插件用 |
| completions\ | 13 个文件 | bash 与 zsh 等补全脚本 |
| zip 整体 | 17126329 | 解压后 20 个条目 |
两个 exe 要放在一起
yazi.exe 启动时会去同目录找 ya.exe,缺了它插件相关的功能会报错。拷到别的机器时整个目录一起拷,别只拿主程序。
# 三次耗时 173 / 168 / 138 毫秒
yazi.exe --version
Yazi
Version: 26.9.1 (8dd895c 2026-09-01)
括号里是提交短哈希与构建日期。跑三次的差值来自系统缓存,第三次 138 毫秒才是程序本身的开销。
装之前先确认三件事
它是纯终端程序,没有安装包,但有三个条件会影响显示效果。
| 条件 | 本次实测值 | 不满足会怎样 |
|---|---|---|
| 系统 | Windows 10 22H2(19045.6466) | 官方只给 msvc 编译的 x64 与 arm64 |
| 终端 | conhost,132 列 34 行 | 列太窄时预览栏被压成一条 |
| 字体 | Consolas 等宽 | 没有 Nerd Font 就只显示文字,不显示图标 |
| 授权 | MIT | 可商用,可改 |
zip 17126329 字节里有相当一部分是终端图形协议的支持代码。它能在支持的终端里直接画图片缩略图,conhost 不在这个范围内,所以截图里预览栏显示的是文本内容。
首帧 967 毫秒
测量方法同上:ConPTY 里从下令开始读输出,直到预览栏出现 records.json 这个名字。967 毫秒含 cmd 与 PTY 建立的开销,比同类的单文件编辑器高一截,因为首帧要读三层目录。
| 环节 | 耗时 | 说明 |
|---|---|---|
| 解压 | 0.28 秒 | 20 个条目 |
| --version 第 1 次 | 173 毫秒 | 冷启动 |
| --version 第 3 次 | 138 毫秒 | 趋于稳定 |
| ConPTY 首帧 | 967 毫秒 | 32 个文件的目录 |
启动时要读三层目录
三栏分别对应父目录、当前目录和预览目标,启动时这三层各要列一次。目录里文件越多,中间栏和它的预览栏越慢,967 毫秒对应的是 32 个条目的目录。
滚到别的目录时它是增量刷新的,不会重读全部。上千个文件的目录第一次进入会有一次可见的停顿,之后翻页就顺了。
三栏各自显示什么
实测那个目录里有两个子目录和两个文件,右侧预览栏选中 docs 之后列出 12 篇 md,选中 demo.py 则显示代码原文。
| 栏位 | 实测内容 | 宽度占比 |
|---|---|---|
| 左栏 | 父目录 b3 的全部条目 | 约 15% |
| 中栏 | 当前目录 demo:docs、src、demo.py、records.json | 约 45% |
| 右栏 | 选中项的预览,docs 展开 12 篇 md | 约 40% |
预览不用打开文件
方向键移一格,右侧立刻换内容。文本按语法高亮,压缩包列出内部文件,二进制显示类型与体积。看一份配置长什么样,不用退出界面再 cat。
底部状态栏左侧是权限位与体积(NOR 表示普通文件,0B 表示空文件),右侧写着 Top 与滚动比例 1/4,中间那格是当前光标所在项。
路径参数的双斜杠会报错
参数写成 D://wb_cache//demo 这种形式时,它把两个斜杠前面那段当成了 URL 的 scheme,直接拒绝启动。
yazi.exe D://wb_cache//demo
error: invalid value 'D://wb_cache//demo' for '[ENTRIES]...':
scheme must be 1-20 characters in kebab-case, got: D
换成单反斜杠的绝对路径就正常:yazi.exe D:\wb_cache\demo。另一种办法是先 cd 到目标目录、不带参数启动,它就用当前目录。
不带参数时用的是启动目录
实测在 demo 目录里执行 yazi.exe,标题栏显示 Yazi: demo,三栏全对。在别的目录执行,它打开的是那个目录,不会记住上次的位置。
想让它记住,得配合 --cwd-file 参数:退出时把当前路径写进一个文件,下次用脚本读出来再传进去。这个参数在 yazi --help 里有,不在界面上。
首次启动不写配置文件
这一点和多数工具相反。打开一次再退出,程序目录和用户目录都没有新增文件,默认配置全部编译在 exe 里。
| 位置 | 启动后是否有变化 | 说明 |
|---|---|---|
| 程序目录 | 无新增 | 20 个文件保持原样 |
| %APPDATA%\yazi | 不存在 | 要改配置时自己建 |
| %LOCALAPPDATA%\yazi | 不存在 | 缓存也按需创建 |
要改配置得自己建目录
在 %APPDATA%\yazi 下建三个文件才会生效:yazi.toml 管行为,keymap.toml 管键位,theme.toml 管配色。目录不存在时它一句提示都没有,改了半天没反应多半是路径建错了。
%APPDATA%\yazi\yazi.toml
%APPDATA%\yazi\keymap.toml
%APPDATA%\yazi\theme.toml
日常操作九个键
方向键用 hjkl 那一套,和 vim 一致。空格是选中,选中之后所有批量动作都作用在这些项上。
| 按键 | 动作 | 实测表现 |
|---|---|---|
| h / j / k / l | 上级 / 下 / 上 / 进入 | 进入目录后三栏整体左移 |
| 空格 | 选中当前项 | 再按一次取消 |
| y / x / p | 复制 / 剪切 / 粘贴 | 底部出现任务提示 |
| d / D | 删除 / 永久删除 | d 进回收站,D 直接删 |
| a / r | 新建 / 重命名 | 底部弹出输入行 |
| ~ | 帮助 | 打开完整键位表 |
d 与 D 的区别要记牢
d 走系统回收站,误删还能捞回来;D 是永久删除,没有二次确认之外的余地。两个键挨着,按错一次就没了。
实测删除时底部会显示进度和条目数,删完状态栏的文件计数跟着减。大目录删除是异步的,进度走完才算结束。
四个容易踩的地方
启动后一片空白
路径参数带了双斜杠,或者指向不存在的目录。按报错里的 scheme 那一句判断,改回单反斜杠的绝对路径。
图标全是方块
没装 Nerd Font 时它会退回纯文字。装一个等宽 Nerd Font 再在终端里换过去,图标才会出现。conhost 换字体的位置在窗口属性里,不在 yazi 的设置里。
预览栏不显示图片
图片预览依赖终端的图形协议,conhost 不支持。换成支持 sixel 或 kitty 协议的终端才会出图,否则只能看到文件信息。
批量重命名没生效
重命名界面里改完要保存退出,它才用编辑器把新名字写回磁盘。直接关窗口等于放弃,文件保持原名。
什么场景值得上
经常在服务器上翻日志和配置的人最合适。33046528 字节的主程序,三栏结构比 ls 加 cat 快得多,967 毫秒就能开始找文件。
整理素材目录也顺手。空格多选之后一次剪切或删除,比图形文件管理器少点几十次鼠标。
反过来,只需要看一眼目录里有什么的场景,ls 就够了。为了列个目录装一个 17 MB 的包,收益不明显。
| 项目 | 数值 |
|---|---|
| yazi.exe 字节 | 33046528 |
| ya.exe 字节 | 11561984 |
| zip 字节 | 17126329 |
| 首帧 | 967 毫秒 |








