2011-07-22 7 views

答えて

0

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

1

新しいノートパソコンで同じ問題が発生しました。私はCygwinを64ビットWindows 7で長時間使用していましたが、この問題を経験したことはありません。しかし、新しい新システム(64ビットWindows 7でも同じ)を使って同じCygwinを使って、LESS、MAN、VIMなどを終了するたびにスクリーンバッファをクリアしました。私はConEmu端末エミュレータ内でCygwinを使用しているので、私はConEmuを疑った。私はConEmuの作者と会話しました(そして、彼は本当に素晴らしい、フリーソフトウェアの模範的なサポートでした!)。そして、私たちはついにその原因を見つけました。

唯一の違い(またはわずかなものの1つ)が表示サイズにありました。古いラップトップは1366 x 768ピクセルの解像度を持ち、新しいラップトップは1920 x 1080を持っています。そして、私は端末ウィンドウ用に全画面を使用しています。実際には奇妙ですが、ターミナルウィンドウの高さがcca 62行より大きい場合、LESS、VIMなどを終了した後に画面バッファがクリアされます。CygwinがConEMuまたはplain cmd.exeの内部で実行されても問題ありません。 端末ウィンドウを小さくすると問題が解決しました。窓の高さ62行は私のためには良いと思われる。また、いくつかの高さの値があると、LESSプロセスがクラッシュすることがありました。

Cygwinの問題だと思われます。

全文を読むことができますhere

多分それは誰かを助けることができます。それを解決するのに本当に多くの時間がかかりました。解決策(またはむしろ回避策)はそんなに馬鹿です:)

2

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

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

これは、smcuprmcupterminfoのエントリで定義されている文字列を出力することで行います。

これらは、環境変数$TERMの値によって異なります。

これらの文字列印刷されていない場合、またはそれらがあなたの端末の状態を保存し、復元しません何かに設定されている場合は、lessは、あなたがしたいファイルの内容によって、画面上にあったものは何でも置き換えられます表示してから復元しないでください。 less-Xオプションを使用

the answer you acceptedにより示唆されるようにsmcuprmcup文字列印刷するlessないを伝えます - 私はあなたが解決しようとしている問題を引き起こすことが期待されます。

あなたは(あなたが終了したときにlessによって生成された出力が消えることを意味する)あなたの端末の状態を保存し、復元したい場合は、あなたがあなたの$TERM環境変数が適切smcuprmcup設定で何かに設定されていることを確認する必要があります。私はそれが通常xtermに設定することがわかります。

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

Dawid Ferenczy's answerは、問題の別の原因を示唆しています。私はこれまでに自分自身に打ち込んだことではありません。

(端末の状態を保存して復元するのが良いかどうかは、意見が大きく異なります)This blog entryは、非常に嫌いな人が書いています。個人的には、全画面コマンドを実行して、私が何か他のことをしている間に表示される出力です。別のウィンドウで起動します)

(元のポスターは約2年半でサイトに掲載されていないので、回答は他の人に役立つ可能性があります。)