2

'less'を実行すると、Cygwinターミナルで問題が発生します。「less」は正常に機能しますが、それを終了すると、端末のすべての画面バッファ履歴が失われます。助言がありますか?

WinXPでCygwinを実行しています。

4

3 に答える 3

2

として実行するか、環境変数をにless -X設定してみてください。LESS-X

于 2011-07-22T22:19:58.540 に答える
2

それはbashとは何の関係もありません。消去されるのは、ターミナルエミュレータによって表示されるテキストです。

他のフルスクリーンプログラムと同様lessに、起動時に端末の状態(表示されているテキストとカーソル位置を含む)を保存し、終了時に復元します。

これは、smcupおよびrmcup terminfoエントリで定義された文字列を出力することによって行われます。

$TERMこれらは環境変数の値に依存します。

これらの文字列印刷されない場合、または端末の状態を保存および復元しないように構成されている場合はless、画面に表示されていたものが表示したいファイルの内容に置き換えられ、復元されません。それ。

-Xオプションを使用すると(受け入れた回答lessで示唆されているように、文字列と文字列を印刷しないように指示されます。これにより、解決しようとしている問題が発生すると予想されます。less smcuprmcup

最終状態を保存して復元する場合(つまり、less終了するとによって生成される出力が消える)、$TERM環境変数が適切な設定で設定されていることを確認する必要がsmcupありrmcupます。xterm通常はに設定するとうまくいくと思います。

野心的な場合は、独自のterminfoエントリを作成し、ticコマンドを使用して、システムで使用されるバイナリ形式に「コンパイル」することができます。

Dawid Ferenczyの回答は、問題の別の考えられる原因を示唆しています。それは私が今までに遭遇したものではありません。

(端末の状態を保存して復元するのが良いかどうかについては意見が大きく異なります。このブログエントリは、それを強く嫌う人によって書かれました。個人的には気に入っています。全画面コマンドを実行して出力を表示したい場合は、他のことをしている間は、別のウィンドウで起動するだけです。)

(元のポスターは約2年半サイトに掲載されていないので、フィードバックを期待するべきではありませんが、これらの回答は他の人に役立つ可能性があります。)

于 2013-12-31T02:04:40.617 に答える
1

新しいラップトップでも同じ問題が発生しました。私は64ビットWindows7でCygwinを長い間使用してきましたが、この問題は発生しませんでした。しかし、新しい新しいシステム(64ビットWindows 7)では、LESS、MAN、VIMなどを終了するたびに、同じ構成の同じCygwinが画面バッファーをクリアしました。ConEmuターミナルエミュレータ内でCygwinを使用しているため、ConEmuを疑った。原因となる可能性のあるすべてのもの(環境変数、構成、ソフトウェアバージョンなど)を何時間も比較した後、ConEmuの作成者と会話しました(彼は本当に素晴らしく、自由ソフトウェアの模範的なサポートでした!)。そしてついに原因を突き止めました。

唯一の違い(またはいくつかの違いの1つ)は、ディスプレイのサイズにありました。古いラップトップの画面解像度は1366x768ピクセルですが、新しいラップトップの画面解像度は1920x1080です。画面全体をターミナルウィンドウに使用しています。本当に奇妙ですが、ターミナルウィンドウの高さがcca 62行を超える場合、LESS、VIMなどを終了した後に画面バッファーがクリアされます。CygwinがConEMu内で実行されているかプレーンcmd.exe内で実行されているかは関係ありません。ターミナルウィンドウを小さくすると、問題が解決しました。62行のウィンドウの高さは私にとっては問題ないようです。また、高さの値が大きくなると、LESSプロセスがクラッシュすることがありました。

Cygwinの問題のようです。

あなたがここで読むことができる全体の話。

多分それは誰かを助けることができます。それを解決するのに本当に長い時間がかかりました。解決策(またはむしろ回避策)はとてもばかげていますが:)

于 2013-12-31T01:48:24.843 に答える