Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Linux

Cách dùng Emacs làm trình đọc USENET với Gnus

USENET là hệ thống nhắn tin toàn cầu phi tập trung. Nó được coi là mạng xã hội toàn cầu đầu tiên với hơn 100.000 nhóm thảo luận về các chủ đề và chuyên môn khác nhau. Điều này làm USENET trở thành kho kiến thức và thảo luận tốt đặc biệt cho người đọc quan tâm.

Gnus là gì?

Dù USENET suy giảm gần đây, vẫn có người dùng nó lưu trữ thảo luận và chia sẻ tin tức. Hầu hết người dùng USENET ngày nay truy cập mạng qua trang web Google Groups. Nếu bạn dùng Emacs, tuy nhiên, có cách xem nhóm tin tức USENET qua nó.

Gnus là gói Emacs thiết kế đọc nhóm tin tức. Chương trình phong phú với nhiều tính năng mạnh mẽ làm cho việc đọc tin tức dễ dàng và tiện lợi. Hơn nữa, bên trong Emacs, người dùng dễ dàng thao tác văn bản trong bài đăng và dùng nó với phần còn lại của hệ thống Emacs.

Tại sao dùng trình đọc tin tức trong Emacs?

Emacs luôn được ca ngợi là "bồn rửa bát" của khả năng mở rộng. Không chỉ vì nó có nhiều gói và tính năng thêm, mà còn rất dễ mở rộng chức năng cơ bản của Emacs ra ngoài soạn thảo văn bản.

Emacs hoạt động dựa trên ý tưởng tương tác tương thích (interoperability). Ý tưởng này cho phép Emacs dùng các gói tạo thành môi trường hoàn chỉnh nơi bạn tạo văn bản và thay đổi nó theo nhiều cách khác nhau.

Ví dụ, Emacs có trình quản lý file riêng: dired, gói Emacs đơn giản cho phép duyệt cấu trúc thư mục và mở file. Tuy nhiên, khác với trình quản lý file khác, dired hiển thị kết quả dưới dạng văn bản.

Nếu bạn cũng dùng Org Mode viết nhật ký, bạn có thể sao chép văn bản đó và tạo liên kết phức tạp từ dired trong file Org.

Với khả năng Emacs dùng đầu ra văn bản của gói này làm đầu vào cho gói khác, trình đọc tin tức như gnus trở nên vô giá cho hệ sinh thái Emacs.

Điều này cho phép bạn, ví dụ, sao chép đoạn văn bản từ bài đăng tin tức, đưa vào Org Mode và thêm làm mục nhật ký, lịch trình, hoặc nắm bắt ý tưởng.

Cài đặt gnus

Gnus có sẵn trong mọi cài đặt Emacs mặc định từ phiên bản 19.32. Nếu dùng phiên bản Emacs gần đây, khả năng lớn đã có sẵn gnus.

Kiểm tra gnus đã cài chưa bằng Alt + X và gõ gnus. Sẽ tải phiên bản gnus trống, chưa cấu hình.

Thiết lập gnus đọc nhóm USENET

Thiết lập ban đầu cho gnus khá đơn giản. Chỉ cần đặt vài tùy chọn trong file init.el để tạo file .newsrc.

File .newsrc là file tiêu chuẩn cho trình đọc nhóm tin tức nằm trong thư mục home. Mục đích chính: ghi lại tất cả nhóm có sẵn và đã đăng ký trên máy chủ USENET.

Hơn nữa, file .newsrc cũng đóng vai trò file trạng thái theo dõi tất cả bài đăng bạn đã đọc.

Để tạo file .newsrc, chạy lệnh:

touch /home/$USER/.newsrc

Cấu hình ban đầu

Xong rồi, bắt đầu thiết lập file init.el - file cấu hình Emacs. Mặc định, file này ở "/home/$USER/.emacs.d/" hoặc "/home/$USER/.config/emacs".

Để khởi tạo gnus đúng cách, thêm các dòng sau vào file init.el:

(setq user-full-name "yourusername")
(setq user-mail-address "yourname@email.invalid")
(setq gnus-select-method '(nntp "news.eternal-september.org"))
  • user-full-name là tùy chọn chung đặt tên người dùng trong Emacs. Đây là tên gnus hiển thị trong tiêu đề "From" khi bạn gửi bài tin tức.
  • user-mail-address cũng là tùy chọn chung. Tương tự user-full-name, báo cho gnus hiển thị email này trong tiêu đề "From". Trong trường hợp tôi, dùng email không hợp lệ.
  • Tùy chọn cuối, gnus-select-method, là tùy chọn riêng gnus báo cho trình đọc tin tức dịch vụ và máy chủ nào kết nối. Trong trường hợp tôi, chọn dịch vụ nntp với "news.eternal-september.org" làm máy chủ.

Xác thực USENET từ xa

Điều quan trọng: nếu dùng nhà cung cấp USENET yêu cầu xác thực, cần cung cấp chi tiết tài khoản trong file authinfo. Đây là file gnus đọc chi tiết máy chủ USENET cũng như tên người dùng và mật khẩu.

Để tạo file, nhấn Ctrl + X, Ctrl + F và gõ /home/$USER/.authinfo trong Emacs. Lệnh này tạo file .authinfo trong thư mục home và mở trong bộ đệm.

Cú pháp chung file .authinfo trông như sau:

machine news.domain.name login yourusername force yes password yourpasswordgoeshere
  • Biến machine chỉ bạn kết nối đến máy/chủ máy khác.
  • Trường domain name báo cho gnus đây là địa chỉ máy bạn muốn kết nối.
  • Trường login đặt tên người dùng tài khoản USENET.
  • Tùy chọn "force yes" báo cho gnus xác thực bạn ngay cả khi máy chủ không yêu cầu.
  • Cuối cùng, biến password chứa mật khẩu tài khoản USENET.

Sử dụng máy chủ USENET cục bộ

Hơn nữa, gnus cũng lấy nguồn từ file spool cục bộ. Hữu ích nếu bạn có dịch vụ tự động tải nhóm tin tức về máy cục bộ.

Để làm vậy, thay đổi cài đặt nntp trong hàm "gnus-select-method":

(setq gnus-select-method '(nnspool ""))

Tuy nhiên, nếu dùng Leafnode làm máy chủ USENET cục bộ, cần thiết lập nó như máy chủ NNTP. Vì Leafnode hoạt động giống máy chủ USENET hơn là thư mục "/var/spool/" bình thường.

Để dùng máy chủ Leafnode chạy trên cùng máy, gõ:

(setq gnus-select-method '(nntp "localhost"))

Xong rồi, chạy gnus bằng Alt + x và gõ gnus trong bộ đệm lệnh. Sẽ tải gnus và lấy tất cả nhóm có sẵn trên máy chủ USENET từ xa.

Cách dùng cơ bản

Khi gnus tải, bạn chào đón bằng màn hình trống. Vì mặc định, gnus ẩn tất cả nhóm tin tức chưa đăng ký và đã đọc.

Xem danh sách tất cả nhóm tin tức có sẵn trên máy chủ USENET bằng Shift + 6. Sẽ hiện màn hình Server cho gnus. Trong trường hợp tôi, hiển thị tất cả nhóm có sẵn từ Eternal September.

Đăng ký nhóm USENET

Tại đây, nhấn U để đăng ký hoặc hủy đăng ký nhóm tin tức cụ thể. Điều này đưa nhóm đó vào màn hình đến khi khởi động gnus.

Ví dụ, tôi đăng ký "alt.religion.emacs" và "alt.folklore.computers" trong màn hình Server. Khi tải lại gnus, nó đưa hai nhóm đó vào màn hình chính để duyệt.

Di chuyển bộ đệm (Buffer Movement)

Từ đó, nhấn Enter vào nhóm tin tức, dùng phím di chuyển Emacs tiêu chuẩn như Ctrl + N và Ctrl + P cuộn qua các bài đăng khác nhau trong nhóm.

Cũng nhấn Enter hoặc Tab mở bài đăng, và Backspace và Space cuộn lên/xuống trong bài.

Dùng chức năng tìm kiếm Emacs (Ctrl + S và Ctrl + R) nhanh chóng lướt qua bài đăng tìm thứ muốn.

Đăng bài và trả lời bài USENET

Để tạo bài mới trong nhóm tin tức nhấn A mở trình soạn thảo tin nhắn điền chi tiết bài.

Nhấn Ctrl + C hai lần khi xong để gửi tin nhắn đến nhóm tin tức đó.

Nếu muốn trả lời bài trong nhóm, nhấn Shift + S, Shift + F. Sẽ khởi tạo bộ đệm "Followup" nơi gnus đưa bạn đến trình soạn thảo với bài gốc đã trích dẫn.

Tương tự đăng tin mới, nhấn Ctrl + C hai lần gửi followup cho bài đó.

Lọc qua Scorefiles

Gnus cũng có hệ thống lọc mạnh mẽ nhưng đơn giản dùng scorefiles. Khác với killfile thường nơi bài tự động "kill" khi trúng mẫu/tiêu chí.

Scorefiles cho phép người dùng tăng/giảm dần điểm nội bộ bài đăng cụ thể, báo cho gnus bài nào ưu tiên và bài nào ẩn hoặc không kéo từ máy chủ từ xa.

Các loại lọc

Hơn nữa, gnus cũng có hệ thống lọc giàu tính năng. Cho phép kiểm soát và tinh chỉnh các phần của bộ lọc cụ thể.

Ví dụ, nếu muốn giảm điểm bài cụ thể. Chỉ cần highlight nó và nhấn L. Sẽ hiện menu nhỏ trong bộ đệm lệnh hỏi thuộc tính nào của bài muốn làm cơ sở chấm điểm.

Danh sách thuộc tính rộng, nhưng quan trọng nhất:

  • A chấm điểm theo tên tác giả.
  • S chấm điểm theo văn bản chủ đề.
  • L chấm điểm theo số dòng.
  • B chấm điểm theo nội dung văn bản.

Trong trường hợp tôi, muốn chấm điểm dựa trên tác giả bài, nên nhấn A.

Phương pháp khớp bộ lọc

Từ đó, gnus hỏi loại khớp chuỗi muốn triển khai trong điểm này. Chọn từ exact, substring, fuzzy và regular expressions:

  • Exact dùng toàn bộ chuỗi khớp văn bản.
  • Substring dùng mảnh chuỗi khớp văn bản. Nghĩa là bài không cần khớp toàn bộ văn bản để trúng.
  • Fuzzy dùng mô hình dự báo dựa trên bài trước có sẵn cho nhóm tin tức. Hữu ích đặc biệt cho người đăng bài sáng tạo cố gắng tránh khớp substring bằng ký hiệu, số và bất kỳ hình thức che giấu văn bản.
  • Regexp dùng biểu thức chính quy truyền thống lọc văn bản.

Trong trường hợp tôi, chọn substring nên nhấn S.

Thời gian hiệu lực bộ lọc

Cuối cùng, gnus hỏi bạn muốn điểm này tạm thời, vĩnh viễn hay ngay lập tức.

  • Temporary nghĩa là điểm hết hạn ngày đặt trước. Hữu ích khi chỉ muốn giảm/tăng điểm bài hoặc người đăng cụ thể trong thời gian hạn chế.
  • Permanent nghĩa là điểm không hết hạn. Hữu ích lọc spammer có thể xông vào nhóm.
  • Immediate nghĩa là gnus áp dụng điểm cho bộ đệm hiện tại không thêm vào scorefile. Hữu ích nếu chỉ muốn lọc bài bây giờ nhưng không muốn chấm điểm liên tục.

Trong trường hợp tôi, muốn bộ lọc vĩnh viễn nên nhấn P.

Chúc mừng! Bây giờ bạn có hiểu cơ bản cách dùng gnus làm trình đọc tin tức trong Emacs. Hơn nữa, bạn cũng có ý tưởng cơ bản cách kết nối máy chủ USENET có xác thực cũng như dùng đúng scorefiles và lọc.

Tuy nhiên, nếu thảo luận này làm bạn quan tâm tìm hiểu thêm về Emacs, bạn nên học cách cài Doom Emacs.

Câu hỏi thường gặp

1. Tôi viết tin nhắn nhưng không muốn gửi nữa. Làm sao hủy bài hoặc followup?

Không biết chắc, nhưng có thể hủy bài hiện tại. Làm bằng Ctrl + C, Ctrl + D.

2. Có thể thêm nhiều máy chủ USENET trong gnus không?

Có! Chỉ cần thêm biến "gnus-select-method" khác trong file init.el.

Ví dụ, file init.el trông như sau:

(setq user-full-name "ramcesred")
(setq user-mail-address "ramcesred@email.invalid")
(setq gnus-select-method '(nntp "news.eternal-september.org"))
(setq gnus-select-method '(nntp "nntp.aioe.org"))
(setq gnus-select-method '(nntp "localhost"))

Xong, tải lại Emacs để tải lại cấu hình gnus.

3. Tôi đọc bài, giờ nó biến mất từ danh sách màn hình chính. Có thể ghim bài cụ thể khi đang theo dõi tích cực không?

Có! Làm bằng hàm gnus-summary-tick-article-forward. Truy cập hàm này bằng phím U khi bài đó được chọn.

Lưu ý quan trọng: chỉ "ghim"这一篇文章. Tất cả trả lời khác trong luồng đó không hiện mặc định. Để làm vậy, nhấn Shift + A, Shift + T tái tạo toàn bộ luồng cho chủ đề đó.