首页/新闻资讯/正文详情

eza 颜色与主题定制完全指南:EZA_COLORS 环境变量与 theme.yml 详解

发布时间:2026/9/20 23:51:15 来源:云帆数科 栏目:资讯中心
eza 颜色与主题定制完全指南:EZA_COLORS 环境变量与 theme.yml 详解
eza 颜色与主题定制完全指南EZA_COLORS 环境变量与 theme.yml 详解【免费下载链接】ezaA modern alternative to ls项目地址: https://gitcode.com/gh_mirrors/ez/ezaeza现代版ls在终端输出中对文件名、权限位、大小、日期、Git 状态等几乎每个元素都提供了细粒度的配色能力。本文以官方 man 手册 man/eza_colors-explanation.5.md 为骨架结合仓库源码src/theme/、src/options/config.rs、src/info/filetype.rs深入讲解两层定制体系通过EZA_COLORS/LS_COLORS环境变量快速覆盖颜色以及通过theme.yml配置文件声明式定义完整主题。读完本文你将掌握颜色代码的语法、内置扩展映射的覆盖机制以及如何写出可复现、可分享的个性化主题文件。一、定制颜色的两种入口eza 的配色定制分为两个层次环境变量层EZA_COLORS/LS_COLORS/ 旧名EXA_COLORS适合临时覆盖、单点微调例如“把 zip 文件变绿”“把日期列变绿”配置文件层theme.yml适合系统性的主题声明通过EZA_CONFIG_DIR或$XDG_CONFIG_HOME/eza/theme.yml加载支持图标、前景/背景色、加粗、斜体等完整样式属性。两者可以叠加使用配置文件ThemeConfig解析得到基础UiStyles后环境变量中的映射会继续覆盖其上。这一点在 src/theme/mod.rs 的to_theme()中体现先加载theme_config得到 UI 样式再调用parse_color_vars解析环境变量对样式进行二次修改最后把 glob 映射与内置FileTypes组合成FileStyle链。二、环境变量语法键值对、分隔符与 globEZA_COLORS的语法结构详见 man/eza_colors.5.md键值对之间用连接例如*.txt32同一键的多个 ANSI 格式码用;连接例如*.txt32;1;4绿色加粗加下划线多组键值对之间用:分隔例如*.txt32:*.mp31;35。键可以是两位字母代码如da表示日期、uu表示当前用户也可以是文件 glob如*.zip、Vagrantfile。任何不是合法两位代码的键都会被当作 glob 处理——即使它恰好也是两位字母。从源码 src/theme/lsc.rs 可以看到LSColors::each_pair按:切分、再按切分最多取三段只有“键和值都非空”的项才被接受随后 src/theme/mod.rs 的parse_color_vars先尝试用set_ls/set_exa匹配两位代码匹配失败才交给glob::Pattern作为文件映射。需要注意的是EXA_COLORS向后兼容当EZA_COLORS未设置时eza 会回退检查EXA_COLORSman/eza_colors.5.mdEXA_COLORS覆盖LS_COLORSEZA_COLORS中给出的值会覆盖LS_COLORS中的同名项因此无需重写整套LS_COLORS就能扩展它样式值必须合法与某些ls实现不同eza 会严格校验 ANSI 码不会原样输出任意字符。lsc.rs的to_style()只识别1(bold)、2(dimmed)、3(italic)、4(underline)、5(blink)、7(reverse)、8(hidden)、9(strikethrough)、标准 16 色30–37、90–97、256 色38;5;nnn、真彩 RGB38;2;r;g;b以及对应的背景色40–47、100–107、48;5;nnn、48;2;r;g;b其余一律忽略。三、经典用法示例以下示例均来自官方 man 文档可直接复制使用目标命令关闭“当前用户”高亮EZA_COLORSuu0:gu0日期列变绿EZA_COLORSda32高亮 VagrantfileEZA_COLORSVagrantfile1;4;33覆盖 zip 默认颜色256 色EZA_COLORS*.zip38;5;125Markdown 偏绿、日志偏灰EZA_COLORS*.md38;5;121:*.log38;5;248覆盖与重置内置扩展映射eza 内置了一套覆盖常见扩展名的颜色映射文档、压缩包、媒体、临时文件等。环境变量中的任何映射都会覆盖内置默认值例如LS_COLORS*.zip32只会把 zip 文件变绿其他压缩文件的颜色保持不变。若想彻底禁用内置映射可在EZA_COLORS开头放一个reset条目EZA_COLORSreset:*.txt31只高亮文本文件EZA_COLORSreset什么都不高亮。源码实现上parse_color_vars检测到exa值为reset或以reset:开头时会将use_default_filetypes置为falsesrc/theme/mod.rs随后to_theme()依据“自定义映射是否为空 是否使用内置映射”两个布尔量组合出四种FileStyle仅内置、仅自定义、两者叠加自定义优先、全部关闭src/theme/mod.rs。glob 映射的匹配顺序自定义 glob 从后往前匹配即后定义的条目优先级更高src/theme/mod.rs。同时简单的*.ext形式会进入哈希表以提升复杂LS_COLORS场景下的匹配性能复杂模式含? * [ ] .等则走 glob 匹配二者行为保持一致。这一点也被 src/theme/mod.rs 的单元测试覆盖例如pi31:pi32:pi33最终生效的是黄色33。四、内置扩展类型与默认配色eza 将常见文件归为若干语义类型每种类型有独立的默认样式。官方说明如下对应 src/info/filetype.rs 与 src/theme/default_theme.rs 的实现类型示例扩展/文件名默认样式Build构建文件Makefile、Cargo.toml、package.json黄色加粗加下划线Image图片png、jpeg、gif紫色Video视频mp4、ogv、m2ts更深的紫色加粗Music有损音乐mp3、m4a、ogg淡蓝色Lossless无损音乐flac、alac、wav稍亮的蓝色加粗Crypto加密相关asc、enc、p12亮绿色加粗Document文档pdf、doc、dvi更淡的绿色Compressed压缩文件zip、tgz、Z红色Temp临时文件tmp、swp、~默认前景色变暗dimmedCompiled编译产物class、o、pyc黄色Source源码cpp、js、java亮黄色加粗Compiled 的智能判定除了“常见扩展名”外eza 还会把一个文件判为编译产物——如果它使用常见扩展名、且与其某个源文件位于同一目录。例如styles.css旁边存在styles.less/styles.sass时或scripts.js旁边存在scripts.ts/scripts.coffee时。对应逻辑见 src/info/filetype.rs文件以~结尾或#...#包裹判为 Temp再依次查文件名表、扩展名表最后检查是否与源文件同目录。值得一提的是eza 支持亮色系bright colours在EZA_COLORS中可直接使用90–97的亮色代码90深灰、91亮红、92亮绿、93亮黄、94亮蓝、95亮紫、96亮青、97亮白大多数现代 256 色终端都支持。五、两位代码速查表LS_COLORS 兼容的十个代码di目录、ex可执行文件、fi普通文件、pi命名管道、so套接字、bd块设备、cd字符设备、ln符号链接、or无目标的符号链接。这些由set_ls处理src/theme/ui_styles.rs。EZA_COLORS 扩展代码权限位oc(八进制权限)、ur/uw/ux/ue、gr/gw/gx、tr/tw/tx、su/sf、xa(扩展属性指示符)。大小sn一次设置nb nk nm ng nt五个数字样式、sb一次设置ub uk um ug ut五个单位样式、nb/nk/nm/ng/nt按 B/KB/MB/GB/TB 分级的数字颜色、ub/uk/um/ug/ut对应的单位颜色、df/ds设备主/次 ID。用户与组uu(你自己)、uR(root)、un(其他人)、gu(你所在的组)、gR(与 root 相关的组)、gn(你不在的组)。链接lc(硬链接数)、lm(至少两个硬链接的普通文件的链接数)。Gitga(新增)、gm(修改)、gd(删除)、gv(重命名)、gt(元数据变更)、gi(忽略)、gc(冲突)。Git 仓库状态Gm(主分支)、Go(其他分支)、Gc(干净)、Gd(脏)。UI 元素xx(标点/背景 UI)、da(日期)、in(inode)、bl(块数)、hd(表头)、lp(符号链接路径)、cc(文件名中的转义字符)、bO(损坏符号链接路径的覆盖样式)、sp(特殊文件)、mp(挂载点)、oc(八进制)。文件类型im(图片)、vi(视频)、mu(有损音乐)、lo(无损音乐)、cr(加密)、do(文档)、co(压缩)、tm(临时)、cm(编译产物)、bu(构建文件)、sc(源码)、ic(图标未设置时与文件名同色)。SELinux 安全上下文Sn(无上下文)、Su(SELinux user)、Sr(role)、St(type)、Sl(level)。BSD 文件标志ff。以上完整对应关系可在 src/theme/ui_styles.rs 的set_exa中逐一查到并且每一条都有对应单元测试验证src/theme/mod.rs例如exa_uu: ls , exa uu38;5;117断言user_you被设置为Fixed(117)。六、theme.yml声明式主题配置文件从 man/eza_colors-explanation.5.md 可知eza 支持通过theme.yml文件一次性声明上述所有样式及更多属性。配置文件查找路径设置EZA_CONFIG_DIR指定 eza 查找theme.yml的目录否则查找$XDG_CONFIG_HOME/eza/theme.yml文件名必须为theme.yml无论你指定哪个目录。源码层面默认路径由dirs::config_dir()拼接eza/theme.yml生成src/options/config.rs加载解析在ThemeConfig::to_theme()中完成打开文件并用serde_norwayYAML反序列化为UiStylesOverride再与默认UiStyles做“覆盖式”合并——未声明的字段保留默认值声明的字段替换默认值src/options/config.rs、src/options/config.rs。可用字段总览filekinds: normal directory symlink pipe block_device char_device socket special executable mount_point perms: user_read user_write user_execute_file user_execute_other group_read group_write group_execute other_read other_write other_execute special_user_file special_other attribute size: major minor number_byte number_kilo number_mega number_giga number_huge unit_byte unit_kilo unit_mega unit_giga unit_huge users: user_you user_root user_other group_yours group_other group_root links: normal multi_link_file git: new modified deleted renamed ignored conflicted git_repo: branch_main branch_other git_clean git_dirty security_context: none: selinux: colon user role typ range file_type: image video music crypto document compressed temp compiled build source punctuation: date: inode: blocks: header: octal: flags: control_char: broken_symlink: broken_path_overlay:每个字段可用的样式属性每个字段/子字段下都可以定义以下样式属性foreground: Blue background: null is_bold: false is_dimmed: false is_italic: false is_underline: false is_blink: false is_reverse: false is_hidden: false is_strikethrough: true prefix_with_reset: false颜色取值除Blue、Red、Green等命名色外还支持#rrggbb十六进制如#ff00ff、#rgb缩写、0–255 的 256 色编号如125、以及default/none。解析函数color_from_strsrc/options/config.rs对十六进制支持#ff00ff与#f0f两种形式数字字符串直接映射为Fixed(n)并有对应的单元测试src/options/config.rs。布尔属性别名fg/bg可分别作为foreground/background的别名bold/dimmed/italic/underline/blink/reverse/hidden/strikethrough/prefix_reset分别是各is_*字段的别名src/options/config.rs。完整示例file_type: image: foreground: Blue is_italic: true date: foreground: White security_context: selinux: role: is_hidden: true自定义图标filenames和extensions字段还可以定制图标icon glyph及其颜色filenames: # 只改图标字形 Cargo.toml: {icon: {glyph: }} Cargo.lock: {icon: {glyph: }} extensions: rs: { filename: {foreground: Red}, icon: {glyph: }}仓库自带的示例配置 docs/theme.yml 展示了更完整的用法不仅改了Cargo.toml/Cargo.lock的图标为 还把rs扩展名的文件名改为红色并配 图标同时为nix扩展名配置了 ❄ 图标和白色样式。实现层面图标与文件名样式由FileNameStyle { icon: OptionIconStyle, filename: OptionStyle }描述src/theme/ui_styles.rsIconStyle包含glyph: Optionchar与style: OptionStyle在style_override中按“文件名精确匹配 → 扩展名匹配”的顺序查找覆盖src/theme/mod.rs。使用 theme.yml 的注意事项并非所有字形都支持改颜色某些 Unicode 图标无法着色此时颜色属性不生效语法错误影响面大如果主题没有生效请先仔细检查 YAML 语法——一个语法问题可能导致多个属性同时失效文件名必须固定为theme.yml与所选目录无关。七、颜色输出的启用条件最后需要说明颜色在什么情况下会真正输出。UseColours有三种模式src/theme/mod.rsAlways即使输出不指向终端也显示颜色Automatic默认仅当 stdout 是终端时显示输出到管道时关闭避免干扰grep、more等程序Never即使输出到终端也不显示。to_theme()会在Never或Automatic且非 TTY 时退化为纯色输出UiStyles::plain()NoFileStyleWindows 旧版控制台无法启用 ANSI 时也会自动降级src/theme/mod.rs。因此在管道、脚本或 CI 环境中颜色定制不会污染文本输出。八、进一步阅读man/eza_colors.5.mdEZA_COLORS两位代码、ANSI 样式码的完整权威清单src/theme/default_theme.rs内置默认主题的完整颜色定义src/theme/ui_styles.rsUiStyles数据结构与set_ls/set_exa全部代码映射src/theme/lsc.rsLS_COLORS 字符串解析与 ANSI 码→样式转换src/options/config.rstheme.yml反序列化与覆盖合并逻辑src/info/filetype.rsBuild/Source/Compiled/Temp 等文件类型判定表docs/theme.yml官方示例主题文件。【免费下载链接】ezaA modern alternative to ls项目地址: https://gitcode.com/gh_mirrors/ez/eza创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

Floci 中的 AWS Control Tower 本地模拟:Landing Zone、Baseline 与 Control 全流程实战指南
Floci 中的 AWS Control Tower 本地模拟:Landing Zone、Baseline 与 Control 全流程实战指南

【免费下载链接】floci Light, fluffy, and always free - The AWS Local Emulator alternative 项目地址: https://gitcode.com/gh_mirrors/fl/floci 点击查看 免费下载 Floci 是一个本地运行的 AWS 服务模拟器(AWS Local Emulator alternative&#x… · 2026/9/20 23:50:14

深入解析 @tanstack/angular-table 的 TanStackTableHeader:基于 Angular DI 的表头上下文注入机制
深入解析 @tanstack/angular-table 的 TanStackTableHeader:基于 Angular DI 的表头上下文注入机制

前端UI组件 【免费下载链接】table 🤖 Headless UI for building powerful tables & datagrids for TS/JS - React-Table, Vue-Table, Solid-Table, Svelte-Table 项目地址: https://gitcode.com/gh_mirrors/ta/table 点击查看 免费下载 导读 本文… · 2026/9/20 23:50:14

Materials Studio到LAMMPS的data文件转换全指南
Materials Studio到LAMMPS的data文件转换全指南

1. 这不是“转换”,而是分子模拟工作流中关键的桥接环节 如果你刚在Materials Studio(MS)里搭好一个包含500个原子的有机-无机杂化钙钛矿模型,正准备扔进LAMMPS跑个200ps的NVT系综动力学,却卡在“怎么把MS导出的文件喂… · 2026/9/20 23:50:14

Artificial Analysis:GLM 5.3 Flash 智能指数与价格,TaoToken 怎么当默认供应商
Artificial Analysis:GLM 5.3 Flash 智能指数与价格,TaoToken 怎么当默认供应商

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/21 0:26:24

Grok 0.2.68 版本解析:MCP 服务器热更新、GROK_AGENT 环境变量与四项稳定性修复
Grok 0.2.68 版本解析:MCP 服务器热更新、GROK_AGENT 环境变量与四项稳定性修复

Grok 0.2.68 版本解析:MCP 服务器热更新、GROK_AGENT 环境变量与四项稳定性修复 【免费下载链接】grok-build SpaceXAIs coding agent harness and TUI. Fullscreen, mouse interactive, extensible. 项目地址: https://gitcode.com/gh_mirrors/gr/grok-build … · 2026/9/21 0:26:24

uni-app 模态弹窗 API 实战指南:showModal 与 hideModal 全平台详解
uni-app 模态弹窗 API 实战指南:showModal 与 hideModal 全平台详解

uni-app 模态弹窗 API 实战指南:showModal 与 hideModal 全平台详解 【免费下载链接】uni-app A cross-platform framework using Vue.js 项目地址: https://gitcode.com/gh_mirrors/un/uni-app 导读 本文围绕 uni-app 仓库中 docs/api/modal.md 文档&#… · 2026/9/21 0:26:24

Hermes 部署包跑通后,模型通道改 TaoToken 行不行?
Hermes 部署包跑通后,模型通道改 TaoToken 行不行?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/21 0:26:24

Compiler Explorer 赞助体系完全指南:sponsors.yaml 配置格式与赞助展示机制的源码级解析
Compiler Explorer 赞助体系完全指南:sponsors.yaml 配置格式与赞助展示机制的源码级解析

后端前端开发工具 【免费下载链接】compiler-explorer Run compilers interactively from your web browser and interact with the assembly 项目地址: https://gitcode.com/gh_mirrors/co/compiler-explorer 点击查看 免费下载 Compiler Explorer(在线… · 2026/9/21 0:26:24

群晖nas做网站服务器防黑指南保姆级建站教程
群晖nas做网站服务器防黑指南保姆级建站教程

群晖nas做网站服务器防黑指南保姆级建站教程 上周帮一个做独立站的朋友看网站,后台突然弹出一堆陌生IP在疯狂尝试登录,页面被替换成了博彩广告,SSL证书也报错了。他问我:“网站被黑挂马不知道怎么办?”别慌,这种事儿在中小站长里太常见了。很多人觉得用群晖NAS做内网穿透或者轻量级Web服务很香,成本低… · 2026/9/21 0:25:49

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化
Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡… · 2026/9/21 0:02:39

Word表格编号全攻略:从列表编号到题注交叉引用
Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技… · 2026/9/21 0:02:39

从第一个站到第二个站:独立开发者的静态网站选型与落地实践
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&… · 2026/9/20 0:00:41

Claude Code 按智谱AI指南装完,ANTHROPIC_BASE_URL 改走 TaoToken 兼容通道行不行
Claude Code 按智谱AI指南装完,ANTHROPIC_BASE_URL 改走 TaoToken 兼容通道行不行

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/21 0:00:18

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程
agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and … · 2026/9/21 0:00:18

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,… · 2026/9/21 0:00:18

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码