how-to-make-mouse-wheel-scroll-the-less-pager-using-bash-and-gnome-terminal のような答えについて知っています。これは、-X
を削除することです。 $ LESS環境変数からのフラグ。しかし、私はこれらの両方をしたいと思います:
-X
from $LESS
)-X
to $LESS
によって実行されます)。ケーキを持って食べられる方法はありますか?
Lessのソースコードをハッキングせずにはいられません。ちょっとした背景話:
Lessは、マウス(スクロールイベントを含む)をまったく処理できません。
ターミナルエミュレータは、いわゆる代替画面をサポートしています。これは、ほとんどのフルスクリーンアプリがその期間中切り替え(そして終了すると通常の画面に戻り、前のコンテンツが「復元」される)であり、スクロールバックバッファーがありません。 -X
が指定されていない限り、Lessもこの代替画面に切り替わります。
多くのターミナルエミュレータは、代替画面モードおよびで実行されているアプリケーションがマウスイベントに関心がない場合、スクロールを上に変換するのが理にかなっていることを理解しました。またはダウンキー押下イベント。これはハックであり、通常の画面(シェルプロンプトなどで何が起こるか想像してください)、またはアプリケーションがマウスを処理したい場合(確かに、実際のマウスイベントを確認する必要があります)のいずれかで有害です。ただし、デフォルトでは、less
を実行しているときは、これら2つのどちらも成り立たないため、このハックが開始されます(これをサポートし、\e[?1007h
と\e[?1007l
を介して有効になります。 )。スクロールイベントは、ターミナルエミュレータによって上下のキー押下に変換され、実際のキー押下と区別できません。マウスのスクロールイベントは受信しません。上下のキーが押されたことがわかります。
つまり、次のようになります。別の画面に切り替えると、端末のハックによってスクロールイベントがキー押下に変換され、終了すると通常の画面に戻ります。または、そうでない場合、スクロールイベントをキー押下に変換する魔法はあり得ず、スクロールイベントを理解しません。
では、何ができるでしょうか?さて、マウスサポートを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'
マウスホイールを使用して少ないページャーでスクロールすることは実際には不可能ですが、マウスホイールを使用してw3mページャーでコンテンツをスクロールすることは可能です。 w3mは「WWWの閲覧可能なポケットベルで、優れたテーブル/フレームサポート」であるため、コンソールWebブラウザとして使用することもできます。さらに、w3mをコンソールイメージビューアーとして使用することもできます(すべてのターミナルエミュレーターで機能するわけではありませんが、xtermではかなりうまく機能します)。 w3m "は、テーブル、フレーム、SSL接続、カラーおよびインライン画像"をサポートしています。とても便利なアプリ! スクリーンショット