15.6K Stars Yazi-超快终端文件管理器(全平台)

我最早知道的这类工具是Linux上的 Ranger,后来找到一个能在Windows上用的 lf,最近才知道的Yazi ,感觉好多工具/功能都被用 Rustgolang 重新实现了一遍。

Yazi(意为“鸭子”)是用 Rust 编写的终端文件管理器,基于非阻塞异步 I/O。它旨在提供高效、用户友好且可自定义的文件管理体验。

💡 一篇解释其内部运作的新文章:为什么 Yazi 很快?

  • 🚀 完全异步支持:所有 I/O 操作都是异步的,CPU 任务分布在多个线程中,从而充分利用可用资源。
  • 💪 强大的异步任务调度和管理:提供实时进度更新、任务取消和内部任务优先级分配。
  • 🖼️ 内置支持多种图像协议:还集成了 Überzug++ 和 Chafa,几乎覆盖了所有终端。
  • 🌟 内置代码高亮和图片解码:结合预加载机制,大大加快图片和普通文件的加载速度。
  • 🔌 并发插件系统:UI 插件(重写大部分 UI)、功能插件、自定义预览器/预加载器/提取器;只是一些 Lua 的碎片。
  • 📡 数据分发服务:基于客户端-服务器架构构建(无需额外的服务器进程),集成基于 Lua 的发布-订阅模型,实现跨实例通信和状态持久化。
  • 📦 包管理器:使用一个命令安装插件和主题,使它们保持最新状态,或将它们固定到特定版本。
  • 🧰 与 ripgrep、fd、fzf、zoxide 集成
  • 💫 类似 Vim 的 input/select/confirm/which/notify 组件,cd 路径自动补全
  • 🏷️ 多选项卡支持、跨目录选择、可滚动预览(用于视频、PDF、档案、目录、代码等)
  • 🔄 批量重命名、可视模式、文件选择器
  • 🎨 主题系统, 鼠标支持, 垃圾桶, 自定义布局, CSI u

安装

依赖介绍

要使用 Yazi,您必须安装以下先决条件:

  • file(用于文件类型检测)

Yazi 可以选择使用其他命令行工具进行扩展,以启用其他功能。

如果功能无法正常工作,请尝试将其升级到最新版本。

Arch Linux

使用以下命令安装 Yazi 及其依赖:

sudo pacman -S yazi ffmpegthumbnailer p7zip jq poppler fd ripgrep fzf zoxide imagemagick

若要安装最新的 Git 版本,可以从 AUR 安装:

paru -S yazi-git ffmpegthumbnailer p7zip jq poppler fd ripgrep fzf zoxide imagemagick

也可以安装官方的夜间发布版本:

paru -S yazi-nightly-bin ffmpegthumbnailer p7zip jq poppler fd ripgrep fzf zoxide imagemagick

macOS

确保 Homebrew 已更新:

brew update

然后安装 Yazi 及其可选依赖:

brew install yazi ffmpegthumbnailer sevenzip jq poppler fd ripgrep fzf zoxide imagemagick font-symbols-only-nerd-font

如果希望使用最新代码,可以加上 --HEAD 参数:

brew install yazi --HEAD

Windows

Yazi 依赖 file(1) 来检测文件 MIME 类型。建议安装 Git for Windows,并将 file.exe 添加到环境变量 YAZI_FILE_ONE 中:

  1. 安装 Git for Windows。
  2. 添加路径到环境变量:
    • 安装器:C:\\Program Files\\Git\\usr\\bin\\file.exe
    • Scoop:C:\\Users\\<Username>\\scoop\\apps\\git\\current\\usr\\bin\\file.exe

推荐通过以下方式安装 Yazi 和可选依赖:

scoop install yazi
scoop install 7zip jq poppler fd ripgrep fzf zoxide imagemagick

或使用 WinGet:

winget install sxyaxi.yazi
winget install 7zip.7zip jqlang.jq sharkdp.fd BurntSushi.ripgrep.MSVC junegunn.fzf ajeetdsouza.zoxide ImageMagick.ImageMagick

使用 X-CMD 安装

X-CMD 是开源轻量级 POSIX 脚本,用于管理工具 (500+) 和提供经典命令扩展

x env use yazi fzf 7za jq fd rg zoxide

快速入门

安装 Yazi 后,使用以下命令启动程序:

yazi
  • 按下 q 可退出
  • 按下 ~ 打开帮助菜单(快捷键菜单),所有的按键绑定也可以查看默认的 keymap.toml 文件。

Shell 包装器

建议使用这个 y shell 包装器,它提供了在退出 Yazi 时更改当前工作目录的能力。跟之前使用Ranger时配置退出时自动更改到退出时的工作目录一样

Linux/macOS:需要使用 $EDITOR 指定 yazi 调用的文本编辑器。我这里使用Micro作为调用的文本编辑器

Windows:没有 $EDITOR 的概念,用户需要根据需要修改文本打开器。

  • Bash / Zsh

    function y() {
    	local tmp="$(mktemp -t "yazi-cwd.XXXXXX")"
    	EDITOR=micro yazi "$@" --cwd-file="$tmp"
    	if cwd="$(cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then
    		builtin cd -- "$cwd"
    	fi
    	rm -f -- "$tmp"
    }
    
  • Fish

    function y
    	set tmp (mktemp -t "yazi-cwd.XXXXXX")
    	EDITOR=micro yazi $argv --cwd-file="$tmp"
    	if set cwd (command cat -- "$tmp"); and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]
    		builtin cd -- "$cwd"
    	end
    	rm -f -- "$tmp"
    end
    
  • PowerShell

    function y {
        $tmp = [System.IO.Path]::GetTempFileName()
        yazi $args --cwd-file="$tmp"
        $cwd = Get-Content -Path $tmp
        if (-not [String]::IsNullOrEmpty($cwd) -and $cwd -ne $PWD.Path) {
            Set-Location -LiteralPath $cwd
        }
        Remove-Item -Path $tmp
    }
    

配置

Yazi 有三个配置文件:

您可以在 shipped 标记 https://github.com/sxyazi/yazi/tree/ shipped/yazi-config/preset) 上找到默认配置文件。

要覆盖任何默认值,请先创建相应的文件:

  • ~/.config/yazi/ 在类 Unix 系统上。
  • C:\Users\USERNAME\AppData\Roaming\yazi\config\ 在 Windows 上。

例如,要更改隐藏文件的可见状态,请首先创建一个 yazi.toml 文件,以便:

  • ~/.config/yazi/yazi.toml 在类 Unix 系统上。
  • C:\Users\USERNAME\AppData\Roaming\yazi\config\yazi.toml 在 Windows 上。

然后将所需的部分复制到其中,这是show_hidden

# yazi.toml
[manager]
show_hidden = true

包管理工具

这个包管理工具可用于安装主题和插件,可以将自己的配置和主题插件什么的做成yazi包以供快速安装,不过目前阶段(2024-10-12)感觉用不到,对于我个人来说安装好就已经足够开箱即用了,我就设置了默认显示隐藏文件退出自动cd到退出时的目录

可以使用 ya pack 子命令管理您的插件和风格。例如,要从 https://github.com/owner/my-plugin.yazi 安装插件,请运行:

ya pack -a owner/my-plugin

ya pack 还支持将 monorepo 中的子目录作为包安装。例如,要从 https://github.com/yazi-rs/plugins/tree/main/git.yazi 安装包,请运行:

ya pack -a yazi-rs/plugins:git

它会自动从 GitHub 克隆它们,将它们复制到你的 plugins 目录,并更新 package.toml 以锁定它们的版本:

# ~/.config/yazi/package.toml
[plugin]
deps = [
	{ use = "owner/my-plugin", rev = "0573024" },
	{ use = "yazi-rs/plugins:git", rev = "9a1129c" }
]

要列出 ya pack 管理的所有插件:

ya pack -l

要在新系统上安装 package.toml 中所有具有锁定版本的插件:

ya pack -i

要将所有插件升级到最新版本:

ya pack -u

如果你想将插件固定到特定版本,以便在运行 ya pack -u 时它不会升级,请在 rev 中的哈希值前添加 = 限定符:

[plugin]
deps = [
-	{ use = "owner/my-plugin", rev = "9a1129c" }
+	{ use = "owner/my-plugin", rev = "=9a1129c" }
]

主题(Beta阶段)

有现成的主题仓库可以直接安装主题,也可以自行编辑 theme.toml 创建自己的主题

主题仓库:https://github.com/yazi-rs/flavors

插件(Beta阶段)

还没去研究

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值