端末プロンプトが正しくラップされません。

端末プロンプトが正しくラップされません。

問題があります。 bashに非常に長いコマンドを入力すると、端末は私が入力した内容を正しくレンダリングしません。次のようなコマンドがあればいいです。

username@someserver ~/somepath $ ssh -i /path/to/private/key
[email protected]

コマンドは2行にレンダリングする必要があります。代わりに、通常、次のようにプロンプ​​トの上部に書き込みを開始します。

[email protected] -i /path/to/private/key

戻っていくつかのパラメータを変更することにした場合、カーソルがどこに表示されるのかわかりません。時にはプロンプトの途中に表示されますが、通常は行に表示されます。以上私がこれを入力しているところ。

前のコマンドを実行すると、Upもっと面白いことが起こります。私はgnome-terminalとterminatorだけでなくi3とCinnamonでもこれを試しました。誰かがこれが私のヒントであることを提案し、ここにあります。

\[\033[01;32m\]\u:\[\033[01;34m\] \W\033[01;34m \$\[\033[00m\]

Ctrll, reset, ,clearやろうとするが,再び命令を入力してもUp同じ現象が発生します。

確認してみるとcheckwinsizebashで有効になっています。これは80x24やその他のウィンドウサイズで発生します。

これが私が一緒に暮らす方法を学んだのでしょうか?私が知る必要がある魔法はありますか?非常に短いプロンプトだけを使用することにしましたが、問題は解決しません。

ベストアンサー1

印刷できないシーケンスは次のようにする必要があります。に含まれてい\[ます\]。あなたを見ているPS1その後には閉じていないシーケンスがあります\W。ただし、2番目の項目は重複しており、前の文を繰り返します。「1;34」

\[\033[01;32m\]\u:\[\033[01;34m\] \W\033[01;34m \$\[\033[00m\]
                  |_____________|               |_|
                         |                       |
                         +--- Let this apply to this as well.

したがって、予想される色が必要です。

\[\033[1;32m\]\u:\[\033[1;34m\] \W \$\[\033[0m\]
                               |_____|
                                  |
                                  +---- Bold blue.

維持する「オリジナル」これはまた働きます:

\[\033[1;32m\]\u:\[\033[1;34m\] \W\[\033[1;34m\] \$\[\033[0m\]
                                  |_|         |_|
                                   |           |
                                   +-----------+-- Enclose in \[ \]

編集する:

この問題は、bashプロンプトが実際より長いと信じているために発生します。簡単な例を挙げると、次のようになります。

PS1="\033[0;34m$"
       1 2345678

プロンプトは1文字ではなく8文字と見なされます。したがって、ターミナルウィンドウに20個の列がある場合、12文字を入力した後は20文字と見なされ、ラップされます。バックスペースやCtrl+u。 9列で停止します。

ただし、最後の列以外の新しい行は開始されないため、最初の行は上書きされます。

入力し続けると、その行は32文字後に次の行に進みます。

おすすめ記事