ARTICLE DETAIL

资讯详情

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

Delta 支持的编程语言与语法高亮主题:从查询、演示到自定义扩展

Delta 支持的编程语言与语法高亮主题:从查询、演示到自定义扩展 开发工具CLI【免费下载链接】deltaA syntax-highlighting pager for git, diff, grep, rg --json, and blame output项目地址https://gitcode.com/gh_mirrors/de/delta点击查看免费下载本篇指南围绕 Deltagit-delta的语法高亮能力展开你将掌握如何用内置子命令查询 Delta 支持的编程语言与配色主题、一键预览各主题下的真实 diff 渲染效果以及如何借助 bat 的自定义机制为 Delta 添加专属语言定义与主题并理解其底层加载原理与版本兼容约束。语言与主题从哪来Delta 与 bat 的关系Delta 本身不维护一份独立的语言语法库或主题库而是直接复用 batRust 版 cat带语法高亮的资产assets。这一点在 Delta 手册中写得很明确The languages and color themes that ship with delta are those that ship with bat.从源码也可以印证这一设计。在 src/utils/bat/assets.rs 中Delta 通过bat::assets::HighlightingAssets加载高亮资产pub fn load_highlighting_assets() - bat::assets::HighlightingAssets { bat::assets::HighlightingAssets::from_cache(utils::bat::dirs::PROJECT_DIRS.cache_dir()) .unwrap_or_else(|_| bat::assets::HighlightingAssets::from_binary()) }加载逻辑遵循“先缓存、后内置”的优先级优先从 bat 的缓存目录见 src/utils/bat/dirs.rs通常为~/.cache/bat读取若缓存不存在则回退到随二进制打包的内置资产。正因如此用户在 bat 中自定义的语言和主题Delta 能自动识别无需额外配置。查询支持的编程语言delta --list-languagesdelta --list-languages子命令会列出当前 Delta 可识别的全部编程语言及与其关联的文件扩展名。其实现位于 src/utils/bat/assets.rs 的list_languages函数遍历assets.get_syntaxes()得到全部语法定义过滤掉隐藏语法syntax.hidden以及没有任何文件扩展名的条目按语言名称大写形式排序保证输出稳定可读以表格形式打印语言名与逗号分隔的扩展名语言名使用绿色着色源码中通过ansi_term::Colour::Green着色。典型的输出片段形如Rust rs Python py, pyi, pyw, ... JavaScript js, jsx, mjs, cjs, ...该命令对应的 CLI 声明可参考 src/subcommands/mod.rs 中list_syntax_themes与show_syntax_themes等子命令模块的组织方式。查询支持的配色主题delta --list-syntax-themesdelta --list-syntax-themes用于列出所有可用的语法高亮主题其实现位于 src/subcommands/list_syntax_themes.rs。Delta 会按“浅色 / 深色”将主题分为两组输出判断依据是 src/options/theme.rs 中的is_light_syntax_theme函数主题名属于内置的浅色主题名单如GitHub、gruvbox-light、OneHalfLight、Solarized (light)等或主题名包含light字样在交互式终端stdout 是 tty中输出人类可读格式分为Light syntax themes:与Dark syntax themes:两组在非交互环境如管道、脚本中则以light\t主题名/dark\t主题名的制表符分隔格式输出便于机器解析输出末尾还会提示Use delta --show-syntax-themes to demo the themes.。内置的浅色主题名单src/options/theme.rs 的LIGHT_SYNTAX_THEMES包括 7 个Catppuccin Latte、GitHub、gruvbox-light、gruvbox-white、Monokai Extended Light、OneHalfLight、Solarized (light)。该模块对应的单元测试同文件的tests模块验证了人类可读输出中包含GitHub、Dracula等主题名机器格式输出为light\tGitHub、dark\tDracula。主题与深浅色模式的联动主题名并不只是颜色外观它还参与 Delta 的“浅色 / 深色模式”推断。在 src/options/theme.rs 中若用户指定了--syntax-theme而未指定--light/--dark则通过color_mode_from_syntax_theme从主题名推断颜色模式浅色主题 → Light否则 Dark若两者都未指定则默认使用深色主题Monokai Extended浅色模式下的默认主题为GitHubDEFAULT_DARK_SYNTAX_THEME/DEFAULT_LIGHT_SYNTAX_THEME主题名设置为none不区分大小写时将完全禁用语法高亮is_no_syntax_highlighting_syntax_theme_name。选择主题的完整优先级链get_color_mode_and_syntax_theme_name的 match 逻辑显式--light/--dark优先未指定模式时从主题名推断均未指定时回退到与终端背景匹配的默认主题。演示主题渲染效果delta --show-syntax-themesdelta --show-syntax-themes会在终端里用一段内置示例 diff逐一渲染所有与当前颜色模式匹配的主题让用户直观对比各主题的视觉效果。其实现位于 src/subcommands/show_syntax_themes.rs关键行为包括默认依次展示深色主题与浅色主题两轮效果若显式传入--dark或--light则只展示对应一组如果标准输入stdin有非空数据则用用户提供的内容作为演示素材否则使用内置的示例 diff一段将print_square改为print_cube的 Rust 代码 diff每个主题渲染前输出加粗的Syntax theme: 主题名标题随后调用核心的delta::delta(...)对示例输入进行实际渲染通过OutputType::from_mode使用QuitIfOneScreen分页模式——若渲染结果不足一屏则直接输出避免不必要的分页器调用。据此你可以用任意真实内容来预览主题例如git diff | delta --show-syntax-themes # 或使用自定义输入文件 delta --show-syntax-themes some.diff主题在配置中的使用方式Delta 的“主题”概念包含两层含义需要区分详见 manual/src/custom-themes.md语法主题syntax-theme控制前景文字的语法高亮配色对应--syntax-theme选项或BAT_THEME环境变量与 bat 的 theme 概念一致完整视觉主题Delta 中的 “theme” 实际是一组命名设置feature除语法主题外还包含背景色、装饰样式边框、上下划线等通过[delta xxx]特性节定义再用features引入。在 gitconfig 中直接设置语法主题[delta] syntax-theme gruvbox-dark通过features引入完整主题例如仓库 themes.gitconfig 中用户贡献的collared-trogon等主题[delta] features collared-trogon side-by-side true也可用DELTA_FEATURES环境变量临时叠加特性详见 manual/src/features-named-groups-of-settings.mdexport DELTA_FEATURESside-by-side # 临时启用 export DELTA_FEATURES # 还原关于颜色样式的完整语法如minus-style red bold ul #ffeeee这种“前景 修饰 背景”写法可参考 manual/src/choosing-colors-styles.md 及delta --help中的STYLES一节。添加自定义语言与主题若内置语言或主题不满足需求可以按 bat 的自定义流程扩展按 bat 文档操作遵循 bat 文档中“Customization”一节添加自定义语法/语言定义、添加自定义主题的指引将新的.sublime-syntax或.tmLanguage语法文件与.tmTheme主题文件放到 bat 的配置目录重建 bat 缓存执行bat cache --build将自定义资产编译进 bat 的缓存文件Delta 加载资产时优先读取该缓存见上文load_highlighting_assetsDelta 自动识别无需任何额外配置Delta 重启后即可在--list-languages、--list-syntax-themes与--show-syntax-themes中看到并应用这些自定义项。版本兼容务必匹配 bat 版本文档与安装手册manual/src/installation.md都强调运行bat cache --build时所安装 bat 的版本应与当前 Delta 发行版在 Cargo.toml 中声明的 bat 依赖版本保持一致。当前仓库的 Cargo.toml 声明bat { version 0.26.0, default-features false, features [ minimal-application, paging, regex-onig, ] }即当前版本对应 bat 0.26.0。存在已知问题bat v0.18.3 及更低版本与 Delta 不兼容可能引发内存错误参见官方 issue #1712。若同时使用 bat 与 delta务必用bat --version核对版本避免缓存文件格式不一致导致崩溃。小结查询delta --list-languages查看语言列表delta --list-syntax-themes查看浅色/深色主题列表演示delta --show-syntax-themes可选--light/--dark也可传入 stdin 内容逐主题预览渲染效果使用通过--syntax-theme、BAT_THEME或[delta]配置节指定语法主题通过features引入包含背景与装饰样式的完整视觉主题扩展遵循 bat 的自定义流程添加语言/主题运行bat cache --buildbat 版本需与 Delta 的 Cargo.toml 声明一致当前为 0.26.0且需高于 0.18.3后由 Delta 自动加载。相关源码与文档入口src/subcommands/list_syntax_themes.rs、src/subcommands/show_syntax_themes.rs、src/utils/bat/assets.rs、src/options/theme.rs、manual/src/custom-themes.md。赞分享开发工具CLI【免费下载链接】deltaA syntax-highlighting pager for git, diff, grep, rg --json, and blame output项目地址https://gitcode.com/gh_mirrors/de/delta点击查看免费下载相关推荐mdBook 代码高亮终极指南自定义语法主题和扩展语言支持mdBook 代码高亮终极指南自定义语法主题和扩展语言支持 mdBook 是一个用 Rust 实现的 Markdown 书籍生成工具它提供了强大的代码高亮功开发工具文档Tabby 终端完整上手指南如何用一款跨平台终端搞定本地 Shell、SSH 与串口调试Tabby 终端完整上手指南如何用一款跨平台终端搞定本地 Shell、SSH 与串口调试 Tabby原名 Terminus是一款面向现代开发者的跨平台终端桌面应用网络通信Codex Dream Skin常见问题解答新手必知的10个实用技巧Codex Dream Skin常见问题解答新手必知的10个实用技巧 Codex Dream Skin是一款为官方Codex桌面应用提供主题美化的工具它通过桌面应用上一篇FanControl终极中文设置5分钟让Windows风扇控制变中文下一篇G-Helper华硕笔记本控制工具5分钟从臃肿到轻量的完美替代方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表