Как использовать Emacs в качестве читателя USENET с Gnus

Usenet Emacs Gnus Reader

USENET — это децентрализованная глобальная система обмена сообщениями. Она считается первой глобальной социальной сетью с более чем 100 000 групп, обсуждающих различные темы и специализации. Это делает USENET особенно хорошим хранилищем знаний и обсуждений для заинтересованного читателя.

Содержание

  • Что такое gnus?
  • Почему использовать новостной клиент в Emacs?
  • Установка gnus
  • Настройка gnus для чтения групп USENET
  • Основное использование
  • Часто задаваемые вопросы

Также читайте: Как использовать Emacs для воспроизведения музыки с EMMS

Что такое gnus?

Несмотря на снижение популярности USENET в последние годы, все еще есть люди, которые используют его для обсуждений и обмена новостями. Большинство пользователей USENET в наши дни взаимодействуют с сетью через сайт Google Groups. Однако, если вы используете Emacs, есть способ просматривать группы новостей через него.

Gnus Reader 01 Newsgroup List

Gnus — это пакет Emacs, предназначенный для чтения групп новостей. Это мощная программа с множеством функций, которые делают чтение новостей простым и удобным. Кроме того, находясь внутри Emacs, пользователь может легко манипулировать текстом в постах и использовать это с остальной частью системы Emacs.

Почему использовать новостной клиент в Emacs?

Emacs всегда хвалили как “кухонную раковину” расширяемости. Не только потому, что у него много пакетов и дополнительных функций, но и потому, что очень легко расширить основные функции Emacs за пределами редактирования текста.

Emacs работает на основе идеи совместимости. Эта идея позволяет Emacs использовать свои пакеты для формирования полной среды, в которой вы можете создавать текст и изменять его различными способами.

Gnus Reader 02 Emacs Interoperability

Например, Emacs поставляется со своим собственным файловым менеджером: dired, простым пакетом Emacs, который позволяет вам перемещаться по структуре каталогов и открывать файлы. Однако, в отличие от других файловых менеджеров, dired отображает свои результаты в виде текста.

Если вы также используете Org Mode для ведения дневника, вы можете скопировать этот текст и создать сложные ссылки из dired в ваши Org файлы.

Gnus Reader 03 Dired

С возможностью Emacs использовать текстовый вывод одного пакета в качестве ввода в другом пакете, новостной клиент, такой как gnus, становится неоценимым для экосистемы Emacs.

Это позволяет вам, например, скопировать отрывок текста из новостного поста, затем поместить этот текст в Org Mode и добавить его в качестве записи в дневнике, поста в повестке или идеи.

Также читайте: 5 полезных пакетов Emacs для повышения продуктивности

Установка gnus

Gnus входит в каждую стандартную установку Emacs с версии 19.32. Если вы используете недавнюю версию Emacs, скорее всего, он уже установлен.

Gnus Reader 04 Built In Gnus

Вы можете проверить, установлен ли gnus в системе, нажав Alt + X и введя gnus. Это загрузит голую, неконфигурированную версию gnus.

Настройка gnus для чтения групп USENET

Начальная настройка gnus относительно проста. Вам нужно установить несколько параметров в вашем файле init.el, чтобы создать файл .newsrc.

Файл .newsrc — это стандартный файл для читателей групп новостей, расположенный в вашем домашнем каталоге. Его основное назначение — вести учет всех доступных и подписанных групп на сервере USENET.

Кроме того, файл .newsrc также служит файлом состояния, который отслеживает все посты, которые вы уже прочитали.

Gnus Reader 05 Usenet List Groups

Чтобы создать файл .newsrc, выполните следующую команду:

touch/home/$USER/.newsrc

Также читайте: Как настроить Leafnode в качестве оффлайн сервера USENET

Начальная конфигурация

После этого вы можете начать настраивать файл init.el, конфигурационный файл для Emacs. По умолчанию вы можете найти этот файл либо в “/home/$USER/.emacs.d/”, либо в “/home/$USER/.config/emacs.”

Чтобы правильно инициализировать gnus, вам нужно добавить следующие строки в файл init.el:

(setq user-full-name '"yourusername")  
(setq user-mail-address '"[email protected]")  
(setq gnus-select-method '(nntp "news.eternal-september.org"))
  • user-full-name — это общая опция, которая устанавливает ваше имя пользователя в Emacs. Это будет имя, которое gnus будет отображать в заголовке “From”, когда вы отправляете новостные посты.
  • user-mail-address — это также общая опция. Аналогично user-full-name, она указывает gnus отображать этот адрес электронной почты в заголовке “From”. В моем случае я использую недействительный адрес электронной почты.
  • Последняя опция, gnus-select-method, является специфичной для gnus опцией, которая указывает новостному клиенту, к какому сервису и серверу подключаться. В моем случае я выбрал сервис nntp с “news.eternal-september.org” в качестве моего сервера.

Gnus Reader 06 Emacs Init El

Также читайте: 8 полезных и интересных подсказок Bash

Удаленная аутентификация USENET

Важно отметить, что если вы используете провайдера USENET, который требует аутентификации, вам нужно предоставить данные вашей учетной записи в файле authinfo. Это файл, в котором gnus будет читать данные сервера USENET, а также ваше имя пользователя и пароль.

Gnus Reader 07 Emacs Authinfo

Чтобы создать его, вы можете нажать Ctrl + X, Ctrl + F и ввести /home/$USER/.authinfo в Emacs. Эта команда создаст файл .authinfo в вашем домашнем каталоге и откроет его в буфере.

Общая синтаксис файла .authinfo выглядит примерно так:

machine news.domain.name login yourusername force yes password yourpasswordgoeshere
  • Переменная machine указывает, что вы подключаетесь к другой машине или серверу.
  • Поле domain указывает gnus, что это адрес машины, к которой вы хотите подключиться.
  • Поле login — это место, где вы укажете имя пользователя вашей учетной записи USENET.
  • Опция “force yes” указывает gnus аутентифицировать вас, даже если сервер этого не требует.
  • Наконец, переменная password содержит пароль вашей учетной записи USENET.

Использование локальных серверов USENET

Кроме того, gnus также может получать свои источники из локального файла спула. Это полезно, если у вас есть сервис, который автоматически загружает ваши группы новостей на ваш локальный компьютер.

Для этого вам нужно изменить настройку nntp в функции “gnus-select-method”:

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

Однако, если вы используете Leafnode в качестве вашего локального сервера USENET, вам нужно настроить его как сервер NNTP. Это потому, что Leafnode ведет себя больше как сервер USENET, чем обычный каталог “/var/spool/”.

Чтобы использовать сервер Leafnode, который работает на той же машине, вы можете ввести следующее:

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

С этим завершено, запустите gnus, нажав Alt + x и введя gnus в командном буфере. Это загрузит gnus и получит все группы, доступные на вашем удаленном сервере USENET.

Также читайте: Как сбросить пароль root в Linux

Основное использование

Как только gnus загрузится, вы увидите пустой экран. Это потому, что по умолчанию gnus скрывает все группы новостей, на которые вы не подписаны и которые уже прочитали.

Вы можете просмотреть список всех групп новостей, доступных на сервере USENET, нажав Shift + 6. Это откроет экран сервера для gnus. В моем случае это открыло все доступные группы новостей из Eternal September.

Gnus Reader 08 Usenet Newsgroups

Подписка на группы USENET

Отсюда вы можете нажать U, чтобы подписаться или отписаться от определенной группы новостей. Это поместит эту группу на главный экран, когда вы впервые запускаете gnus.

Например, я подписался на обе группы “alt.religion.emacs” и “alt.folklore.computers” на экране сервера. После перезагрузки gnus, эти две группы появились на главном экране для просмотра.

Gnus Reader 09 Gnus Main Screen

Также читайте: Как настроить SFTP сервер на Linux

Перемещение по буферам

Отсюда нажмите Enter, чтобы войти в группу новостей, и используйте стандартные клавиши перемещения Emacs, такие как Ctrl + N и Ctrl + P, чтобы прокручивать различные посты в группе.

Gnus Reader 10 Alt Computers Folklore

Вы также можете нажать клавишу Enter или Tab, чтобы открыть пост, и клавиши Backspace и Space, чтобы прокручивать вверх и вниз внутри поста.

Используйте функцию поиска Emacs (Ctrl + S и Ctrl + R), чтобы быстро просмотреть посты и найти то, что вам нужно.

Публикация и ответ на посты USENET

Чтобы создать новый пост в группе новостей, нажмите A, чтобы открыть редактор сообщений, где вы можете написать детали вашего поста.

Gnus Reader 11 New Post

Нажмите Ctrl + C дважды, когда закончите, чтобы отправить сообщение в эту группу новостей.

Но если вы хотите ответить на пост в группе, вы можете нажать Shift + S, Shift + F. Это откроет буфер “Followup”, где gnus перенаправит вас в редактор сообщений с оригинальным постом, уже процитированным для вас.

Gnus Reader 12 New Followup

Аналогично публикации нового сообщения, вы можете нажать Ctrl + C дважды, чтобы отправить ответ на этот пост.

Совет: Узнайте, как вы можете использовать электронную почту в Emacs.

Фильтрация через scorefiles

Gnus также имеет мощную, но простую в использовании систему фильтрации, которая использует scorefiles. Это отличается от обычного killfile, где посты автоматически “убиваются”, когда они соответствуют определенному шаблону или критерию.

Scorefiles позволяют пользователю постепенно уменьшать или увеличивать внутренний балл конкретного поста, который говорит gnus, какие посты приоритизировать, а какие скрывать или не загружать с удаленного сервера.

Типы фильтрации

Кроме того, gnus также имеет богатую функциональность системы фильтрации. Она позволяет пользователю контролировать и точно настраивать различные части конкретного фильтра.

Gnus Reader 13 Filter Property 1

Например, если я хочу снизить балл конкретного поста, я могу просто выделить его и нажать L. Это откроет небольшое меню в командном буфере, которое спросит меня, по какому свойству поста я хочу установить балл.

Список свойств обширен, но наиболее важные из них:

  • A для оценки по имени автора.
  • S для оценки по тексту темы.
  • L для оценки по количеству строк.
  • B для оценки по содержимому текста.

В моем случае я хочу оценить этот пост по автору поста, поэтому я нажал A.

Методы сопоставления фильтра

После этого gnus спросит вас о том, какой тип сопоставления строк вы хотите реализовать в этом счете. Вы можете выбрать из точного, подстрочного, нечеткого и регулярных выражений:

  • Exact использует всю строку для сопоставления текста.
  • Substring использует части строки для сопоставления текста. Это означает, что пост не обязательно должен содержать весь текст, чтобы соответствовать.
  • Fuzzy использует предсказательную модель на основе предыдущих постов, доступных для группы новостей. Это особенно полезно для креативных авторов, которые пытаются обойти подстрочное сопоставление, используя символы, числа и любые формы сокрытия своего текста.
  • Regexp использует более традиционные регулярные выражения для фильтрации текста.

Gnus Reader 14 Filter Type

В моем случае я выбрал подстроку, поэтому нажал S.

Также читайте: 5 отличных помощников AUR для Arch Linux

Продолжительность фильтра

Наконец, gnus спросит вас, хотите ли вы, чтобы этот балл был временным, постоянным или немедленным.

  • Temporary означает, что балл истечет в установленную дату. Это полезно, когда вы просто хотите снизить или увеличить балл конкретного поста или автора на ограниченный период времени.
  • Permanent означает, что балл не истечет. Это полезно для фильтрации спамеров, которые могут ворваться в группу.
  • Immediate означает, что gnus применит балл к текущему буферу, не добавляя его в scorefile. Это полезно, если вы просто хотите отфильтровать посты сейчас, но не хотите постоянно их оценивать.

Gnus Reader 15 Filter Time

В моем случае я хотел, чтобы этот фильтр был постоянным, поэтому я нажал P.

Поздравляю! Теперь у вас есть базовое понимание того, как использовать gnus в качестве новостного клиента в Emacs. Кроме того, у вас также есть базовое представление о том, как подключиться к аутентифицированному серверу USENET, а также правильно использовать scorefiles и фильтрацию.

Однако, если все это заинтересовало вас в изучении Emacs, то вам следует узнать, как установить Doom Emacs.

Также читайте: Что такое Doom Emacs и как его установить

Часто задаваемые вопросы

Я написал сообщение и больше не хочу его отправлять. Как я могу отменить свой пост или ответ?

Это неизвестно, но, возможно, вы сможете отменить текущий пост, который вы пишете. Для этого вы можете нажать Ctrl + C, Ctrl + D.

Можно ли добавить несколько серверов USENET в gnus?

Да! Вам просто нужно добавить еще одну переменную “gnus-select-method” в ваш файл init.el.

Например, ваш файл init.el может выглядеть примерно так:

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

После этого просто перезагрузите Emacs, чтобы обновить вашу конфигурацию gnus.

Я прочитал статью, и теперь она исчезла из моего списка на главном экране. Могу ли я закрепить конкретный пост, когда активно его отслеживаю?

Да! Вы можете сделать это, используя функцию gnus-summary-tick-article-forward. Вы можете получить доступ к этой функции, нажав клавишу U, когда этот пост выбран.

Важно отметить, однако, что это “закрепит” только эту одну статью. Все другие ответы в этой теме по умолчанию не будут отображаться. Чтобы сделать это, нажмите Shift + A, Shift + T, чтобы восстановить всю тему для этой темы.