$ terminals _

yazi

推荐

极速终端文件管理器,支持图片预览

GitHub brew install yazi

简介

yazi(中文”鸭子”的拼音)是一款使用 Rust 编写的极速终端文件管理器。它基于异步 I/O 架构设计,能够在浏览大量文件时保持流畅的交互体验。yazi 最引人注目的特性是支持终端内图片预览,包括 PNG、JPG、GIF 动图甚至 PDF 文件的预览。

yazi 提供了 Vim 风格的键位操作、强大的插件系统和丰富的内置功能。它支持批量重命名、文件搜索、归档管理、目录跳转等高级功能,并且可以通过 Lua 脚本进行深度定制。对于追求效率的终端用户,yazi 是 ranger 和 lf 的优秀替代方案。

安装

# macOS
brew install yazi

# Arch Linux
sudo pacman -S yazi

# Cargo
cargo install --locked yazi-fm yazi-cli

建议同时安装以下依赖以获得最佳预览体验:

# 文件预览相关依赖
brew install ffmpeg poppler fd ripgrep fzf zoxide jq

核心特性

  • 极速异步: 基于 Tokio 异步运行时,文件加载和预览完全非阻塞
  • 图片预览: 支持在终端中直接预览图片、视频缩略图和 PDF
  • Vim 键位: 使用 h/j/k/l 导航,操作高效自然
  • 插件系统: 通过 Lua 脚本扩展功能,社区插件丰富
  • 批量操作: 支持批量选择、重命名、复制、移动和删除
  • 集成搜索: 内置 fd 和 ripgrep 集成,快速搜索文件和内容

使用示例

# 启动 yazi
yazi

# 在指定目录启动
yazi ~/projects

# 退出时切换到最后浏览的目录(需要 Shell 包装函数)
function y() {
    local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd
    yazi "$@" --cwd-file="$tmp"
    if cwd="$(command cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then
        builtin cd -- "$cwd"
    fi
    rm -f -- "$tmp"
}

常用快捷键:

h/l          - 返回上级/进入目录
j/k          - 上下移动光标
Space        - 选择/取消选择文件
Enter        - 打开文件
y/p/d        - 复制/粘贴/删除
r            - 重命名
/            - 搜索文件
z            - 使用 zoxide 跳转
q            - 退出

典型场景

场景一:快速浏览和预览多媒体文件

在 Kitty/iTerm2 等支持图像协议的终端下,yazi 能直接预览图片:

# 启动 yazi,浏览图片目录
yazi ~/Pictures

# 使用 j/k 上下浏览,图片实时在右侧预览
# 支持 PNG、JPG、GIF 动图、PDF(首页预览)
# 视频文件显示缩略图帧(需安装 ffmpeg)

场景二:批量重命名文件

整理照片或下载文件时,需要批量规范文件名:

# 在 yazi 中:
# 1. 按 Space 多选文件
# 2. 按 r 进入批量重命名模式
# 3. 会在 $EDITOR 中打开重命名列表
# 4. 用编辑器的多光标或替换功能改名
# 5. 保存退出后自动执行重命名

等价于 vidir 命令,但集成在文件管理器中,更直观。


场景三:退出时自动切换到浏览目录

配合 Shell 函数,在 yazi 里浏览到目标目录后退出,Shell 自动跳转过去:

# 在 ~/.zshrc 中添加(官方推荐)
function y() {
    local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd
    yazi "$@" --cwd-file="$tmp"
    if cwd="$(command cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then
        builtin cd -- "$cwd"
    fi
    rm -f -- "$tmp"
}

# 之后用 y 代替 yazi
y                  # 浏览文件系统,退出后 shell 自动 cd 到你最后所在的目录