EmacsをUSENETリーダーとして使用する方法(Gnus使用)

USENETは、分散型のグローバルメッセージングシステムです。100,000以上のグループがさまざまなトピックや専門分野について話し合っているため、USENETは特に興味のある読者にとって知識と議論の良いリポジトリと見なされています。
目次
- gnusとは?
- Emacsでニュースリーダーを使用する理由
- gnusのインストール
- USENETグループを読むためのgnusの設定
- 基本的な使用法
- よくある質問
こちらもお読みください: Emacsを使用してEMMSで音楽を再生する方法
gnusとは?
近年USENETが衰退しているにもかかわらず、まだそれを使用して議論を行い、ニュースを共有している人々がいます。現在のUSENETユーザーのほとんどは、Google Groupsのウェブサイトを介してネットワークに接続しています。しかし、Emacsを使用している場合、USENETニュースグループを通じてそれを見る方法があります。

Gnusは、ニュースグループを読むために設計されたEmacsパッケージです。これは、ニュースを読むのを簡単かつ便利にする多くの強力な機能を持つリッチなプログラムです。さらに、Emacs内にいることで、ユーザーは投稿内のテキストを簡単に操作し、Emacsシステムの他の部分と一緒に使用できます。
Emacsでニュースリーダーを使用する理由
Emacsは常に拡張性のキッチンシンクとして称賛されています。多くのパッケージや追加機能があるだけでなく、テキスト編集以外の基本機能を簡単に拡張できるからです。
Emacsは相互運用性のアイデアに基づいて動作します。このアイデアにより、Emacsはそのパッケージを使用して、テキストを作成し、さまざまな方法で変更できる完全な環境を形成できます。

たとえば、Emacsには独自のファイルマネージャーであるdiredが付属しています。これは、ディレクトリ構造を移動し、ファイルを開くことを可能にするシンプルなEmacsパッケージです。しかし、他のファイルマネージャーとは異なり、diredはその結果をテキストとして表示します。
もしあなたがOrg Modeを使用して日記をつけている場合、そのテキストをコピーしてdired内からOrgファイルにリンクを作成できます。

Emacsがパッケージのテキスト出力を別のパッケージの入力として使用できる能力により、gnusのようなニュースリーダーはEmacsエコシステムにとって非常に貴重です。
これにより、たとえば、ニュース投稿からテキストの一部をコピーし、そのテキストをOrg Modeに入れて日記のエントリ、アジェンダの投稿、またはアイデアのキャプチャとして追加できます。
こちらもお読みください: 生産性を向上させるための5つの便利なEmacsパッケージ
gnusのインストール
Gnusは、バージョン19.32以降のEmacsのすべてのデフォルトインストールに含まれています。最近のバージョンのEmacsを使用している場合、すでにgnusが含まれている可能性があります。

Alt + Xを押してgnusと入力することで、システムにgnusがインストールされているかどうかを確認できます。これにより、設定されていないbareなgnusのバージョンが読み込まれます。
USENETグループを読むためのgnusの設定
gnusの初期設定は比較的簡単です。init.elファイルにいくつかのオプションを設定するだけで、.newsrcファイルを作成できます。
.newsrcファイルは、ホームディレクトリにあるニュースグループリーダー用の標準ファイルです。その主な目的は、USENETサーバーで利用可能なすべてのグループと購読しているグループを記録することです。
さらに、.newsrcファイルは、すでに読んだすべての投稿を追跡する状態ファイルとしても機能します。

.newsrcファイルを作成するには、次のコマンドを実行します:
touch/home/$USER/.newsrcこちらもお読みください: LeafnodeをオフラインUSENETサーバーとして設定する方法
初期設定
完了したら、Emacsの設定ファイルであるinit.elファイルの設定を開始できます。デフォルトでは、このファイルは「/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」をサーバーとして指定しました。

こちらもお読みください: 8つの便利で興味深いBashプロンプト
リモートUSENET認証
重要な点として、認証を必要とするUSENETプロバイダーを使用している場合、authinfoファイルにアカウントの詳細を提供する必要があります。これは、gnusがUSENETサーバーの詳細やユーザー名、パスワードを読み取るファイルです。

これを作成するには、Ctrl + X、Ctrl + Fを押してEmacsに/home/$USER/.authinfoと入力します。このコマンドは、ホームディレクトリに.authinfoファイルを作成し、それをバッファ内で開きます。
.authinfoファイルの一般的な構文は次のようになります:
machine news.domain.name login yourusername force yes password yourpasswordgoeshere- machine変数は、異なるマシンまたはサーバーに接続していることを示します。
- domain名フィールドは、gnusに接続したいマシンのアドレスであることを伝えます。
- loginフィールドには、USENETアカウントのユーザー名を入力します。
- “force yes”オプションは、サーバーが認証を要求しなくてもgnusに認証を行うよう指示します。
- 最後に、password変数には、USENETアカウントのパスワードが含まれます。
ローカルUSENETサーバーの使用
さらに、gnusはローカルスプールファイルからもソースを取得できます。これは、新しいグループを自動的にローカルマシンにダウンロードするサービスがある場合に便利です。
そのためには、「gnus-select-method」関数内のnntp設定を変更する必要があります:
(setq gnus-select-method '(nnspool ""))ただし、LeafnodeをローカルUSENETサーバーとして使用している場合は、NNTPサーバーとして設定する必要があります。これは、Leafnodeが通常の「/var/spool/」ディレクトリではなく、USENETサーバーのように動作するためです。
同じマシンで実行されているLeafnodeサーバーを使用するには、次のように入力します:
(setq gnus-select-method '(nntp "localhost"))これが完了したら、Alt + xを押してコマンドバッファにgnusと入力してgnusを実行します。これにより、gnusが読み込まれ、リモートUSENETサーバーで利用可能なすべてのグループが取得されます。
こちらもお読みください: Linuxでルートパスワードをリセットする方法
基本的な使用法
gnusが読み込まれると、空白の画面が表示されます。これは、デフォルトではgnusが購読していないニュースグループと読んでいないニュースグループをすべて隠すためです。
Shift + 6を押すと、USENETサーバーで利用可能なすべてのニュースグループのリストを表示できます。これにより、私の場合はEternal Septemberから利用可能なすべてのニュースグループが表示されました。

USENETグループの購読
ここから、Uを押して特定のニュースグループに購読または購読解除できます。これにより、gnusを最初に起動したときにそのグループがランディング画面に表示されます。
たとえば、私はServer画面で「alt.religion.emacs」と「alt.folklore.computers」の両方に購読しました。gnusを再読み込みすると、これら2つのグループがメイン画面に表示され、ブラウズできるようになります。

こちらもお読みください: LinuxでSFTPサーバーを設定する方法
バッファの移動
そこから、Enterを押してニュースグループに入ります。Ctrl + NやCtrl + Pなどの標準のEmacs移動キーを使用して、グループ内のさまざまな投稿をスクロールします。

投稿を開くにはEnterまたはTabキーを押し、BackspaceやSpaceキーを使用して投稿内を上下にスクロールできます。
Emacsの検索機能(Ctrl + SおよびCtrl + R)を使用して、投稿を迅速に確認し、必要なものを見つけます。
USENET投稿への投稿と返信
ニュースグループ内で新しい投稿を作成するには、Aを押してメッセージエディタを表示し、投稿の詳細を記入します。

完了したら、Ctrl + Cを2回押して、その特定のニュースグループにメッセージを送信します。
ただし、グループ内の投稿に返信したい場合は、Shift + S、Shift + Fを押すことができます。これにより、「Followup」バッファが開始され、gnusが元の投稿を引用したメッセージエディタに移動します。

新しいメッセージを投稿するのと同様に、Ctrl + Cを2回押して、その投稿へのフォローアップを送信できます。
ヒント: Emacs内でメールを使用する方法を見つけてください。
スコアファイルを通じてフィルタリング
Gnusには、スコアファイルを使用した強力で使いやすいフィルタリングシステムもあります。これは、特定のパターンや基準に達したときに投稿が自動的に「削除」される通常のkillfileとは異なります。
スコアファイルは、ユーザーが特定の投稿の内部スコアを段階的に減少または増加させることを可能にし、gnusにどの投稿を優先し、どの投稿を隠すか、またはリモートサーバーから取得しないかを指示します。
フィルタリングの種類
さらに、gnusには機能豊富なフィルタリングシステムもあります。これにより、ユーザーは特定のフィルタのさまざまな部分を制御し、微調整できます。

たとえば、特定の投稿のスコアを下げたい場合は、それをハイライトしてLを押すことができます。これにより、コマンドバッファに小さなメニューが表示され、どの投稿のプロパティに基づいてスコアを設定するかを尋ねられます。
プロパティのリストは広範ですが、最も重要なものは次のとおりです:
- Aは著者の名前に対してスコアを設定します。
- Sは件名テキストに対してスコアを設定します。
- Lは行数に対してスコアを設定します。
- Bはテキストの本文に対してスコアを設定します。
私の場合、この投稿の著者に基づいてスコアを設定したいので、Aを押しました。
フィルタに一致させる方法
そこから、gnusはこのスコアで実装したい文字列一致の種類を尋ねます。正確、一部、あいまい、正規表現から選択できます:
- Exactは、テキストと一致させるために文字列全体を使用します。
- Substringは、テキストと一致させるために文字列の一部を使用します。これは、投稿が一致するために文字列全体を持つ必要がないことを意味します。
- Fuzzyは、ニュースグループの以前の投稿に基づいた予測モデルを使用します。これは、記号や数字を使用してテキストを隠すクリエイティブな投稿者に特に便利です。
- Regexpは、テキストをフィルタリングするためにより伝統的な正規表現を使用します。

私の場合、部分一致を選択したので、Sを押しました。
こちらもお読みください: Arch Linuxのための5つの優れたAURヘルパー
フィルタの期間
最後に、gnusはこのスコアを一時的、永続的、または即時にしたいかどうかを尋ねます。
- Temporaryは、スコアが設定された日付で期限切れになることを意味します。これは、特定の投稿や投稿者のスコアを一時的に下げたり増やしたりしたい場合に便利です。
- Permanentは、スコアが期限切れにならないことを意味します。これは、グループに侵入してくるスパマーをフィルタリングするのに便利です。
- Immediateは、gnusがスコアを現在のバッファに適用し、スコアファイルに追加しないことを意味します。これは、今すぐ投稿をフィルタリングしたいが、持続的にスコアを付けたくない場合に便利です。

私の場合、このフィルタを永続的にしたいので、Pを押しました。
おめでとうございます!これで、Emacsでgnusをニュースリーダーとして使用する基本的な理解が得られました。さらに、認証されたUSENETサーバーに接続する方法や、スコアファイルとフィルタリングを適切に利用する方法についても基本的なアイデアを持っています。
ただし、これらの話がEmacsについてもっと学びたいという興味を引いた場合は、Doom Emacsのインストール方法を学ぶべきです。
こちらもお読みください: Doom Emacsとは何か、そしてそれをインストールする方法
よくある質問
メッセージを書いたが、もう送信したくない。投稿やフォローアップをキャンセルするにはどうすればよいですか?
不明ですが、現在書いている投稿をキャンセルすることができるかもしれません。そのためには、Ctrl + C、Ctrl + Dを押すことができます。
gnusに複数のUSENETサーバーを追加することは可能ですか?
はい!init.elファイルに別の「gnus-select-method」変数を追加するだけです。
たとえば、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キーを押すことでアクセスできます。
ただし、これはこの1つの投稿のみを「ピン留め」することに注意してください。そのスレッド内の他のすべての返信はデフォルトでは表示されません。それを行うには、Shift + A、Shift + Tを押して、そのトピックの全スレッドを再構築します。