「less」を実行するとCygwin端末に問題が発生します。 'less'は正常に動作しますが、私がそれを出すと、端末のすべての画面バッファの履歴が失われます。助言がありますか?Cygwinの「less」コマンドでbashが画面バッファの履歴を忘れる
私はWinXPでCygwinを実行しています。
「less」を実行するとCygwin端末に問題が発生します。 'less'は正常に動作しますが、私がそれを出すと、端末のすべての画面バッファの履歴が失われます。助言がありますか?Cygwinの「less」コマンドでbashが画面バッファの履歴を忘れる
私はWinXPでCygwinを実行しています。
less -X
として実行するか、またはLESS
という環境変数を-X
に設定してください。
新しいノートパソコンで同じ問題が発生しました。私は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。
多分それは誰かを助けることができます。それを解決するのに本当に多くの時間がかかりました。解決策(またはむしろ回避策)はそんなに馬鹿です:)
これはbashとは関係ありません。消去されるのは、端末エミュレータによって表示されるテキストです。
他のフルスクリーンプログラムと同様に、less
は、起動時に端末状態(表示されたテキストとカーソル位置を含む)を保存し、終了時に復元します。
これは、smcup
とrmcup
terminfoのエントリで定義されている文字列を出力することで行います。
これらは、環境変数$TERM
の値によって異なります。
これらの文字列は印刷されていない場合、またはそれらがあなたの端末の状態を保存し、復元しません何かに設定されている場合は、less
は、あなたがしたいファイルの内容によって、画面上にあったものは何でも置き換えられます表示してから復元しないでください。 less
に-X
オプションを使用
(the answer you acceptedにより示唆されるようにsmcup
とrmcup
文字列印刷するless
ないを伝えます - 私はあなたが解決しようとしている問題を引き起こすことが期待されます。
あなたは(あなたが終了したときにless
によって生成された出力が消えることを意味する)あなたの端末の状態を保存し、復元したい場合は、あなたがあなたの$TERM
環境変数が適切smcup
とrmcup
設定で何かに設定されていることを確認する必要があります。私はそれが通常xterm
に設定することがわかります。
野心的な場合は、独自のterminfoエントリを作成し、tic
コマンドを使用して、システムで使用されているバイナリ形式にコンパイルすることができます。
Dawid Ferenczy's answerは、問題の別の原因を示唆しています。私はこれまでに自分自身に打ち込んだことではありません。
(端末の状態を保存して復元するのが良いかどうかは、意見が大きく異なります)This blog entryは、非常に嫌いな人が書いています。個人的には、全画面コマンドを実行して、私が何か他のことをしている間に表示される出力です。別のウィンドウで起動します)
(元のポスターは約2年半でサイトに掲載されていないので、回答は他の人に役立つ可能性があります。)