Yazi 预览与默认打开配置记录
Yazi 预览与默认打开配置记录
记录时间:2026-06-21 | 更新:2026-06-22(新增 PDF + ONLYOFFICE)
目标
在 Yazi 里实现以下效果:
- 选中 Markdown 文件时,右侧预览使用更接近渲染效果的
glow。 - Markdown 默认用
Typora打开,并强制走 GTK 暗色主题。 .docx文件支持右侧即时预览。.sql文件右侧预览使用高对比语法高亮,避免浅灰字段可见性差。
已安装/确认的软件
1 | |
本机确认结果:
1 | |
安装 Yazi 插件 piper
一开始在 yazi.toml 里直接写:
1 | |
会报错:
1 | |
原因:Yazi 的 previewers.run 不是直接执行 shell 命令,而是按插件名加载。run = "glow -p -" 会被当成要加载 glow.yazi 插件,但本机并没有这个插件。
正确做法是安装 piper.yazi,通过它把 shell 命令接入预览器:
1 | |
安装后会生成:
1 | |
并且 ~/.config/yazi/package.toml 会记录依赖。
安装 docx 预览插件
安装命令:
1 | |
安装后会生成:
1 | |
这个插件底层调用 pandoc 把 .docx 转成纯文本后显示在右侧预览栏,因此本机必须安装 pandoc。
配置 Markdown 用 glow 预览
编辑:
1 | |
添加或保留:
1 | |
说明:
piper -- ...:使用piper.yazi执行后面的 shell 命令。CLICOLOR_FORCE=1:强制输出彩色内容。glow -w=$w:按 Yazi 预览窗口宽度渲染。-s=dracula:使用对比更高的dracula样式。"$1":当前被预览文件的路径。
为什么不用 bat 预览 Markdown
虽然 bat 的高亮对比度更高,但它更偏向“源码视图”,而不是 Markdown 渲染视图。
如果目标是:
- 标题层级更直观
- 列表、引用、强调更接近最终排版
- 阅读体验更像渲染后的 Markdown
那 glow 更合适。
本次调整里,曾短暂把 .md 预览切到 bat,用于解决标题颜色太浅的问题;最终改回了 glow,并把样式从 dark 调整为 dracula,兼顾排版效果和可见性。
配置 Markdown 默认用 Typora 打开
编辑:
1 | |
添加:
1 | |
说明:
[opener]定义一个名为typora的打开方式。env GTK_THEME=Adwaita:dark typora %s会在打开 Typora 时强制使用 GTK 暗色主题。%s是 Yazi 的文件路径占位符,不能用 shell 的"$@"(那是之前的错误写法,会导致文件路径无法正确传入)。orphan = true让 Typora 独立运行,不阻塞 Yazi。[open].prepend_rules把 Markdown 文件优先匹配到typoraopener。- 选中
.md文件后,按Enter会使用这个默认打开规则。
配置 PDF 默认用 ONLYOFFICE 打开
编辑:
1 | |
在 [opener] 中添加 ONLYOFFICE 打开方式,并在 [open].prepend_rules 中关联:
1 | |
说明:
- ONLYOFFICE 本机安装路径:
/usr/sbin/onlyoffice-desktopeditors(实际执行/opt/onlyoffice/desktopeditors/DesktopEditors)。 %s是 Yazi 的文件路径占位符,不是 shell 的"$@"。用"$@"会导致文件路径无法传入,opener 看起来有但实际打不开文件。orphan = true让 ONLYOFFICE 独立运行,不阻塞 Yazi。
常见踩坑:opener 定义后仍不生效
如果配置了 [opener] 和 use,但按 Enter 仍用浏览器打开 PDF,检查:
run中是否误用了"$@"而非%s:Yazi opener 的run命令使用%s/%sN作为文件路径占位符,"$@"是 shell 语法,在 Yazi 中不会正确展开。- opener 名称大小写是否一致:
use = "ONLYOFFICE"必须与[opener]下的 keyONLYOFFICE完全一致(TOML key 大小写敏感)。 - 确认 opener 定义在
[opener]段而不是其他地方:use引用的名字必须对应[opener]下的一个 key。
系统级默认应用配置(可选)
如果希望不仅在 Yazi 内,而是在整个桌面环境中都用 ONLYOFFICE 打开 PDF,需要改 xdg-mime:
1 | |
ONLYOFFICE 的 desktop 文件位于 /usr/share/applications/onlyoffice-desktopeditors.desktop,其 MimeType 已包含 application/pdf。
编辑:
1 | |
在 [plugin].prepend_previewers 中加入:
1 | |
说明:
*.docx:调用docx-preview插件,底层依赖pandoc。*.sql:调用bat强制使用高对比主题,解决透明背景下浅灰字段不清楚的问题。Monokai Extended Bright:在当前透明背景和壁纸场景下,对比度比默认主题稳定得多。
透明背景场景下的经验
如果终端或 Yazi 面板本身带透明效果,预览内容会直接叠在壁纸上,这时问题往往不是“预览失效”,而是“语法主题对比度不够”。
本次实际遇到的两个问题:
- SQL 预览里部分字段呈浅灰色,可见性差。
- Markdown 标题在
glow -s=dark下颜色偏浅,叠到壁纸上不够清楚。
对应处理方式:
- SQL 预览改走
bat,强制指定高对比主题。 - Markdown 保留
glow,但把样式从dark改成dracula。
判断原则:
- 要“更像渲染后的文档排版”,优先
glow - 要“更高对比、更像代码高亮”,优先
bat
注意:open 规则必须用 url 或 mime
曾经错误写成:
1 | |
会报错:
1 | |
原因:当前 Yazi 版本的 [open].prepend_rules 不接受 name 字段,必须使用 url 或 mime。
正确写法:
1 | |
最终完整 yazi.toml 示例
1 | |
修改配置后,如果 Yazi 已经打开,需要退出并重新进入 Yazi 才能生效。
Shell wrapper:退出 yazi 时自动切换到对应目录
Yazi 内置 --cwd-file 参数,退出时将当前路径写入指定文件,配合 shell 函数可实现:按 q 退出并切换目录,按 Q 退出不切换。
yazi.toml 无需任何额外配置,只需在各 shell 配置文件中添加 wrapper 函数:
bash(~/.bashrc)
1 | |
zsh(~/.zshrc)
1 | |
fish(~/.config/fish/config.fish)
1 | |
注意
- yazi 内置的
q退出会写入--cwd-file,Q退出则不写入,因此 wrapper 中按q会切换目录,按Q留在原地。 --cwd-file是 yazi 内置功能,不需要在yazi.toml中做任何配置。%s/%s1是 Yazi opener 的占位符(见上文 opener 配置),与 shell 变量$@/$argv是两回事,不可混用。
快捷键:在当前目录打开 Thunar
在 yazi 中按 Ctrl+E 打开 Thunar 文件管理器(当前所在目录),通过 keymap.toml 实现:
1 | |
1 | |
[[mgr.prepend_keymap]]:yazi section header 必须用缩写mgr,不是manageron = ["<C-e>"]:绑定到Ctrl+E,含角括号shell 'thunar -q; thunar .':先关闭旧实例再打开,避免 Thunar 恢复上次的标签页导致多标签--orphan:Thunar 独立运行,不阻塞 yazi
终端中快速打开 Thunar(dk 别名)
不想用快捷键的话,可以在终端直接输入 dk 回车,在当前目录打开 Thunar:
| Shell | 配置文件 | 写法 |
|---|---|---|
| bash | ~/.bashrc |
alias dk='thunar -q; thunar . &>/dev/null & disown' |
| zsh | ~/.zshrc |
alias dk='thunar -q; thunar . &>/dev/null &!' |
| fish | ~/.config/fish/config.fish |
function dk + nohup thunar .(见下方) |
fish 用
abbr会有后台作业完成提示,改用函数 +nohup+disown可彻底消除:
1 | |
为什么需要 thunar -q + 关闭标签恢复
Thunar 默认会恢复上次关闭时的标签页,导致 thunar . 打开时出现多个标签页。两步解决:
1 | |
两步配合确保每次只打开当前目录这一个标签页。