Emacs 就是我的浏览器

Lobsters Hottest 工具

摘要

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 ![eww inside emacs](img) 在我越来越想把 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: ![phone screenshot](img) 这种用法信噪比极高,查资料、读文档、产出内容都更快。 ## 我是怎么做的?{#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 吗?

Lobsters Hottest

文章推荐使用 Emacs 的 eww 网页浏览器,强调其缺少 JavaScript 的特性改善了许多网站的体验,并指出 Emacs 提供了独特的 UI 创新,如逐张图片调整大小和键盘导航。

还有人用 Emacs 吗?

Lobsters Hottest

作者对与 Emacs 数十年关系的个人反思,包括转向 VSCode 和 IntelliJ,最终因其独特功能回归 Emacs。

软件界的Emacs化

Hacker News Top

作者讲述了在终端中阅读 Markdown 的烦恼,并描述了如何使用 Claude 快速构建一个自定义的 macOS Markdown 查看器(MDV.app),展示了 AI 如何让人能够迅速创建个人软件工具。

Emacs 31 即将到来:我日常使用的变化

Hacker News Top

Emacs 31 即将到来,带来了更简单的 tree-sitter 配置和内置的 markdown-ts-mode 等改进。本文详细介绍了作者在开发分支中使用的一些特性,强调了配置工作量的减少。

我有了新的首选浏览器

The Verge

David Pierce 宣布,Vivaldi 8.0 成为他的新默认浏览器,称其速度快、自定义选项丰富且设计更简洁。