less のソース コードをハッキングせずにはいられません。背景の話:
Less は、マウス (スクロール イベントを含む) をまったく処理できません。
端末エミュレータは、いわゆる代替画面をサポートしています。これは、ほとんどのフルスクリーン アプリがその期間中に切り替えるものであり (終了すると通常の画面に戻り、以前のコンテンツが「復元」されます)、スクロールバック バッファーはありません。 -X
でない限り、Less もこの代替画面に切り替わります
多くのターミナル エミュレーターは、代替画面モードのとき および 内部で実行されているアプリケーションはマウス イベントに関心がないため、スクロールを Up または Down キー押下イベントに変換することは理にかなっています。これはハックであり、通常の画面 (シェル プロンプトなどで何が起こるか想像してみてください)、またはアプリケーションがマウスを処理したい場合 (確かに、実際のマウス イベントを確認する必要があります) のいずれかで有害です。しかし、デフォルトでは、 less
を実行しているときは、これら 2 つのどちらも保持されないためです。 、このハックが始まります(ターミナルエミュレーターがそれをサポートし、\e[?1007h
を介して有効になっていることが条件です) 対 \e[?1007l
)。スクロール イベントは、ターミナル エミュレータによって Up キーと Down キーの押下に変換されますが、less では実際のキー押下と区別できません。マウス スクロール イベントは受け取りません。上下のキー押下を認識します。
つまり、代替画面に切り替えると、端末のハックがスクロールイベントをキープレスに変換し、終了すると通常の画面が復元されます。そうでない場合は、スクロール イベントをキー入力に変換する魔法は存在せず、スクロール イベントを理解できません。
では、何ができるでしょうか?それなら、less でマウス サポートを実装して、スクロール イベント自体を処理できるようにするか (デフォルト以外のクリックまたはコピー アンド ペースト動作を実行する)、または別の奇妙なハックを実装します。終了時に、通常の画面に戻った後、less
最後に、終了する前に表示されていたものを繰り返して、画面いっぱいのコンテンツを印刷できました。
実際には、基本的に次のように要約されます:申し訳ありませんが、忘れてください。
どうやら 530 未満またはそれ以降にアップグレードすると、必要な機能が得られます。
http://www.greenwoodsoftware.com/less/news.530.html
<ブロック引用>バージョン 487 とバージョン 530 の違いは次のとおりです:
-F を使用し、ファイルが 1 つの画面に収まる場合は、端末の初期化シーケンスを出力しません。
新しいバージョンの「少ない」PPA が見つからなかったため、ソース パックをダウンロードしてローカルでビルドし、インストールしてください。
git を次のように設定します:
git config --global core.pager 'less -F -S -R -i -+X'
詳細:「-X」を使用せずに「less -F」を使用し、1 ページのみの場合でも出力を表示する方法は?