- 1 课程回顾
- 2 RSS
- 3 elfeed 安装配置
- 4 通过 elfeed-goodies 给 elfeed 优化增强
- 5 elfeed 的使用
- 5.1 elfeed 基本快捷键
- 5.2 elfeed 搜索
- 5.3 阅读文章
- 6 结语
1 课程回顾 🔗
通过上节课,我们了解了如何在 Emacs 里处理邮件,利用 Emacs 和 notmuch 的强大的搜索和补全机制,极大的提升了我们处理邮件的效率。
今天我们学习如何在 Emacs 里看 RSS 新闻。
2 RSS 🔗
RSS 算是一个古老的产物了,从1999年诞生,最辉煌的时候应该是 Google Reader 的诞生,但自从 Google Reader 从2013年停止服务后,RSS 的地位一落千丈,加上智能手机的推广普及,鲜有人会在电脑端通过 RSS 来看新闻。
但 RSS 并没有死,还有不少忠实的用户,它的内容聚合能力、追更能力依然有其用武之地。我们在 Emacs 里也可以看 RSS。在 Emacs 里看 RSS 有很多方法,目前比较主流的有:
我推荐使用的是 elfeed
,下面将以 elfeed
为例来讲述如何在 Emacs 里看 RSS。
3 elfeed 安装配置 🔗
我们先来安装配置 elfeed
:
(use-package elfeed
:ensure t
:hook ((elfeed-new-entry . (lambda () (elfeed-make-tagger :feed-url "video" :add '(video))
(elfeed-make-tagger :entry-title "图卦" :add '(pic)))))
:bind (("\e\e n" . elfeed)
:map elfeed-search-mode-map
("g" . elfeed-update)
("G" . elfeed-search-update--force)
("o" . elfeed-default-browser-open)
:map elfeed-show-mode-map
("M-v" . scroll-down-command)
("j" . scroll-up-line)
("k" . scroll-down-line))
:config
(setq elfeed-db-directory "~/.elfeed")
;; capture template for elfeed
(with-eval-after-load 'org-capture
(add-to-list 'org-capture-templates '("r" "Elfeed RSS" entry (file+headline "capture.org" "Elfeed")
"* %:elfeed-entry-title :READ:\n%?\n%a"
:empty-lines-after 1
:prepend t))
(add-to-list 'org-capture-templates-contexts '("r" ((in-mode . "elfeed-show-mode")
(in-mode . "elfeed-search-mode")))))
;; ================================
;; open entry with browser
;; ================================
(defun elfeed-default-browser-open (&optional use-generic-p)
"open with default browser"
(interactive "P")
(let ((entries (elfeed-search-selected)))
(cl-loop for entry in entries
do (elfeed-untag entry 'unread)
when (elfeed-entry-link entry)
do (browse-url it))
(mapc #'elfeed-search-update-entry entries)
(unless (use-region-p) (forward-line))))
:custom
(elfeed-feeds '(
("https://planet.emacslife.com/atom.xml" emacs)
("http://www.dapenti.com/blog/rss2.asp?name=xilei" news)
("https://remacs.cc/index.xml" emacs product)
))
(elfeed-use-curl t)
(elfeed-curl-max-connections 10)
(elfeed-enclosure-default-dir "~/Downloads/")
(elfeed-search-filter "@4-months-ago +")
(elfeed-sort-order 'descending)
(elfeed-search-clipboard-type 'CLIPBOARD)
(elfeed-search-title-max-width 100)
(elfeed-search-title-min-width 30)
(elfeed-search-trailing-width 25)
(elfeed-show-truncate-long-urls t)
(elfeed-show-unique-buffers t)
(elfeed-search-date-format '("%F %R" 16 :left))
)
这里最重要的变量设置为 elfeed-feeds
,我们需要添加的所有 RSS 都需要配置在这个变量里,这里我添加了3个 RSS 作为例子(大家可以根据自己的需要添加 RSS 订阅):
- emacslife
- 喷嚏网
- 我的博客
安装配置完后,我们按下 ESC-ESC n
后,就可以打开 elfeed
了:
4 通过 elfeed-goodies 给 elfeed 优化增强 🔗
我们通过 elfeed-goodies 插件给 elfeed 进行优化增强:
(use-package elfeed-goodies
:ensure t
:hook (after-init . elfeed-goodies/setup)
:config
;; set elfeed show entry switch function
(setq elfeed-show-entry-switch #'elfeed-goodies/switch-pane) ; switch-to-buffer, pop-to-buffer
)
我们安装完这个插件后,再次打开 elfeed
,可以看到整个界面变得清爽紧凑,非常漂亮:
5 elfeed 的使用 🔗
5.1 elfeed 基本快捷键 🔗
按键 | 函数 | 含义 |
---|---|---|
s | elfeed-search-live-filter | 在当前列表搜索 |
c | elfeed-search-clear-filter | 清除当前搜索 |
+ | elfeed-search-tag-all | 给当前条目加上标签 |
- | elfeed-search-untag-all | 给当前条目去掉标签 |
p | previous-line | 上一行 |
n | next-line | 下一行 |
q | elfeed-search-quit-window | 退出窗口 |
g | elfeed-update | 刷新 |
o | elfeed-default-browser-open | 用默认浏览器打开 |
5.2 elfeed 搜索 🔗
仅仅显示最近半年没有读的文章:
@6-months-ago +unread
仅仅显示 linux
或 linus
相关的最近一年的文章:
linu[xs] @1-year-old
显示最近10条带有 youtube
标签的已读文章:
-unread +youtube #10
显示不包含 emacs
或 xemacs
的未读文章:
+unread !x?emacs
显示特定来自某个 feed 的标签为 emacs
的文章:
+emacs =http://exmaple.org/feed/
我们通过上面的例子可以看到, elfeed
的搜索和标签的理念,跟 notmuch
一脉相承,这也是我喜欢使用 elfeed
和 notmuch
的原因。
5.3 阅读文章 🔗
我们在 elfeed-search
界面,通过 n
和 p
选择需要看的文章,然后按回车就可以看具体内容了,还可以通过 C-x 1
来全窗口看文章。
我们可以在 elfeed-search
缓冲区,按 o
键使用默认的浏览器打开这篇文章:
6 结语 🔗
通过今天的课程,我们学习了如何在 Emacs 里看 RSS 文章,通过 elfeed
强大的标签和搜索机制,我们能快速定位我们感兴趣的文章进行阅读。
工具是死的,人是活的,尽管 Emacs 如此强大,但如果,我们仅仅是玩 Emacs 本身,而不是去阅读、去学习、去积累那就是本末倒置了。
这节课的配置文件的快照见:emacs-config-l22.org
你也可以在 这里 查看最新的配置文件。