GNU/Linux >> Linux の 問題 >  >> Linux

少ないページャーをスクロール ホイールに反応させ、画面をクリアしないようにする方法

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 ページのみの場合でも出力を表示する方法は?


Linux
  1. Raspberry Pi 3 で画面を回転させる方法

  2. Linux で「screen」コマンドを使用する方法

  3. screen コマンドでスクロールバックをクリアするには?

  1. SVNパッチを作成して適用するには?

  2. スライススクリーン端末で上下にスクロールする方法

  3. Ubuntu 10.04でsudoセッションを数分ではなく1時間にするにはどうすればよいですか?

  1. インストールしたばかりのパッケージは正当ですか?そうでない場合はアンインストールする方法はありますか?

  2. IPとポート番号を表示するがホスト名とプロトコルは表示しないようにtcpdumpを作成する方法

  3. ファイルを変更不可にするにはどうすればよいですか?