2行シェルプロンプトで `less -FX 'がうまく機能するようにする方法

2行シェルプロンプトで `less -FX 'がうまく機能するようにする方法

私のシェルプロンプトは2行の長さです(の高度なバージョンです[%n@%m %~]'$'\n''%#。$LESSをに設定しました。lessを-FX終了すると、画面の末尾に行が残り、プロンプトが2行の長さなので、より少ない出力が外側にスクロールされます。ターミナルウィンドウ。

むしろ出力の最後の行を失った後、最初の行を失いたいと思います。

この問題に対する解決策はありますか?

答え1

less出力の一番上の行は、一番下に1行を印刷して1行スクロールするため、一番上でスクロールします。それが\nあなたのヒントの内容です。

この問題を回避し、まだ2行がある場合はどうすればよいですか?

プロンプトの一部を作成できます。以上2行プロンプトを使用する代わりに、通常のコマンドラインを使用します。ある意味、これは通常の行であり、通常のプロンプト領域の外に印刷されます(カーソルを制御するために端末エスケープシーケンスが必要です)。

提案したように、less最後の出力行を上書きすると、このケースが処理されます。
ただし、他のコマンドの出力も上書きされます。それらの多くはこの行よりも多くの出力を持っていません。

したがって、ケースではない場合は、追加の改行文字を印刷するなど、2つのケースを明示的に処理する必要がありますless

確かに可能ですが、毎日利用できるほどスムーズに使用するには、多くの手動調整が必要です。

端末のスクロール領域を少なく変更するなど、他の可能な方法もありますが、これはより混乱します。

答え2

3年遅れているのは分かりますが、インターネット検索でここまで来たので共有しなければならないと思いました。

ファイルにページを付けるには:

(printf '\n'; cat file.txt) | less -FX

他のコマンド(git logなど)の出力にページを付けるには:

git log | (printf '\n'; cat) | less -FX

出力は空行で始まります。その後、lessを終了すると、対応する空行が消え、ファイルの最初の行だけが残ります。

私はそれをgit logエイリアスとして使用します。

関連情報