一、概述
1.1 项目介绍
Yazi 是一款采用 Rust 异步模型 开发的终端文件管理器,对标老牌 Ranger、lf、nnn。依靠无阻塞 IO、原生多媒体预览、轻量化内存占用、TOML+Lua 分层配置体系,解决了 Ranger 基于 Python 同步架构带来的卡顿、内存泄漏、预览配置繁琐等痛点。 Yazi 采用经典三栏布局(目录树|文件列表|文件预览),原生兼容 Vim 式按键逻辑,对运维、渗透测试、开发者整理本地文件、服务器远端文件都十分友好,支持 Linux/macOS/Windows 全平台运行。
1.2 核心优劣对比(Yazi VS Ranger)
| 维度 | Yazi | Ranger |
|---|---|---|
| 运行语言 | Rust(内存安全、异步非阻塞) | Python(同步执行,海量目录易卡死) |
| 预览能力 | 原生图片/PDF/视频帧/压缩包/代码预览,开箱即用 | 依赖 scope.sh、Überzug 拼接配置,调试成本高 |
| 内存表现 | 常驻 20MB 左右,长时间运行无明显堆增长 | 内存持续累积,需定期重启释放资源 |
| 配置体系 | TOML 基础配置 + Lua 插件,语法简洁易排错 | Python rc 脚本,自定义逻辑门槛高 |
| 任务处理 | 文件拷贝/移动带有进度条、支持任务取消 | 大文件后台操作无进度展示,极易界面假死 |
| 生态现状 | 高速迭代更新,官方包管理器一键安装插件主题 | 十余年沉淀,老旧脚本资源极丰富,稳定性强 |
适用人群:初次使用终端文件管理器、经常处理大量文件素材、挂载网络/NAS 目录、追求流畅体验的用户;习惯深度魔改脚本、拥有多年 Ranger 私有配置的用户可酌情保留 Ranger。
二、系统依赖前置安装(全 Linux 发行版通用)
Yazi 的预览、检索、解压、剪贴板等功能依赖一系列系统工具,Debian/Ubuntu/Kali、CentOS/RHEL 给出对应安装命令。
Debian / Ubuntu / Kali 系列
sudo apt update
sudo apt install -y ffmpeg p7zip-full p7zip-rar jq poppler-utils fd-find ripgrep fzf zoxide imagemagick xclip file zip unzip fonts-nerd-fonts resvg
Fedora / Rocky Linux
sudo dnf install -y ffmpeg p7zip jq poppler fd-find ripgrep fzf zoxide ImageMagick xclip file zip unzip nerd-fonts
依赖说明
nerd-fonts:提供界面图标,防止侧边栏、状态栏图标方块乱码;ffmpeg/poppler-utils:负责图片、PDF、视频缩略图实时预览;fd/ripgrep/fzf/zoxide:文件检索、目录快速跳转;xclip:实现文件路径复制至系统剪贴板。
三、四种通用安装方案(按推荐优先级排序)
主流系统软件仓库大多未收录 Yazi,官方提供 deb/rpm 包、一键脚本、静态二进制、Cargo 编译四种部署方式,可根据自身网络环境选择。
方案1:官方 deb 包安装(Debian 系首选,最稳定)
适配系统 glibc,由系统包管理器统一管理卸载与文件注册,规避网络脚本 TLS 握手失败问题。
# 下载对应架构安装包(x86_64 PC通用)
wget https://github.com/sxyazi/yazi/releases/download/v26.5.6/yazi-x86_64-unknown-linux-gnu.deb
# 使用apt安装本地deb,自动补全系统依赖
sudo apt install ./yazi-x86_64-unknown-linux-gnu.deb
# 验证安装
yazi --version
ya --version
卸载命令
sudo apt remove yazi
sudo apt autoremove
rm -rf ~/.config/yazi
rm -f yazi-x86_64-unknown-linux-gnu.deb
方案2:官方一键安装脚本(网络环境优良时使用)
# 强制指定TLS版本,降低连接失败概率
curl -fsSL --tlsv1.2 https://sh.yazi.rs/install.sh | sudo sh
# 卸载脚本
curl -fsSL https://sh.yazi.rs/uninstall.sh | sudo sh
方案3:静态 musl 二进制部署(通用兼容所有 Linux)
静态编译不绑定系统 glibc 版本,容器、老旧系统均可运行
wget https://github.com/sxyazi/yazi/releases/download/v26.5.6/yazi-x86_64-unknown-linux-musl.zip
unzip yazi-x86_64-unknown-linux-musl.zip
sudo mv yazi ya /usr/local/bin/
yazi --version
# 卸载
sudo rm -f /usr/local/bin/yazi /usr/local/bin/ya
方案4:Cargo 源码编译(获取最新开发版本)
适合需要体验最新功能、可搭建 Rust 编译环境的用户
# 安装rustup工具链
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"
# 编译安装主程序与命令行工具
cargo install --locked yazi-fm yazi-cli
# 写入环境变量永久生效
echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
# 卸载编译版
cargo uninstall yazi-fm yazi-cli
四、配置目录结构与基础配置模板
Yazi 用户配置统一存放路径:~/.config/yazi/,初次运行不会自动生成配置文件,手动创建目录与配置文件:
mkdir -p ~/.config/yazi
cd ~/.config/yazi
touch yazi.toml keymap.toml theme.toml init.lua
各文件职责:
| 配置文件 | 核心作用 |
|---|---|
| yazi.toml | 全局基础参数:布局、预览限制、文件打开规则、后台任务配置 |
| keymap.toml | 自定义全部快捷键,支持兼容 Ranger 操作习惯 |
| theme.toml | 界面配色、高亮样式、状态栏美化 |
| init.lua | Lua 脚本加载、插件注册、高阶自定义逻辑 |
4.1 全局基础配置 yazi.toml(通用标准版)
[manager]
show_hidden = true
sort_by = "natural"
sort_reverse = false
hover_border = true
preview_wrap = true
[preview]
max_file_size = "10MB"
code_max_lines = 2000
image_quality = 85
[open]
rules = [
{ mime = "text/*", use = ["nano", "reveal"] },
{ mime = "image/*", use = ["xdg-open"] },
{ mime = "audio/*", use = ["mpv"] },
{ mime = "video/*", use = ["mpv"] },
{ mime = "application/pdf", use = ["zathura"] },
]
[tasks]
micro_workers = 10
macro_workers = 20
progress_step = 100
4.2 快捷键配置 keymap.toml(兼容 Vim + Ranger 习惯)
# 目录导航
[[manager.prepend_keymap]]
on = ["h"]
run = "cd .."
desc = "返回上级目录"
[[manager.prepend_keymap]]
on = ["l", "<Enter>"]
run = "enter"
desc = "进入文件夹 / 打开文件"
[[manager.prepend_keymap]]
on = ["j"]
run = "arrow down"
[[manager.prepend_keymap]]
on = ["k"]
run = "arrow up"
[[manager.prepend_keymap]]
on = ["gg"]
run = "go top"
[[manager.prepend_keymap]]
on = ["G"]
run = "go bottom"
# 预览窗口滚动
[[manager.prepend_keymap]]
on = ["J"]
run = "preview down 5"
[[manager.prepend_keymap]]
on = ["K"]
run = "preview up 5"
# 文件选中
[[manager.prepend_keymap]]
on = [" "]
run = "select"
desc = "空格单选/取消选中"
[[manager.prepend_keymap]]
on = ["v"]
run = "visual"
desc = "批量框选模式"
# 复制、剪切、粘贴、删除
[[manager.prepend_keymap]]
on = ["yy"]
run = "yank copy"
[[manager.prepend_keymap]]
on = ["dd"]
run = "yank cut"
[[manager.prepend_keymap]]
on = ["pp"]
run = "paste"
[[manager.prepend_keymap]]
on = ["D"]
run = "remove --permanent"
# 检索与目录跳转
[[manager.prepend_keymap]]
on = ["s"]
run = "find"
desc = "当前目录文件查找"
[[manager.prepend_keymap]]
on = ["Z"]
run = "zoxide"
desc = "历史目录快速跳转"
# 复制文件绝对路径
[[manager.prepend_keymap]]
on = ["cc"]
run = "echo %realpath | xclip -selection clipboard"
desc = "路径复制到剪贴板"
# 标签页
[[manager.prepend_keymap]]
on = ["t"]
run = "tab_create"
[[manager.prepend_keymap]]
on = ["w"]
run = "tab_close"
# 退出程序
[[manager.prepend_keymap]]
on = ["q"]
run = "quit"
4.3 主题快速安装与启用
Yazi 内置命令行工具 ya 管理主题与插件,示例安装主流 Dracula 暗黑主题
# 查看所有可用主题
ya pkg list theme
# 安装Dracula主题
ya pkg add theme/dracula
写入 theme.toml 启用主题
[import]
paths = ["~/.config/yazi/packages/theme/dracula/dracula.toml"]
五、基础使用操作手册
5.1 启停命令
# 前台运行
yazi
# 指定目录直接打开
yazi /home/user/work
# 后台常驻运行(不推荐,终端文件管理器按需启动即可)
5.2 高频核心操作汇总
- 浏览导航:
hjkl移动光标、h返回上级、l进入目录、gg/G跳转首尾 - 文件选择:空格单选、
v进入可视化批量选择 - 文件操作:
yy复制、dd剪切、pp粘贴、D永久删除文件 - 检索定位:
s模糊搜索当前目录文件,Z快速跳转访问过的目录 - 标签管理:
t新建标签、w关闭标签,支持多目录并行浏览 - 预览控制:
J/K滚动预览窗口长文本、代码 - 剪贴板:
cc将当前文件完整路径复制到系统剪贴板 - 退出:
q关闭 Yazi
5.3 进阶功能
- 任务面板:文件批量拷贝、解压时,右下角自动弹出进度面板,可查看、终止后台任务;
- 格式预览:无需打开软件,终端内直接查看图片、PDF、代码、压缩包内部文件;
- 批量重命名:选中多个文件后调用系统编辑器批量修改文件名。
六、常见问题排查
- 界面图标显示方块:确认已安装
fonts-nerd-fonts,终端字体配置选择 Nerd Font 系列字体; - wget/github 下载404:核对版本号与文件后缀,优先使用 deb 包而非 tar.gz 压缩包;
- curl TLS 连接被重置:添加
--tlsv1.2参数,或切换二进制离线安装方式; - 图片/PDF 无法预览:检查 ffmpeg、poppler-utils 依赖是否完整安装。
七、总结
Yazi 凭借现代化的异步架构解决了传统终端文件管理器的性能痛点,兼顾开箱即用的预览体验与灵活的自定义配置能力。对于绝大多数 Linux 用户,使用官方 deb 包部署 + 本文提供的标准化配置模板,五分钟即可搭建一套流畅的终端文件管理环境;存量 Ranger 用户可按需逐步迁移配置,兼顾使用习惯与性能提升。
原文 https://blog.csdn.net/2301_79518550/article/details/163376584