从选文件到批量处理:Yazi 终端文件管理器的外部工具集成实战
【免费下载链接】yazi💥 Blazing fast terminal file manager written in Rust, based on async I/O.项目地址: https://gitcode.com/GitHub_Trending/ya/yazi
Yazi 是一款用 Rust 编写的终端文件管理器,基于异步 I/O,浏览大目录不卡顿。它的另一个亮点是外部工具集成:编辑、搜索、解压、批处理都能挂到你自己的命令上。本文以实际工作流为主线,讲清楚 Yazi 的 opener 配置、快捷键绑定和 shell 集成怎么写,看完就能在终端里搭起一套顺手的文件工作流。
用 rg 全文搜索,替代翻目录
终端重度用户最熟悉的场景:在一个大仓库里找一段字符串。用 Rar 之类老派文件管理器,你只能一层层进目录肉眼扫;Yazi 把s和S默认绑给了 fd 和 ripgrep,按下S输入关键词,右侧文件列表直接过滤出内容命中的文件,光标选中后回车进上下文。
前提是装好这两个工具:
# 以 Debian/Ubuntu 为例 sudo apt install fd-find ripgrepYazi 在找不到 fd/rg 时会回退到系统原生命令,但速度明显下降。建议把fd、rg装进 PATH,之后在 Yazi 里S搜内容、s搜文件名都走快路径。
改默认编辑器:两个地方都要对
Yazi 打开文本文件的命令写在 opener 配置里。默认值长这样(取自 yazi-default.toml):
[opener] edit = [ { run = "${EDITOR:-vi} %s", desc = "$EDITOR", for = "unix", block = true }, ]${EDITOR:-vi}的意思是:读了环境变量EDITOR就用它,没设就退回vi。所以最小改法是在~/.bashrc里加一句export EDITOR=code或nvim,重启终端后 Yazi 按O打开文件就换编辑器了。
想更精细,比如给图片绑feh、给 PDF 绑zathura,就在自己的~/.config/yazi/yazi.toml里加 opener 规则和[open]里的 mime 匹配,规则写法可以直接抄仓库 preset 文件当模板,改工具名和参数即可。
把 ffmpeg 这类批量工具挂到快捷键上
Yazi 的快捷键文件是 keymap-default.toml,格式非常直白:on是键,run是要执行的命令。run里支持shell命令和插件调用。
想把"选中多个 mp3,一键批量压缩"做成一个键,写法大致是:
{ on = "b", run = "shell ffmpeg -i %f -c:a libmp3lame -q:a 6 %f.tmp && mv %f.tmp %f", desc = "Compress mp3" }%f会展开成当前选中的文件,批量选中多个文件时 Yazi 会逐个执行。注意shell命令跑在子进程里,命令本身要写成单条可执行语句,复杂逻辑建议先写进脚本再在 keymap 里引用脚本路径。
日志和异步任务:出问题时先看这两处
外部工具集成出错,多数是命令本身没跑通,而不是 Yazi 的问题。两条排查路径:
- 日志文件:Yazi 用
--log=debug启动时,会把日志写到~/.local/state/yazi/yazi.log(路径逻辑见 yazi-fm/src/logs.rs),里面能看到每个 opener 调用的命令和退出码。 - 任务管理器:按
w打开任务面板,正在跑的 shell、下载、预加载任务都会列出来,Enter查看输出,x取消卡住的进程。
如果工具在面板里显示失败,优先在普通终端里手工跑一遍那条命令,确认参数和占位符展开没问题。
上手建议
先跑通"搜索 + 编辑"这条最短路径:装好 fd、ripgrep,设好EDITOR,在 Yazi 里用S搜、O打开。确认顺手后,再往 keymap 里加一两个你自己的批量快捷键。配置只需要动~/.config/yazi/下的文件,仓库里的 preset 保持原样即可。
【免费下载链接】yazi💥 Blazing fast terminal file manager written in Rust, based on async I/O.项目地址: https://gitcode.com/GitHub_Trending/ya/yazi
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考