時々、端末画面がめちゃくちゃになり、man ls
でマンページを読むか、上矢印キーを押して履歴内の前のコマンドに移動すると、画面に適切な場所ではない文字が表示されます。 (たとえば、画面の終わりを画面の中央にあるものとして扱います)。
コマンドreset
が試行され、機能しません。機能する1つの方法は、ログアウトするかウィンドウを閉じ、最初にウィンドウのサイズを変更してからssh
を実行する(またはそのタブを閉じてウィンドウのサイズを変更し、新しいタブを開いて新しいシェルを取得する)です)。
しかし、この方法では、仮想マシンコンソールの起動など、以前に行った操作がすべて失われます。シェルを閉じない場合、この問題を修正する方法はありますか?
(これはFedoraの内部で、Macbook ssh
をRHEL 5.4ボックスに追加する前にも起こりました)。
pdate: Fedoraでどのように発生したかを覚えています。ターミナルを開いて、FreeVMで仮想マシンのコンソール(シェル)を使用しました。サイズは80 x 25だったと思いますが、しばらくしてターミナルのサイズを約130 x 50に変更すると、(VMの)「内部シェル」の動作がおかしくなりました)。
Bashを使用している場合は、「checkwinsize」オプションがセッションでアクティブになっているかどうかを確認します。
shopt | grep checkwinsize
あなたが得ないなら
checkwinsize on
次にそれをアクティブにします
shopt -s checkwinsize
Bashのドキュメントには「checkwinsize」属性が記載されています。
「設定されている場合、Bashは各コマンドの後にウィンドウサイズをチェックし、必要に応じてLINESおよびCOLUMNSの値を更新します。」
設定が気に入った場合は、~/.bashrc
でcheckwinsize
を有効にすることができます。
shopt -s checkwinsize
shopt -u checkwinsize
あなたが試すことができます Ctrl+L。プログラムに応じて、端末画面をクリアまたは再描画します。
これらのオプションをdocker execに追加すると問題が解決したようです
-e COLUMNS=$COLUMNS -e LINES=$LINES -e TERM=$TERM
同じ問題があり、bashがSIGWINCH
シグナルを受信しないと信じているため、上記のレシピはどれも機能しませんでした。これは、親プロセスによってトラップされます。
ようやく解決策を見つけました。 .bashrc
に追加しました:
export Prompt_COMMAND="resize &>/dev/null ; $Prompt_COMMAND"
これで、新しいプロンプトが表示されるたびに、ウィンドウが再調整されます。
Prompt_COMMANDを改善してくれた Kmonkey に感謝します。
MacOSでzshを使用しているときに、同じ問題に直面することがあります。 reset
コマンドを呼び出すだけで、ターミナルが再び好みに合わせて設定されます。
私はアルカディアンがすでに述べたことに追加したかっただけです。 checkwinsizeを有効にするとうまくいきますが、私にとっては、ウィンドウが適切に機能するようにウィンドウのサイズをリセットする必要がありました。 checkwinsizeはこれを排除するためのものだったと思いますが、それでも、試してみる価値はあります。このオプションの後に、ウィンドウのサイズを変更するか、最大化を解除して最大化してみてください。
私はあなたと同じ問題を抱えていましたが、これが私がしたことです:
ユーザーに.profile
設定があるので、ここですべての変更を行います。
xterm
というパッケージがあり、apt-get
から入手できます。yum
については知りません。しかし、インストール権限がないため、ソースからローカルインストールを実行しました。リンク: http://invisible-island.net/xterm/#download
./configure --prefix=/the/path/you/want/to/install/to
make
make install
パスをプロファイルにエクスポートし、同じ場所で呼び出しました
export PATH=$PATH:/the/path/you/want/to/install/to
resize
そのため、ログインするたびに、端末サイズがサイズ変更によってそれに応じて設定されます。
stty sane
をお試しください。それはあなたが必要なことをするはずです。
まあ、それは一般的な問題であり、簡単な解決策があるはずです。
Ctrl + A Ctrl + Lなどの他の方法が機能しない場合は、stty
を使用してみてください。
stty -a | grep rows
:行と列の数を取得します。speed 38400 baud; rows 33; columns 133; line = 0;
stty
の出力は異なるはずです。speed 38400 baud; rows 47; columns 177; line = 0;
stty rows N
およびstty columns N
ここで、Nは(実際の)数値(画面外)です。例:$ stty rows 33; stty columns 133
ターミネーターを使用する場合、最初の3つのステップは省略できます。上部に列と行の数が表示されるためです。
これを実行するためにターミナルウィンドウのサイズを変更する必要はありません。管理者は通常、異なるコンピューターからログインし、接続されているモニターのサイズ(解像度)が異なる場合、最大化されたウィンドウのサイズはコンピューターごとに異なります。これを頻繁に実行することは実際にはかなり困難です。
その結果、一部のmanページが正しく表示されないだけではありません。ページャーを使用するものはほとんど何でも-最初の数行が欠落していることがよくあります(たとえば)。そして、VIMがこのように整列されていない端子で使用されることを考えないでください。それを置き換えるために3行目(V)を強調表示したいのですが、そうすると、強調表示されたテキストは別の行。