面向产品经理的Emacs教程:22. 在Emacs里看RSS

· 1191字 · 3分钟

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

仅仅显示 linuxlinus 相关的最近一年的文章:

linu[xs] @1-year-old

显示最近10条带有 youtube 标签的已读文章:

-unread +youtube #10

显示不包含 emacsxemacs 的未读文章:

+unread !x?emacs

显示特定来自某个 feed 的标签为 emacs 的文章:

+emacs =http://exmaple.org/feed/

我们通过上面的例子可以看到, elfeed 的搜索和标签的理念,跟 notmuch 一脉相承,这也是我喜欢使用 elfeednotmuch 的原因。

5.3 阅读文章 🔗

我们在 elfeed-search 界面,通过 np 选择需要看的文章,然后按回车就可以看具体内容了,还可以通过 C-x 1 来全窗口看文章。

我们可以在 elfeed-search 缓冲区,按 o 键使用默认的浏览器打开这篇文章:

6 结语 🔗

通过今天的课程,我们学习了如何在 Emacs 里看 RSS 文章,通过 elfeed 强大的标签和搜索机制,我们能快速定位我们感兴趣的文章进行阅读。

工具是死的,人是活的,尽管 Emacs 如此强大,但如果,我们仅仅是玩 Emacs 本身,而不是去阅读、去学习、去积累那就是本末倒置了。

这节课的配置文件的快照见:emacs-config-l22.org

你也可以在 这里 查看最新的配置文件。