惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
L
LangChain Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Blog — PlanetScale
Blog — PlanetScale
H
Hackread – Cybersecurity News, Data Breaches, AI and More
D
Docker
T
Tailwind CSS Blog
T
The Blog of Author Tim Ferriss
U
Unit 42
B
Blog
N
Netflix TechBlog - Medium
T
Threat Research - Cisco Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
O
OpenAI News
M
MIT News - Artificial intelligence
D
DataBreaches.Net
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
L
LINUX DO - 热门话题
C
CERT Recently Published Vulnerability Notes
V
Visual Studio Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
N
News and Events Feed by Topic
Vercel News
Vercel News
T
Tenable Blog
Security Latest
Security Latest
C
Check Point Blog
云风的 BLOG
云风的 BLOG
PCI Perspectives
PCI Perspectives
月光博客
月光博客
TaoSecurity Blog
TaoSecurity Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Project Zero
Project Zero
雷峰网
雷峰网
IT之家
IT之家
H
Hacker News: Front Page
Microsoft Security Blog
Microsoft Security Blog
B
Blog RSS Feed
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Last Week in AI
Last Week in AI
G
Google Developers Blog
Forbes - Security
Forbes - Security
The Register - Security
The Register - Security
Cyberwarzone
Cyberwarzone
小众软件
小众软件
Martin Fowler
Martin Fowler
K
Kaspersky official blog
P
Proofpoint News Feed
T
Threatpost
Google Online Security Blog
Google Online Security Blog
Microsoft Azure Blog
Microsoft Azure Blog

暗无天日

读:AI Agent 安全日志——从可见性与隐私的两难说起 - 暗无天日 AI写作的语言指纹——如何让文字不那么像机器 - 暗无天日 读:50 条 Claude Code 技巧——一个工程经理的六个月使用心得 读:AI 辅助开发为什么让 E2E 测试更有价值 - 暗无天日 读:在Emacs中使用Claude Code(Spacemacs适配版) - 暗无天日 Claude Code 背后的工程哲学——读 Agent Harness Engineering 读:Agent Harness Engineering——AI 智能体不只是模型,还有套件 - 暗无天日 browser-harness:让 AI 直接接管你的浏览器 - 暗无天日 读:Security-First CI/CD —— DevSecOps 自动化实践指南 TIL: 数字小键盘的小数点陷阱与行内算术求值 - 暗无天日 读:Immutability 不是万能药,它是一种权衡 - 暗无天日 Conducty:给 Claude Code 加上项目记忆和并行执行能力 - 暗无天日 读 — GitHub Trending 里的 Claude Code 技能包 读 — Prompt Caching 省钱指南 TIL: Emacs 中那些跟鼠标配合的冷门快捷键 - 暗无天日 读:Anvil——把 Emacs 变成 AI 的工具服务器 读:Emacs 代码折叠终极指南 - 暗无天日 读:Clojure 搭车客指南 - 暗无天日 git推送失败后恢复仓库损坏的完整记录 - 暗无天日 多智能体系统的两个有效模式——以及对 Claude Code 用户的启示 - 暗无天日 用 Org Babel 写 Literate 博文:扩展执行 + 定制导出 proced:Emacs 内置的进程查看器 - 暗无天日 从 proced 定制中学到的 Elisp 模式 读:让 Emacs proced 在 macOS 上显示 CPU 和内存 异步编程的函数着色税 - 暗无天日 链式调用的代价:JavaScript 和 Clojure 的共同教训 - 暗无天日 hyperfine:命令行基准测试工具 - 暗无天日 管道中的变量去哪了?——子 shell 作用域陷阱 - 暗无天日 开源包装器的信任陷阱:四个危险信号 - 暗无天日 程序员愿意为 AI 写文档,却不愿为同事写 - 暗无天日 mktemp: Shell 脚本中临时文件的安全陷阱与最佳实践 - 暗无天日 WSL9x —— 在 Windows 9x 里跑 Linux 内核 6.19 用 ox.el 做你想做的事 —— org-export 高级编程指南 读:Hot-wiring the Lisp Machine —— 用纯 Elisp 构建零依赖的 Org 静态站点生成器 Elisp 性能优化的六个实战教训 - 暗无天日 fcitx5 下 Emacs 无法切换输入法的排查 - 暗无天日 ERT 测试交互命令的三种方式 - 暗无天日 SEM Assistant: 当 Elisp 守护进程遇上 LLM 用 dmsg 给 Elisp 加上结构化调试日志 用 org-habit 追踪非每日习惯 - 暗无天日 Clojure X-Men:当编程语言特性变成超能力 - 暗无天日 TIL: 用 diff-hl 在 fringe 中显示 git 变更 读:llm-test —— 用 LLM agent 驱动 Emacs 测试 TIL: AI 时代的橡皮鸭调试 - 暗无天日 fcitx 启动后键盘输入卡顿的排查 - 暗无天日 TIL: 早期网页的图片热区导航 - 暗无天日 读 Seeing the Whole System 用 Emacs 自动生成每周链接推荐 - 暗无天日 读:ASCII control characters in my terminal 读 What to learn - 暗无天日 Lisp 的括号之痛——一个愚人节玩笑揭开的老伤疤 - 暗无天日 一本书该"线性读"还是"并行读" - 暗无天日 读 How to Monetize a Blog:一篇伪装成变现指南的讽刺文 Python Mock 第三方依赖的四种策略 - 暗无天日 Emacs Lisp 热重载实用指南 - 暗无天日 Prot 的 Emacs 配置哲学 - 暗无天日 TIL: 从直播对谈中学到的三个 Emacs 技巧 - 暗无天日 TIL: 自动使用项目虚拟环境的 Python - 暗无天日 TIL: 让 Help buffer 自动获得焦点 一条命令让本地开发用上 HTTPS —— slim 工具介绍 用 fsck 检查和修复 Linux 文件系统 排查Linux进程"卡死"实战:从strace到gdb全流程 - 暗无天日 PostgreSQL 索引:从基础到你可能不知道的高级用法 - 暗无天日 用 .pdbrc 自定义 Python 调试器 ANSI 转义码的标准化现状 - 暗无天日 终端程序的潜规则 - 暗无天日 PARA Org-mode 测试配置 - 暗无天日 AI越强越辣鸡?控制论说这是必然的 - 暗无天日 AI 越强越需要你盯着——反馈循环实操指南 - 暗无天日 你的AI代理正在偷你的密钥——四种你没想到的泄露通道 - 暗无天日 LLM 在 DevOps 中的三种角色 - 暗无天日 写作风格的反建议 - 暗无天日 反驳本质复杂性——Dan Luu 论为什么《没有银弹》错了 - 暗无天日 文件充满了危险——Dan Luu 谈文件系统的可靠性陷阱 - 暗无天日 AI 时代的 PARA 方法:用 Org-mode 和 AI 打造个人知识管理系统 Linux 数据去重学习笔记 - 暗无天日 创建跨平台 ZIP 文件的隐藏陷阱:Extra Field - 暗无天日 X11 Forwarding 排障指南 - 暗无天日 IP欺骗端口扫描:当别人冒充你去扫描别人 - 暗无天日 Linux 输入栈全景解析:从硬件按键到屏幕响应 - 暗无天日 Unix 系统中那些被埋没的配置开关——以 FontConfig 为例 - 暗无天日 在Linux上限制儿童使用电脑 - 暗无天日 GIF不仅仅是一种图片格式——用GIF流做些奇怪的事 - 暗无天日 Leiningen 学习笔记:Clojure 项目构建与管理从入门到实战配置 - 暗无天日 Google SRE Book 读书笔记 - 暗无天日 yes 管道 head 发生了什么 - 暗无天日 为什么 nohup 在 crontab 中不起作用 Bash中的Indirection与Nameref - 暗无天日 Linux PAM 简介 - 暗无天日 从Linux ISO文件启动计算机 - 暗无天日 用 Bash 打造一个Screen Locker 用GitHub Actions自动构建EGO博客 - 暗无天日 blocking I/O 的作用 - 暗无天日 mobileog 手机端同步提示Error:2 No such file 的解决方法 回收 WSL2 VHDX 文件占用空间 使用 org-mode columnview 生成任务列表 - 暗无天日 Emacs 作为 MPD 客户端 - 暗无天日 移动文件路径却不破坏org file link的方法 - 暗无天日 如何合理的导出help link 成HTML - 暗无天日 笑话理解之Biology - 暗无天日
Emacs buffer 导出:五种方案对比 - 暗无天日
2026-05-06 · via 暗无天日

想从 Emacs 里导出一段代码或者文档分享出去,有好几种路子。这篇文章从实际使用出发,比较五种常见做法。

方案一:buffer-to-pdf(所见即所得的 PDF)

这是 Protesilaos 在 2026 年 5 月新发布的包。思路很直接:你在 Emacs 里看到什么样,导出的 PDF 就是什么样,字体大小、主题配色、语法高亮原样保留。

安装配置:

(use-package buffer-to-pdf
  :ensure nil
  :init
  (unless (package-installed-p 'buffer-to-pdf)
    (package-vc-install "https://github.com/protesilaos/buffer-to-pdf.git"))
  :config
  (setq buffer-to-pdf-directory (expand-file-name "~/")))

使用方法:

在任意 buffer 中执行 =M-x buffer-to-pdf=,会提示选择纸张方向(portrait 或 landscape),然后自动生成 PDF。

原理和限制:

buffer-to-pdf 的底层用的是 Emacs 内置的 x-export-frames 函数。这个函数需要 Emacs 编译时带 Cairo 支持(在 Linux 上通常是 --with-cairo 编译选项)。如果你的 Emacs 没有 Cairo 支持,这个包就没法用。

它的做法是:临时创建一个干净的 frame(去掉菜单栏、工具栏、滚动条),把当前 buffer 放进去,用 x-export-frames 导出为 PDF,最后删掉临时 frame。源码里还处理了一些细节,比如隐藏光标、关闭行号和拼写检查。

适用场景: 需要保留完整视觉效果的文档分享,比如学术演示、带配色的代码截图。

局限: 必须有 Cairo 构建的 Emacs,而且只能在图形界面下使用(需要实际的 frame),终端模式下不行。

方案二:htmlize(代码片段变网页)

htmlize 是个老牌包,功能就一个:把 buffer 的语法高亮转成 HTML。font-lock 颜色、字体样式都会照搬到 HTML 里。

安装:

htmlize 在 MELPA 上,直接 M-x package-install RET htmlize RET 即可。

使用方法:

M-x htmlize-buffer      ;; 导出整个 buffer
M-x htmlize-region      ;; 导出选中区域
M-x htmlize-file        ;; 导出文件

生成的 HTML 自带内联 CSS,浏览器打开就能看到和 Emacs 里一样的配色。

优势: 不需要 Cairo,不需要图形界面,终端模式下也能用。输出是 HTML,通用性强,直接粘贴到博客、邮件、网页里都行。

局限: 输出是 HTML 不是 PDF,一定要 PDF 的话得额外转换(浏览器的打印功能就行)。另外 htmlize 只转文本内容和语法高亮,不会包含 mode line 之类的界面元素。

方案三:ps-print(Emacs 内置的打印方案)

ps-print 是 Emacs 自带的功能,不需要装任何包。它把 buffer 内容转为 PostScript,保留字体、颜色和下划线。

使用方法:

M-x ps-print-buffer-with-faces    ;; 导出整个 buffer(保留样式)
M-x ps-print-region-with-faces    ;; 导出选中区域(保留样式)

-with-faces 后缀的命令会保留语法高亮颜色,不带后缀的版本只输出纯黑白。

ps-print 输出的是 PostScript 文件,可以用 ps2pdf 转成 PDF。这个工具随 ghostscript 一起安装(Debian/Ubuntu 上 =sudo apt install ghostscript=):

ps2pdf output.ps output.pdf

优势: Emacs 内置,零依赖,终端和图形界面都能用。输出是矢量格式,打印效果好。

局限: PostScript 不常见,得额外转换一步。另外 ps-print 的中文支持需要额外配置:

(setq ps-multibyte-buffer 'non-latin-printer)

设完这个变量 ps-print 才能正确处理中文字符,但实际效果取决于系统字体和 ghostscript 版本,中文可能仍然乱码或缺字。如果中文输出有问题,建议直接换 htmlize 或 buffer-to-pdf。

方案四:org-export(Org 文档的专业导出)

如果你的内容本身就是 Org 格式的,org-export 可以直接导出为 PDF(通过 LaTeX)、HTML、ODT 等格式。

使用方法:

在 Org 文件中按 C-c C-e 打开导出菜单,然后选择:

C-c C-e l p    ;; 导出为 LaTeX 再转 PDF
C-c C-e h h    ;; 导出为 HTML

PDF 导出需要系统装 LaTeX 工具链(texlive 等)。

优势: 支持目录、交叉引用、脚注、数学公式等复杂文档结构,适合正式文档和报告。

局限: 只适用于 Org 文件,不是"所见即所得"。导出的 PDF 样式取决于 LaTeX 模板,和你在 Emacs 里看到的样子可能差很远。而且依赖 LaTeX 工具链,安装体积不小。

方案五:系统截图工具

最简单粗暴:直接用系统截图工具截 Emacs 窗口。Linux 上常用的有 flameshot、scrot、grim(Wayland)等。

flameshot gui

scrot -s screenshot.png

优势: 零配置,不需要任何 Emacs 包,截什么是什么。

局限: 输出是位图,分辨率固定,放大就糊。内容太长的话得截多张再拼接,而且截图会带上 Emacs 的窗口装饰和桌面背景,不够干净。

怎么选

场景 推荐方案 理由
分享一小段带语法高亮的代码 htmlize 输出 HTML,通用性强,不依赖图形界面
生成漂亮的代码截图用于演示 buffer-to-pdf 所见即所得,保留主题配色,输出矢量格式
打印正式文档 org-export 支持目录、脚注、数学公式等专业排版
快速截个图发群里 系统截图 最快最直接
没有 Cairo 的环境需要 PDF ps-print + ps2pdf 内置功能,不挑环境

有 Cairo 支持的 Emacs,buffer-to-pdf 是最方便的一键导出方案。经常分享代码片段的话,htmlize 更实用。Org 重度用户用 org-export 就够了,大部分需求都能覆盖。