Gnome ターミナルでは、`less` はターミナルの先頭ではなくカーソル位置でファイルを開きます。

Gnome ターミナルでは、`less` はターミナルの先頭ではなくカーソル位置でファイルを開きます。

でファイルを開こうとするとless、その内容は画面の上部からではなく、カーソルの位置から始まります。

スクリーンショット

これは gnome-terminal でのみ発生します。たとえば、Terminator ではすべて正常です。どうすれば修正できますか?

答え1

egmont が述べたように、lessカーソルを配置できるはずです。実際、そのための方法があります。manlessページによると:

オプションは環境変数「LESS」からも取得されます。たとえば、less が呼び出されるたびに「less -options ...」と入力するのを避けるために、csh に次のように指示します。

setenv LESS "-options"

またはshを使用する場合:

LESS="-options"; LESSをエクスポート

lessカーソルを上にして画面を再描画するには、

echo   'LESS="-c"; export LESS' >> ~/.bashrc

-c「画面をクリアする」オプションは、すべてのコマンドに自動的に追加されless、TTYでも機能し、画面をクリアしてカーソルの位置を変更します。

答え2

gnome-terminalterminatorどちらも端末エミュレーションにウィジェットを使用していますが、古い (gtk2 ベースの) ウィジェットを使用vteterminatorています。より正確には、バージョン 0.28.2 (Ubuntu 14.04 と 16.06 の両方)terminatorを使用するのに対し、 Ubuntu 14.04 ではバージョン 0.34.9、Ubuntu 16.04 ではバージョン 0.42.5 を使用します。vtegnome-terminalvte

ほとんどのソフトウェアと同様に、新しいバージョンはより安定し、機能が豊富で、バグが少なくなっています (ただし、新しいバグ、リグレッション、ユーザーが好まない変更などが時々紛れ込む可能性があります)。vteこの変更を含め、過去 3 年間で大量の変更 (修正) が行われました。

vtextermは、エミュレーション動作の参照として を使用することを目指しています(非常にまれに発生しますが、分岐する正当な理由がない限り)。 この場合、分岐する理由は見つかりませんでした (また、vte代替画面に切り替えたときにカーソル位置に関して期待どおりに動作しないという有効なバグレポートがあった可能性があります)。そのため、vteのように動作するように修正しましたxterm

言い換えると、Ubuntu 14.04 のgnome-terminal、および 14.04 と 16.04 の両方terminatorが壊れていました。正しい動作が によって定義されていると仮定しますxterm。はバージョンterminatorから大幅に遅れておりvte、最終的に gtk3 ベースのバージョンがリリースされたときに、この修正プログラム (および他の多くの修正プログラム) が提供されます。

の新しい動作が気に入らないのはわかりますless(実際、私も気に入らず、古い で偶然動作していた方法の方が好きですvte)。ただし、意図的に を壊して以前の動作を実現するのは絶対に間違ったアプローチですvte。代わりに、lessカーソルを画面の上部に配置できる必要があります。現在の動作が本当に気になる場合は、 に対してバグレポート/機能リクエストを提出することをお勧めしますless

関連情報