yazi - 极速终端文件管理器

💥 用 Rust 编写的极速终端文件管理器,基于异步 I/O


⚡ 概览

属性
名称yazi(意为”鸭子”)
语言Rust
Stars~36k
许可MIT
特点异步 I/O、丰富预览、插件支持

🔥 核心特性

flowchart TD
    subgraph Core[核心能力]
        P[🖼️ 图片预览]
        V[📹 视频预览]
        T[📝 文本预览]
        G[📦 压缩包预览]
    end

    subgraph Navigation[导航]
        Z[zoxide 集成]
        F[fzf 模糊跳转]
        TAB[多标签页]
        FIND[增量搜索]
    end

    subgraph FileOps[文件操作]
        MS[多选]
        CP[复制/剪切]
        BN[批量重命名]
        VM[可视化模式]
    end

    Core --> Navigation --> FileOps

    style P fill:#e3f2fd,stroke:#1976d2
    style Z fill:#fff3e0,stroke:#f57c00
    style MS fill:#e8f5e9,stroke:#388e3c

丰富预览

  • 图片: 内联预览图片(ITerm2 / Kitty / Sixel)
  • 视频: 视频文件预览、缩略图
  • 文本: 代码高亮、Markdown 渲染
  • PDF: 页面预览
  • 压缩包: tar.gz、zip、rar 等

高效导航

  • Vim 风格: hjkl 键位
  • 多标签页: 像浏览器一样管理多个目录
  • fzf 集成: 模糊搜索跳转
  • zoxide 集成: 智能目录跳转
  • 增量查找: 实时显示匹配结果

强大操作

  • 多选: 支持单独选择、范围选择、可视模式
  • 批量重命名: 正则替换、序号递增
  • 任务系统: 异步任务调度,实时进度报告
  • 撤销/重做: 后悔药支持

📦 安装

macOS

brew install yazi

Linux

# 通过 cargo 安装
cargo install yazi
 
# 或通过 yay (Arch)
yay -S yazi
 
# 或下载预编译二进制
curl -fsSL https://github.com/sxyazi/yazi/releases/latest/download/yazi-x86_64-unknown-linux-musl.tar.gz | tar xz
sudo mv yazi /usr/local/bin/

Windows

# via scoop
scoop install yazi
 
# via cargo
cargo install yazi

依赖项(可选,用于预览)

# Ubuntu/Debian
sudo apt install ffmpeg thumbnailer poppler-utils unzip
 
# Arch Linux
sudo pacman -S ffmpeg imagemagick poppler unzip
 
# macOS (brew 依赖自动安装)
brew install ffmpeg imagemagick poppler unzip

⌨️ 键位速查

导航

功能
h / 返回上级目录
l / 进入目录 / 打开文件
j / 下移
k / 上移
gg跳到顶部
G跳到底部
Ctrl+d向下半屏
Ctrl+u向上半屏

文件操作

功能
Space选中/取消选中文件
v进入可视化模式(范围选择)
yy复制
dd剪切
pp粘贴
dD删除(到回收站)
r重命名
Enter确认/重命名

搜索与跳转

功能
/增量搜索
n下一个搜索结果
N上一个搜索结果
Ctrl+f模糊搜索(fzf)
Ctrl+zzoxide 跳转

标签页

功能
t新建标签页
x关闭当前标签页
1-9切换到第 N 个标签页
Tab下一个标签页
Shift+Tab上一个标签页

其他

功能
:进入命令模式
?帮助
i切换预览模式
o用系统默认应用打开
O用…菜单打开
q退出

⚙️ 配置

配置文件结构

~/.config/yazi/
├── init.lua          # 初始化配置
├── yazi.toml         # 主配置
├── keymap.toml       # 键位配置
└── plugins/          # 插件目录
    ├── foo.yazi/
    └── bar.yazi/

yazi.toml 示例

[manager]
show_hidden = true           # 显示隐藏文件
scroll_height = 2            # 滚动边距
tabless = false              # 无标签页模式
info_height = 10             # 底部信息栏高度
 
[preview]
preview_width = 800          # 预览宽度
max_width = 600              # 最大宽度
image_preview = true         # 图片预览
video_preview = true         # 视频预览
 
[mouse]
click = true                 # 启用鼠标点击
scroll = true                # 启用鼠标滚动

keymap.toml 示例

[mgr]
# 基础导航
L = "open"
H = "back"
K = "half_up"
J = "half_down"
 
# 文件操作
yy = "yank"
p = "paste"
dd = "cut"
dD = "delete"
 
# 搜索
"/" = "search"
n = "search_next"
N = "search_previous"
 
# 标签页
t = "tab_new"
x = "tab_close"

init.lua 示例

-- ~/.config/yazi/init.lua
 
-- 设置警告级别
require("yazi warn"):setup()
 
-- 自定义别名
require("yazi alias"):setup({
    alias_cd = "cd",
    alias_ll = "la",
})

🔌 插件系统

yazi 支持 Lua 插件扩展功能。

官方插件

插件功能
yazi-default-plugins预设插件集合
yazi-plugin-airmAir Media Remote
yazi-plugin-artASCII Art 渲染
yazi-plugin-codefiles代码文件计数
yazi-plugin-fzffzf 集成
yazi-plugin-gitignore生成 .gitignore

插件安装

# 克隆到插件目录
git clone https://github.com/yazi-rs/plugins/yazi-plugin-fzf.git \
  ~/.config/yazi/plugins/fzf.yazi

插件配置

-- ~/.config/yazi/init.lua
require("fzf"):setup()

📊 性能对比

测试环境:包含 100,000 个文件的目录

文件管理器启动时间目录切换
yazi15ms5ms
ranger120ms45ms
vifm80ms30ms
nnn25ms12ms

🔗 集成配置

Neovim 集成

-- lazy.nvim 示例
{
    "yazi-rs/yazi.nvim",
    event = "VeryLazy",
    ft = "yazi",
    opts = {},
    config = function()
        require("yazi").setup()
    end,
}

zsh 集成

# 在 .zshrc 中添加
function yazi_cd
  yazi --cwd-only $argv[1]
  local target="$(yazi --cwd-only $argv[1])"
  [ -n "$target" ] && z - "$target"
end
 
alias y = "yazi_cd"
bindkey -s "^f" "yazi_cd\n"

fish 集成

# 在 config.fish 中添加
function yazi_cd
    set -l target (yazi --cwd-only $argv)
    [ -n "$target" ]; and z $target
end

🆚 竞品对比

特性yazirangernnnlf
语言RustPythonCGo
启动速度⚡极速🐌 慢⚡快⚡快
异步 I/O
Vim 风格⚠️
图片预览
多标签页
插件系统✅ Lua✅ Python
TUI 框架Ratatuincursesncursesbubbletea

💡 使用场景

场景适用性说明
终端日常文件管理替代 cd + ls 组合
代码仓库导航与 zoxide/fzf 完美配合
远程服务器文件操作轻量快速
图片/视频管理内联预览
学习 Vim 操作hjkl 导航

⚠️ 常见问题

Q: 图片预览不工作?

确保使用支持的终端:

  • iTerm2 (内置支持)
  • Kitty
  • Sixel 兼容终端
# 在 yazi.toml 中启用
[preview]
image_preview = true

Q: 视频预览显示为空白?

需要安装 ffmpeg:

# macOS
brew install ffmpeg
 
# Ubuntu
sudo apt install ffmpeg

Q: 插件加载失败?

检查 init.lua 语法:

# 检查语法
lua -c ~/.config/yazi/init.lua

Q: 中文文件名显示乱码?

确保终端编码为 UTF-8:

export LANG=en_US.UTF-8

🔗 相关资源


🚀 快速上手

# 1. 安装 yazi
brew install yazi
 
# 2. 启动(使用 hjkl 导航)
yazi
 
# 3. 试试基本操作
l        # 进入目录
h        # 返回上级
Space    # 选中文件
yy       # 复制
p        # 粘贴
 
# 4. 搜索
/文件名    # 增量搜索
n         # 下一个
 
# 5. 退出
q

提示: 按 ? 查看完整帮助,按 : 进入命令模式输入更多命令。