端末サイズの変更に応じて、マニュアルページの形式を動的に上書きします。

端末サイズの変更に応じて、マニュアルページの形式を動的に上書きします。

私にとって一般的なワークフローは、端末でマニュアルページを開き、別の端末でテスト項目を開くことです。マニュアルページは、最初の端末の初期サイズにフォーマットされています。ウィンドウのサイズを変更したり、WMで自動的にサイズを変更したりすると、事前にフォーマットされたページの右側にスペースがあるか、改行が発生します。この時点で私は通常q(uit)と!!(run again)を実行します。これはページ内の私の場所を失います。

フォーマット処理は、CPU を大量に使用したり、端末のサイズを変更する古代のプロセスに由来するものでもあります。ページャはless端末のサイズ変更イベントに動的に反応するため、理論的には可能です。

私はマニュアルページをよく見て、ウェブを検索し、IRCに質問するなど、すべてを試しましたが、何も得られませんでした。

  • manユーティリティの内部または外部で再フォーマットを実行できますか?

  • ページサイズを動的に調整できるmanユーティリティのバージョンはありますか?

  • 書式設定/表示プロセスの特定の部分をカスタマイズして更新する方法はありますかSIGWINCH

ベストアンサー1

基本的な問題は、あるプログラムでフォーマットを実行し、別のプログラムでページングを実行することです。フォーマッタがウィンドウのサイズが変更されたことを知らせ、新しいウィンドウのサイズに応じてテキストのフォーマットを再指定した場合でも、新しいテキストをポケットベルにパイプするだけです。ページャは、新しいストリームのどの位置が現在表示されている古いストリームの位置に対応するかを判断できません。

必要なのは、再フォーマットできるポケットベルです。 @Robin Greenが言ったように、これはHTMLです。

HTMLを使用したいが端末で作業している場合は、man(1)出力をHTMLとして指定し、テキストモードのブラウザを呼び出して表示できます。

man -Hlynx man

これにより、man(1)Lynxテキストモードブラウザにマンページが表示されます。 Lynx はウィンドウのサイズ変更に直接反応しませんが、Ctrl-R を押すと、Lynx は新しいウィンドウのサイズに基づいてページを再レンダリングします。

私が知る限り、リンクとelinkという2つの異なるテキストモードブラウザがあります。これらとlynxを試して、どちらがマニュアルページナビゲーションに最高の経験を提供するかを決定できます。マニュアルページのカスタム設定を使用し、その特定の設定でブラウザを呼び出すスクリプトを呼び出すこともできます。

好みの man オプションをMANOPT環境変数に入れることができます。

$ export MANOPT=-Hlynx
$ export MANOPT=-Hmanlynx # provide your own wrapper to execute
                          # lynx with a different configuration.

groffHTMLを生成するには、このパッケージをインストールする必要がありますman

おすすめ記事