svg-line:为 Emacs 打造更优状态栏
摘要
介绍 svg-line,这是一个 Emacs 包,利用 SVG 渲染在 mode-line、header-line、tab-bar 和 tab-line 上创建一致、多行且功能丰富的状态栏。
<p><a href="https://lobste.rs/s/bqjxzj/svg_line_better_status_bars_for_emacs">评论</a></p>
查看缓存全文
缓存时间: 2026/06/08 15:19
# svg-line:Emacs 中更好的状态栏
来源:https://www.chiply.dev/post-svg-line
Emacs 提供了四种状态栏:`mode-line`、`header-line`、`tab-bar` 和 `tab-line`(简称为 *-lines)。它们可以像动态的‘抬头显示器’一样提供重要的上下文信息,例如当前所在的缓冲区、活动的主模式,以及任何你能够定义的任意内容。
我在 Emacs 中大量使用这些 *-lines,并且将它们全部启用,但一直困扰我的是,在原生情况下,每个状态栏的行为都不同,而且各有独特的限制。例如,多行状态(在我的小笔记本电脑上是必须的)是可能的,但仅限于 `tab-bar`。右对齐在 `tab-bar` 中可以实现,但仅限最后一行,而且这种对齐功能只在 `tab-bar` 中可用。我可以在 `mode-line` 和 `header-line` 中显示来自 all-the-icons 的图标,但不能在 `tab-bar` 或 `tab-line` 中显示。等等……
我真正想要的是所有这些状态栏之间一致的行为和配置,并且我希望多行、对齐和图标功能在所有状态栏中都可用。事实证明,SVG(可缩放矢量图形 (https://en.wikipedia.org/wiki/SVG))是解决这个问题的关键。
受 Nicolas Rougier 的 dual-header gist (https://gist.github.com/rougier/8d5a712aa43e3cc69e7b0e325c84eab4) 的启发,我构建了 `svg-line`,它利用 Emacs 内置的 SVG 渲染支持来提供这种体验。起初,这种方法看起来像是一种黑客手法,或者说是在滥用 *-lines,忽略了内置状态栏的行为。但最终我保留了这个想法并创建了一个包,因为我真的惊讶于它的工作效果如此之好,感觉如此原生(见上面的截图和视频)。
请注意,即使你只使用 `mode-line`,`svg-line` 仍然有用——甚至可能更有用,因为单个状态栏需要自行渲染所有的指示器。
相似文章
markdown-svg-renderer
一个支持实时预览、表格和代码块格式化的 Markdown 渲染工具,并针对 SVG 代码块提供内联预览和标签式代码视图的特殊处理。
简洁美观的 Emacs 模式行:modusregel
一款名为 modusregel 的简洁美观的 Emacs 模式行,提供干净且可自定义的外观。
GGG – 使用 Guile Scheme 和 SXML 声明式生成 SVG 徽章
GGG 是一个使用 Guile Scheme 和 SXML 声明式生成 SVG 徽章的工具。
ServeurpersoCom 的 UI/svg 块渲染 · 拉取请求 #24080 · ggml-org/llama.cpp
针对 llama.cpp 的拉取请求 #24080 增加了 UI/svg 块渲染,增强了项目的界面能力。
@VincentLogic: 发现个科研绘图神器! nature-skills,用 matplotlib 就能画出 Nature 级别的图。多面板布局、配色、字体、排版都给你整得明明白白,直接输出可编辑的 SVG。 内置了 5 套 Nature 风格的示例模板,支持柱…
nature-skills 是一个基于 matplotlib 的科研绘图工具,内置 Nature 风格模板,支持多种图表类型并输出可编辑的 SVG 格式,旨在简化科研论文的图表制作流程。