十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

yazi 暗色主题指南:theme-dark.toml 配色拆解、交互反馈与三层自定义

yazi 暗色主题指南:theme-dark.toml 配色拆解、交互反馈与三层自定义 yazi 暗色主题指南theme-dark.toml 配色拆解、交互反馈与三层自定义【免费下载链接】yazi Blazing fast terminal file manager written in Rust, based on async I/O.项目地址: https://gitcode.com/GitHub_Trending/ya/yaziyazi 是一个用 Rust 写的终端文件管理器基于 async I/O启动快是它的招牌。它启动时会看你终端的深浅模式自动加载对应的暗色或亮色主题预设。这篇文章把 yazi-config/preset/theme-dark.toml 的配色拆给你看再讲清楚交互状态怎么给反馈、你的自定义配置怎么盖掉预设。本文内容yazi 暗色主题配置的加载时机与启动校验机制[mgr]、[tabs] 等基础配色参数的实际取值[filetype] 文件类型颜色规则的匹配顺序与写法复制/剪切/选中标记的交互状态反馈方式仓库预设 → 用户级 theme.toml → 源码层规则三层配置怎么覆盖生效启动时加载与校验暗色主题暗色预设不是你想加载就加载yazi 检测终端是否处于暗色模式是则读 theme-dark.toml否则读 theme-light.toml你的用户级 theme.toml 再盖在上面。校验逻辑在 yazi-config/src/theme/theme.rs 的Theme::reshape和反序列化函数里有两个硬约束。[which].cols 必须落在 1 到 3let cols u8::deserialize(deserializer)?; if (1..3).contains(cols) { Ok(SyncCell::new(cols)) } else { Err(de::Error::custom(cols must be between 1 and 3)) }syntect_theme必须为空或本地绝对路径空字符串表示沿用 flavor 指定的语法高亮主题。配置写错会在启动阶段直接报错不会让界面挂掉再让你猜。基础配色参数表基础盘子的思路是边框和弱化元素统一走灰色系焦点信息当前路径、搜索命中才用高亮色。核心取值都写在 theme-dark.toml 里元素配置颜色用途边框border_style { fg gray }gray弱化分割线不抢文件列表视觉当前目录cwd { fg cyan }cyan底部状态栏定位信息搜索词find_keyword { fg yellow, bold true, italic true, underline true }yellow查找模式下的命中词活动标签[tabs] active { bg blue, bold true }blue 底当前 tab 一眼可辨非活动标签[tabs] inactive { fg blue, bg gray }蓝字灰底弱化但不消失这里有个细节marker_symbol和border_symbol都是│标记和边框共用一个竖线字符配色不同就能区分语义。border_style、cwd、find_keyword 怎么组合灰色边框把界面切成三块cyan 的 cwd 告诉你现在在哪yellow 加粗斜体下划线的搜索词告诉你在找什么。三个高亮色互相不撞深色背景下扫一眼就能分清位置、结构、命中。[filetype] 规则怎么读顺序匹配决定颜色文件列表里目录蓝、图片黄、压缩包红靠的是 [filetype] 的 rules 数组。规则从上到下逐条匹配第一条命中就生效所以兜底规则必须放最后[filetype] rules [ { mime **/image/*, fg yellow }, { mime **/{audio,video}/*, fg magenta }, { mime **/application/{zip,rar,7z*,tar,gzip,xz,zstd,bzip*,lzma,compress,archive,cpio,arj,xar,ms-cab*}, fg red }, { mime **/application/{pdf,doc,rtf}, fg cyan }, { mime vfs/{absent,stale}, fg gray }, { url *, is orphan, bg red }, { url *, is exec , fg green }, { url *, is dummy, bg red }, { url */, is dummy, bg red }, { url */, fg blue } ]每条规则由 yazi-config/src/theme/filetype_rule.rs 里的FiletypeRule::match_with处理先看is字段exec、orphan、dummy 这些链接/权限特征是否满足再走 url 或 mime 通配匹配。所以{ url *, is exec, fg green }能把任何目录里的可执行文件单独染绿和目录蓝规则互不干扰。交互状态反馈marker 颜色与 reversed反馈策略很克制操作痕迹只加在行首标记上不动整行底色。状态配置效果已复制marker_copied { fg lightgreen, bg lightgreen }行首竖线亮绿已剪切marker_cut { fg lightred, bg lightred }行首竖线亮红已标记marker_marked { fg lightcyan, bg lightcyan }行首竖线亮青已选中marker_selected { fg lightyellow, bg lightyellow }行首竖线亮黄fg 和 bg 设成同色竖线就变成一块实色标记块在深色列表里对比度足够又不会像整行反色那样刺眼。reversed整块反色留给 [indicator] 的 parent/current 行、[confirm] 的确认按钮和 [input] 的选中项预览区悬停用underline任务栏当前任务用 magenta 加粗[tasks] hovered { fg magenta, bold true }。三层配置覆盖怎么生效改 yazi theme-dark.toml 自定义配色不用动仓库文件覆盖是逐字段的。~/.config/yazi/theme.toml 的局部覆盖第一层是仓库预设就是 yazi-config/preset/ 下的 theme-dark.toml 和 theme-light.toml作基线。第二层是你的用户级配置代码里Theme::read读的是~/.config/yazi/theme.toml只写要改的部分即可[mgr] cwd { fg lightblue } [tabs] active { bg purple, bold true }没写的字段继续走预设值。第三层是源码字段结构和 rules 解析在 yazi-config/src/theme/theme.rs 与 filetype_rule.rs想改默认规则或加新匹配维度才需要动这里。动手先 clone 仓库跑起来再在~/.config/yazi/theme.toml里挑一两处改重启 yazi 就能看到新配色。git clone https://gitcode.com/GitHub_Trending/ya/yazi【免费下载链接】yazi Blazing fast terminal file manager written in Rust, based on async I/O.项目地址: https://gitcode.com/GitHub_Trending/ya/yazi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表