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.exe33046528主程序,三栏界面
ya.exe11561984命令行工具,装插件用
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 毫秒