web-dev-qa-db-ja.com

画面をクリアせずにスクロールホイールに反応するポケットベルを少なくする方法

how-to-make-mouse-wheel-scroll-the-less-pager-using-bash-and-gnome-terminal のような答えについて知っています。これは、-Xを削除することです。 $ LESS環境変数からのフラグ。しかし、私はこれらの両方をしたいと思います:

  1. (ターミナルウィンドウのスクロールバーをスクロールするのではなく)マウスホイールを使用してページャーをスクロールします(removing-X from $LESS
  2. 終了後もポケットベルのコンテンツを画面に残します(これは通常、adding-X to $LESSによって実行されます)。

ケーキを持って食べられる方法はありますか?

13
Kevin G.

Lessのソースコードをハッキングせずにはいられません。ちょっとした背景話:

Lessは、マウス(スクロールイベントを含む)をまったく処理できません。

ターミナルエミュレータは、いわゆる代替画面をサポートしています。これは、ほとんどのフルスクリーンアプリがその期間中切り替え(そして終了すると通常の画面に戻り、前のコンテンツが「復元」される)であり、スクロールバックバッファーがありません。 -Xが指定されていない限り、Lessもこの代替画面に切り替わります。

多くのターミナルエミュレータは、代替画面モードおよびで実行されているアプリケーションがマウスイベントに関心がない場合、スクロールを上に変換するのが理にかなっていることを理解しました。またはダウンキー押下イベント。これはハックであり、通常の画面(シェルプロンプトなどで何が起こるか想像してください)、またはアプリケーションがマウスを処理したい場合(確かに、実際のマウスイベントを確認する必要があります)のいずれかで有害です。ただし、デフォルトでは、lessを実行しているときは、これら2つのどちらも成り立たないため、このハックが開始されます(これをサポートし、\e[?1007h\e[?1007lを介して有効になります。 )。スクロールイベントは、ターミナルエミュレータによって上下のキー押下に変換され、実際のキー押下と区別できません。マウスのスクロールイベントは受信しません。上下のキーが押されたことがわかります。

つまり、次のようになります。別の画面に切り替えると、端末のハックによってスクロールイベントがキー押下に変換され、終了すると通常の画面に戻ります。または、そうでない場合、スクロールイベントをキー押下に変換する魔法はあり得ず、スクロールイベントを理解しません。

では、何ができるでしょうか?さて、マウスサポートをlessで実装し、スクロールイベント自体を処理するようにする(そしてデフォルト以外のクリックまたはコピーアンドペースト動作で動作させる)か、別の奇妙なハックを実装します。終了すると、通常の画面に戻った後、lessは、最後に画面一杯のコンテンツを印刷し、終了する前に表示されたものを繰り返すことができました。

実際には、基本的には次のようになります。申し訳ありませんが、忘れてください。

20
egmont

どうやら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ページしかない場合でも出力を表示する方法

0
Ted Feng

マウスホイールを使用して少ないページャーでスクロールすることは実際には不可能ですが、マウスホイールを使用してw3mページャーでコンテンツをスクロールすることは可能です。 w3mは「WWWの閲覧可能なポケットベルで、優れたテーブル/フレームサポート」であるため、コンソールWebブラウザとして使用することもできます。さらに、w3mをコンソールイメージビューアーとして使用することもできます(すべてのターミナルエミュレーターで機能するわけではありませんが、xtermではかなりうまく機能します)。 w3m "は、テーブル、フレーム、SSL接続、カラーおよびインライン画像"をサポートしています。とても便利なアプリ! スクリーンショット

0
ILUXA