为何我坚持用 Emacs 写博客
摘要
作者长期使用Emacs的Org mode写博客,尽管发布流程涉及超过两万行代码、难以理解和维护,他仍无法割舍。核心原因是Babel功能:它能在导出时自动运行嵌入的代码块,并将输出(包括表格和图片)直接展示在文档中。这种"可执行文档"的能力让文字、数据和可视化能同步迭代,极大提升写作效率。要用简单方案复刻这些功能,需要数月时间,因此作者选择接受复杂性,继续使用Emacs。
内容框架与概述
文章开篇表达了作者对简洁静态博客系统的羡慕。他相信自己能用两千行代码写出一个易懂、可扩展的博客引擎,但现实是他依赖Org mode的标准发布功能,而这套系统脆弱且难以理解——仅HTML导出、发布框架和解析代码就超过两万行。
转折出现在Babel功能的介绍。与普通轻量标记语言不同,Org通过Babel可以在导出时执行代码块,并将结果(包括表格和图像)嵌入最终文档。它支持会话机制、变量注入,还能生成内联样式实现语法高亮。作者主要用它配合R语言绘制图表,实现文字、数据和插图的同步调整。
文章结尾回归现实:编写简单博客引擎只需一个周末,但复刻Babel的核心功能则需数月。对于时间有限的作者而言,这不现实。他将继续使用这套"过度复杂"的工作流,并为此自我调侃。
核心概念及解读
Org/Babel:Emacs Org mode的扩展功能,能在文档导出时自动执行嵌入的代码块,并将运行结果(文本、表格、图像)直接渲染到输出文档中,实现"可执行文档"的效果。
可运行代码块(Executable Code Blocks):区别于静态代码展示,Babel支持在导出时真正运行代码,输出动态生成的内容。作者用此功能配合R语言同步生成数据可视化。
系统复杂性权衡:Emacs发布流程涉及两万多行代码,但其提供的功能无法被轻量方案简单替代。用户需在"理解系统"与"享受功能"之间做出取舍。
边界成本思维:看似简单的替代方案,若要复刻核心功能,所需投入往往远超预期。作者估算复刻Babel功能需要数月,因此理性选择是接受现状。
原文信息
| 字段 | 内容 |
|---|---|
| 原文 | Why I Keep Blogging With Emacs |
| 作者 | kqr |
| 发表日期 | 2025-10-02 |
此摘要卡片由 AI 自动生成