Emacs 就是我的浏览器
摘要
Joshua Blais 分享自己如何用 Emacs 内置的 EWW 替代主流浏览器,完成 85–90% 的日常上网需求,称此举干扰更少、信噪比更高。
<p><a href="https://lobste.rs/s/prquts/emacs_is_my_browser">评论</a></p>
查看缓存全文
缓存时间: 2026/04/21 12:51
# Emacs 就是我的浏览器 —— Joshua Blais 的宇宙
来源:https://joshblais.com/blog/emacs-as-my-browser

在我越来越想把 Emacs 当成唯一计算环境的执念里([视频](https://www.youtube.com/watch?v=n5VMWuxLi10)),我开始认真地在里面上网。以前我只把 EWW 当玩具,离“能用”差得远;结果用了几天,发现 85–90% 的场景它都能扛住——哪怕面对 JavaScript 乱飞的互联网废墟。
## 为什么?{#why}
我发现在现代浏览器(Chromium/Firefox)里太容易分神:无限推荐、 shiny 物件一个接一个,转眼一天就掉进了兔子洞。 Creativity 和 Depth 全被拖走。换成 EWW(或任意终端浏览器,非 Emacs 用户可用 [lynx](https://en.wikipedia.org/wiki/Lynx_(web_browser)) 或 [browsh](https://www.brow.sh/))后,这个问题瞬间消失。
此外,我坚信该尽快抛弃互联网的“第 8 层”——那些限制真实交流的平台前端(说的就是你,Discord)。我们把太多权力交给大平台,却一无所获,甚至很多人开始觉得[互联网已死](https://www.youtube.com/watch?v=A41zzxyVANo&pp=0gcJCdMKAYcqIYzv)。
互联网只是传输机制;看清这一点的人,反而觉得它[从未如此鲜活](https://joshblais.com/community/)。我真心推荐[像 1999 年那样上网](https://joshblais.com/using-the-internet-like-its-1999)。
连手机我也卸了 JS 前端,在 Termux 里跑 Emacs + eww,只有 5–10% 的场景才退回 Fennec:

这种用法信噪比极高,查资料、读文档、产出内容都更快。
## 我是怎么做的?{#how-i-am-doing-this}
给新手一句话:Emacs 自带 [EWW](https://www.gnu.org/software/emacs/manual/html_mono/eww.html)(Emacs Web Wowser),支持图片、GIF(GIF 好像绝迹了?)直接浏览。
我设了几个顺手键:`B` 后退,`U` 抓取光标下的链接,`R` 调用 `eww-readable`(类似 Firefox 的阅读模式),`&` 把当前页甩给系统浏览器,`D` 把图片下本地,`b` 回退,`a` 加书签……
PDF 在 Emacs 里用 pdf-tools 打开;`.mp4`、YouTube、Vimeo 等扔进 mpv;Gopher/Gemini 链接用 [Elpher](https://github.com/emacsmirror/elpher) 打开——它是“小网”版的 EWW,全是信号,没有噪音。
EWW 用 [Shr](https://github.com/emacs-mirror/emacs/blob/master/lisp/net/shr.el) 渲染 HTML,所以下面配置里会出现 shr 相关变量。
## 我的 browser.el 配置:{#my-browserel-setup}
```elisp
(setq eww-search-prefix "https://searx.labrynth.org/search?q=")
(setq eww-download-directory (expand-file-name "~/Downloads/"))
(defun my-browse-url-mpv (url &rest _args)
"用 mpv 打开 URL。"
(start-process "mpv" nil "mpv" url))
(defun my-browse-url-pdf (url &rest _args)
"下载远程 PDF 并在 Emacs 的 pdf-tools 中打开。"
(let ((tmp (make-temp-file "emacs-pdf-" nil ".pdf")))
(url-copy-file url tmp t)
(find-file-other-window tmp)
(pdf-view-mode)))
(setq browse-url-handlers
'(("\\(youtube\\.com\\|youtu\\.be\\|vimeo\\.com\\|twitch\\.tv\\)" . my-browse-url-mpv)
("\\.mp4$" . my-browse-url-mpv)
("\\.pdf$" . my-browse-url-pdf)
("^gemini://" . elpher-browse-url-elpher)
("^gopher://" . elpher-browse-url-elpher)
("." . eww-browse-url)))
;; 后备浏览器
(setq browse-url-secondary-browser-function 'browse-url-generic
browse-url-generic-program "chromium")
(with-eval-after-load 'eww
(define-key eww-mode-map (kbd "=") #'text-scale-increase)
(define-key eww-mode-map (kbd "-") #'text-scale-decrease)
(define-key eww-mode-map (kbd "0") #'text-scale-adjust))
(setq shr-width 100)
(setq shr-max-width 120)
(setq shr-indentation 4)
(setq shr-use-fonts nil)
(setq shr-max-image-size '(800 . 600))
(setq shr-image-animate t)
(defun my/eww-download-image-at-point ()
"把光标下的图片保存到 `eww-download-directory'。"
(interactive)
(let ((url (or (get-text-property (point) 'image-url)
(get-text-property (point) 'shr-url))))
(if (not url)
(message "No image at point")
(let* ((filename (file-name-nondirectory (url-filename (url-generic-parse-url url))))
(dest (expand-file-name filename eww-download-directory)))
(url-copy-file url dest t)
(message "Saved: %s" dest)))))
;; 快捷键
(with-eval-after-load 'eww
(define-key eww-mode-map (kbd "b") #'eww-back-url)
(define-key eww-mode-map (kbd "a") #'eww-add-bookmark)
(define-key eww-mode-map (kbd "U") #'shr-copy-url)
(define-key eww-mode-map (kbd "D") #'my/eww-download-image-at-point))
(provide 'browser)
```
默认搜索引擎是我自建的 [Searx 实例](https://github.com/searxng/searx-instances),聚合各家结果且尊重隐私。
## 局限性{#limitations}
别指望看 YouTube 视频或读 Tweet(x.com 对无 JS 浏览器充满敌意)。社交媒体、网银、政府表单、客户门户统统没戏。
适用场景:快速搜索、读文档、刷博客。真遇到渲染不了的,按 `&` 甩给 Chromium/Firefox 即可。
## 结语{#conclusion}
我把所有 `browse-url` 相关函数都改成默认走 EWW,于是每次上网都得先过 Emacs 这一关。只有实在不行了才上现代浏览器。能用 Emacs 搞定的事情之多,让我持续把它往“永久计算环境”的方向推进。
愿上帝保佑,下次再聊。
如果觉得有用,不妨[支持我](https://joshblais.com/support/)、[看看我的书](https://mountainthebook.com/)、[找我合作](https://joshblais.com/work-with-me),或[写邮件](mailto:[email protected])告诉我你的想法。
相似文章
我可以推荐 Emacs 的创新 UI——eww 吗?
文章推荐使用 Emacs 的 eww 网页浏览器,强调其缺少 JavaScript 的特性改善了许多网站的体验,并指出 Emacs 提供了独特的 UI 创新,如逐张图片调整大小和键盘导航。
还有人用 Emacs 吗?
作者对与 Emacs 数十年关系的个人反思,包括转向 VSCode 和 IntelliJ,最终因其独特功能回归 Emacs。
软件界的Emacs化
作者讲述了在终端中阅读 Markdown 的烦恼,并描述了如何使用 Claude 快速构建一个自定义的 macOS Markdown 查看器(MDV.app),展示了 AI 如何让人能够迅速创建个人软件工具。
Emacs 31 即将到来:我日常使用的变化
Emacs 31 即将到来,带来了更简单的 tree-sitter 配置和内置的 markdown-ts-mode 等改进。本文详细介绍了作者在开发分支中使用的一些特性,强调了配置工作量的减少。
我有了新的首选浏览器
David Pierce 宣布,Vivaldi 8.0 成为他的新默认浏览器,称其速度快、自定义选项丰富且设计更简洁。