Emacs là một phần mềm rất có thể mở rộng. Nó có thể là trình soạn thảo văn bản của bạn, ứng dụng email khách và thậm chí là trình đọc USENET của bạn. Với Elfeed, bạn cũng có thể sử dụng Emacs làm trình đọc nguồn cấp dữ liệu RSS của mình.
Elfeed là gì?
Elfeed là một trình đọc nguồn cấp dữ liệu RSS nhẹ nhưng mạnh mẽ được viết cho Emacs. Nó sử dụng một hệ thống dựa trên thẻ đơn giản để sắp xếp các nguồn cấp dữ liệu RSS của bạn. Không chỉ vậy, nó còn đi kèm với hệ thống gắn thẻ “dựa trên móc” mạnh mẽ cho phép bạn tự động gắn thẻ các nguồn cấp dữ liệu dựa trên nội dung của chúng.
Điều này làm cho Elfeed hữu ích cho những người đang theo dõi nhiều nguồn cấp dữ liệu RSS và đang tìm cách tự động sắp xếp các nguồn cấp dữ liệu của họ.
Tại sao nên sử dụng Feedreader trong Emacs?
Emacs hoạt động dựa trên khái niệm về khả năng tương tác, vì Emacs lấy dữ liệu và cho phép nó được diễn giải theo nhiều cách khác nhau.
Mặc dù bạn có thể sử dụng Emacs để chỉnh sửa văn bản độc quyền, nhưng việc có thể truy cập email của bạn trong khi chỉnh sửa văn bản, chẳng hạn, có thể cho phép bạn sử dụng liền mạch văn bản bạn đang viết trong email bạn đang soạn.
Đây là lý do tại sao việc kết hợp trình đọc nguồn cấp dữ liệu RSS của bạn vào Emacs có thể hấp dẫn. Nó sẽ cho phép bạn sử dụng khả năng chỉnh sửa mạnh mẽ của Emacs để thao tác nguồn cấp dữ liệu của bạn và các chức năng khác trong Emacs.
Cài đặt Elfeed trên Emacs
Cài đặt Elfeed thực sự đơn giản. Nó có sẵn từ kho lưu trữ GNU ELPA, vì vậy bạn có thể truy cập nó mà không cần bất kỳ sửa đổi nào trong tệp init.el của bạn.
Để cài đặt Elfeed, nhấn Alt + X để hiển thị bộ đệm lệnh, sau đó nhập package-install
. Bạn phải cung cấp elfeed
làm tên gói và nhấn Enter . Emacs sẽ tải xuống mã nguồn của Elfeed và biên dịch nó ngay sau đó.
Thiết lập nguồn cấp dữ liệu RSS đầu tiên của bạn trong Emacs
Khi đã cài đặt, truy cập Elfeed bằng cách nhấn Alt + X và nhập elfeed
trong bộ đệm lệnh. Làm điều này sẽ tải một bộ đệm Elfeed trống.
Có hai cách để thêm nguồn cấp RSS vào Elfeed:
- Chỉnh sửa thủ công tệp init.el của bạn
- Không có Emacs
Thêm nguồn cấp RSS theo cách thủ công trong Elfeed
Bạn có thể dễ dàng điền Elfeed bằng cách thêm thủ công các URL nguồn cấp dữ liệu vào tệp init.el của mình, vì Elfeed có một biến “elfeed-feeds” mà nó theo dõi. Điều này cho Elfeed biết nguồn cấp dữ liệu nào cần tìm nạp và hiển thị trên màn hình tổng quan của nó.
Ví dụ:đây là một đoạn mã từ tệp init.el của tôi.
(setq elfeed-feeds '("https://feeds.maketecheasier.com/MakeTechEasier" "https://solar.lowtechmagazine.com/feeds/all-en.atom.xml" "https://old.reddit.com/r/f1technical.rss"))
Setq là một hàm Emacs đặt giá trị của một biến cụ thể. Trong trường hợp này, nó đang đặt biến elfeed-feeds với ba liên kết nguồn cấp dữ liệu làm giá trị.
Từ đó, Elfeed sẽ tự động thêm các liên kết đó vào cơ sở dữ liệu nội bộ của nó, sau đó tải vào lần tiếp theo bạn chạy chương trình.
Thêm nguồn cấp RSS trong Emacs
Một cách khác để đưa Elfeed vào là cung cấp cho nó các liên kết nguồn cấp dữ liệu trong khi nó đang chạy. Điều này cho phép bạn chủ động cập nhật danh sách nguồn cấp dữ liệu của mình bằng các liên kết RSS mà không cần tải lại Emac.
Để thực hiện việc này, hãy nhấn Alt + X để mở bộ đệm lệnh. Nhập elfeed-add-feed
và nhấn Enter . Elfeed sẽ yêu cầu bạn cung cấp URL của nguồn cấp dữ liệu mà bạn muốn tải.
Trong trường hợp của tôi, tôi đang cung cấp URL nguồn cấp dữ liệu của chúng tôi cho Elfeed để nhận được cập nhật hàng ngày về các bài báo công nghệ mới nhất.
Tôi sao chép URL nguồn cấp dữ liệu và nhấn Ctrl + Y trong lời nhắc URL để dán liên kết tới Emacs. Sau khi dán, tôi chỉ cần nhấn Enter để cam kết URL nguồn cấp dữ liệu cho Elfeed.
Cách tự động gắn thẻ và lọc nguồn cấp dữ liệu trong Emacs
Ngoài việc liệt kê và xem nguồn cấp RSS, Elfeed cũng có thể thực hiện một số chức năng cho phép bạn tinh chỉnh danh sách nguồn cấp dữ liệu của mình.
Một trong những chức năng gọn gàng đó là tự động gắn thẻ. Tính năng này cho phép bạn gắn thẻ ngay các mục RSS đến từ một nguồn cấp dữ liệu cụ thể.
Ví dụ:nếu bạn có nhiều nguồn cấp dữ liệu về một chủ đề nhất định, bạn có thể đặt sao cho tất cả chúng sẽ có cùng một thẻ, giúp bạn dễ dàng và trực quan sắp xếp thông qua nhiều nguồn cấp dữ liệu trong màn hình tóm tắt.
Để thực hiện việc này, hãy chỉnh sửa nguồn cấp RSS trong tệp init.el của bạn. Hãy xem ví dụ ngắn gọn này.
(setq elfeed-feeds '(("https://feeds.maketecheasier.com/MakeTechEasier" tech news) ("https://solar.lowtechmagazine.com/feeds/all-en.atom.xml" tech) ("https://old.reddit.com/r/f1technical.rss" tech f1)))
Để tự động gắn thẻ nguồn cấp dữ liệu RSS, bạn cần thực hiện hai điều đối với định dạng nguồn cấp dữ liệu mặc định của mình:
- Đặt liên kết nguồn cấp dữ liệu trong ngoặc đơn. Điều này cho
elfeed-feeds
rằng mục nhập cụ thể này trong biến có nhiều phần. - Cung cấp một từ sẽ hoạt động như thẻ của bạn cho liên kết cụ thể đó. Bạn có thể bao gồm nhiều thẻ miễn là bạn tách mỗi thẻ bằng một khoảng trắng.
Lọc Nguồn cấp RSS của bạn trong Elfeed
Các thẻ này hoạt động cùng với hệ thống lọc mạnh mẽ của Elfeed. Điều này cho phép bạn nhóm các nguồn cấp RSS của mình chỉ dựa trên các thẻ.
Ví dụ:nếu bạn có các nguồn cấp dữ liệu RSS được gắn thẻ là “tin tức”, “công nghệ tin tức” và “trò chơi tin tức”, Elfeed cho phép bạn nhóm tất cả chúng dưới thẻ “tin tức”.
Để lọc danh sách nguồn cấp dữ liệu của bạn, nhấn S khi đang ở trong Elfeed để hiển thị lời nhắc bộ lọc của Elfeed. Theo mặc định, lời nhắc có chứa nội dung sau:
@6-months-ago +unread
- Biểu tượng @ cho biết phạm vi ngày. Đây có thể là một ngày tuyệt đối chẳng hạn như “2022-02-22” hoặc một ngày tương đối chẳng hạn như “3 ngày trước”.
- Biểu tượng “+” là một toán tử thẻ yêu cầu Elfeed bao gồm tất cả các nguồn cấp dữ liệu có thẻ này một cách rõ ràng.
Với ý nghĩ đó, hãy xem xét nguồn cấp dữ liệu RSS sau đây.
[0](setq elfeed-feeds [1] '(("https://feeds.maketecheasier.com/MakeTechEasier" tech news) [2] ("https://solar.lowtechmagazine.com/feeds/all-en.atom.xml" tech) [3] ("https://old.reddit.com/r/f1technical.rss" tech f1) [4] ("https://www.autosport.com/rss/f1/photos/" f1) [5] ("https://www.philstar.com/rss/world" news)))
Để lọc thẻ “tech”, hãy nhập “+ tech” vào lời nhắc bộ lọc của Elfeed để hiển thị ba liên kết đầu tiên trong bộ đệm tóm tắt của Elfeed. Tuy nhiên, nếu bạn thêm “+ tin tức”, Elfeed sẽ hiển thị thẻ đầu tiên và thẻ thứ năm.
Biết được điều này, bạn có thể cụ thể hơn với logic lọc của mình. Ví dụ:nếu bạn muốn bao gồm tất cả các liên kết công nghệ nhưng không có "f1", bạn có thể nhập như sau:
+tech -f1
Cách tự động gắn thẻ nguồn cấp dữ liệu dựa trên URL
Một cách khác để tự động gắn thẻ các mục RSS trong Elfeed là sắp xếp chúng dựa trên URL. Điều này rất hữu ích nếu bạn đang sử dụng Elfeed để đăng ký các nguồn cấp RSS có cấu trúc URL tương tự.
Để làm điều đó, hãy sử dụng elfeed-new-entry-hook
của Elfeed . Đây là một hàm hook thực thi một lệnh tùy chỉnh dựa trên các điều kiện cụ thể. Hàm này sẽ chạy một lệnh tùy chỉnh mỗi khi một mục nhập được thêm vào bằng cách sử dụng elfeed-add-feed
lệnh.
Bạn có thể sử dụng elfeed-make-tagger
chức năng bên trong hook đó. Đây là một chức năng chung gắn thẻ các liên kết dựa trên các tùy chọn mà bạn đặt. Do đó, việc kết hợp hai chức năng để tạo tự động gắn thẻ có thể trông giống như sau:
(add-hook 'elfeed-new-entry-hook (elfeed-make-tagger :feed-url "medium\\.com" :add '(medium)))
Chức năng đó sẽ tự động gắn thẻ bất kỳ liên kết nào chứa slug “medium.com”.
Bạn cũng có thể cụ thể hơn với các tùy chọn mà bạn đã đặt với elfeed-make-tagger
. Ví dụ:bạn có thể vừa gắn thẻ nguồn cấp dữ liệu dựa trên URL vừa lọc ra các mục nhập cũ hơn ba tháng:
(add-hook 'elfeed-new-entry-hook (elfeed-make-tagger :feed-url "medium\\.com" :before "3 months ago" :add 'medium))
Cách tạo Màu và Phông chữ Tùy chỉnh cho Thẻ
Ngoài việc gắn thẻ tự động, bạn cũng có thể tùy chỉnh giao diện của Elfeed dựa trên thẻ mà nó đang xử lý. Điều này hữu ích nếu bạn muốn các nguồn cấp dữ liệu có một thẻ cụ thể trở nên nổi bật.
Để làm điều đó, bạn cần xác định lại elfeed-search-face-alist
hàm số. Đây là lệnh mà Elfeed sử dụng để thay đổi giao diện của bộ đệm tóm tắt. Do đó, để xác định lại chức năng này, bạn có thể sử dụng defface
và push
chức năng:
- Sự khó chịu chức năng tạo một “khuôn mặt” mới cho Emacs. “Khuôn mặt” là một tập hợp các giá trị có thể chứa cả phông chữ ký tự và màu nền.
- Sự thúc đẩy mặt khác, hàm thêm một định nghĩa vào một lệnh hiện có trong Emacs.
Với ý nghĩ đó, bạn có thể kết hợp các chức năng này để tạo ra một “khuôn mặt” tùy chỉnh cho Elfeed. Ví dụ:đây là một mặt tùy chỉnh làm nổi bật thẻ f1 bằng màu đỏ.
(defface elfeed-face-tag-f1 '((t :foreground "#f00")) "This is a custom font face for the F1 tag in Elfeed.") (push '(f1 elfeed-face-tag-f1) elfeed-search-face-alist)
Xin chúc mừng! Bây giờ bạn biết cách sử dụng Emacs làm trình đọc RSS với Elfeed. Hơn nữa, bây giờ bạn cũng có ý tưởng cơ bản về cách tùy chỉnh và tự động hóa Elfeed để phù hợp với nhu cầu của nguồn cấp dữ liệu RSS của bạn.
Nếu tất cả cuộc thảo luận này khiến bạn nghĩ về những gì bạn có thể làm được nhiều hơn với Emacs, bạn có thể xem bài viết của chúng tôi về các gói năng suất tốt nhất cho Emacs.
Câu hỏi thường gặp
1. Làm cách nào để xóa nguồn cấp dữ liệu trong Elfeed?
Bạn có thể xóa nguồn cấp dữ liệu theo hai cách:xóa mục nhập của nguồn cấp dữ liệu trong tệp init.el của mình hoặc sử dụng chức năng tùy chỉnh của Emacs để xóa nguồn cấp dữ liệu đó.
Đối với trước đây, việc xóa nguồn cấp dữ liệu chỉ là xóa URL nguồn cấp dữ liệu trong biến nguồn cấp dữ liệu của bạn. Tuy nhiên, đối với tùy chọn thứ hai, bạn cần nhấn Alt + X để mở bộ đệm lệnh. Từ đây, bạn cần nhập customize
. Thao tác này sẽ mở cửa sổ tùy chỉnh cho Emacs.
Từ đó, nhập elfeed-feeds
trong hộp tìm kiếm. Điều này sẽ chuyển tất cả các nguồn cấp dữ liệu mà bạn hiện đã đăng ký.
Điều này cho phép bạn xóa nguồn cấp dữ liệu bằng cách nhấp vào DEL các nút bên cạnh liên kết nguồn cấp dữ liệu. Sau khi hoàn tất, bạn có thể nhấp vào Áp dụng và Lưu bên dưới thanh tìm kiếm để cập nhật nguồn cấp dữ liệu của bạn.
2. Tôi có thể làm gì nếu tôi thêm tất cả các nguồn cấp dữ liệu của mình vào Elfeed và chúng không làm mới?
Elfeed không tự động làm mới các liên kết nguồn cấp dữ liệu cho bạn. Để tìm nạp các mục nhập mới nhất trong nguồn cấp dữ liệu của bạn, hãy nhấn Shift + G để bắt đầu cập nhật trên tất cả các nguồn cấp dữ liệu hiện đã đăng ký.
Hơn nữa, nếu bạn chỉ muốn cập nhật một nguồn cấp RSS cụ thể, hãy chạy elfeed-update-feed
chức năng.
3. Các thẻ tự động của tôi dường như không hoạt động. Làm cách nào để giải quyết vấn đề này?
Điều này rất có thể là do bạn có các thẻ xung đột cho cùng một nguồn cấp dữ liệu RSS. Điều đó có thể xảy ra nếu bạn đã bao gồm cùng một URL nguồn cấp dữ liệu trong cả nguồn cấp dữ liệu thủ công và tự động của mình.
Để giải quyết vấn đề này, bạn phải xóa mục nhập thủ công trong tệp init.el của mình hoặc mục nhập nguồn cấp dữ liệu tự động trong bộ đệm tùy chỉnh của Emacs.