Bashは最初の行を上書きします。 PS1 bashプロンプト

Bashは最初の行を上書きします。 PS1 bashプロンプト

私はbashでPS1とPROMPT_COMMANDを使ってzshスタイルに合ったプロンプトを生成しています。解決策があります。ほぼ働く

問題は、長い入力行を書くと、2番目の行が最初の行を上書きすることです。 3行目は新しい行に素敵に表示されます。

カーソルの移動によって一部の行カウンタが1ずつ減少することはありますか?それともこれは制限/バグですか?

簡単な例:

export PS1="prompt>\[\033[s\033[10C\]test\[\033[u\]"

印刷prompt>、位置を保存、左に10文字移動、印刷test、位置を復元します。

プロンプトは良く見え、2行以上のテキストを書くまで完璧に機能しました。

例 1、予想される動作:

------------------------------------
prompt>          test
prompt>ls        test
files...
prompt>1 2 3 4 5 6 7 8 9 10 11 12 13
14 15 16 17 18 19 20 21 22 23 24 25
26 27 28

例 2、現在の動作:

------------------------------------
prompt>          test
prompt>ls        test
files...
14 15 16 17 18 19 20 21 22 23 24 253
26 27 28

ベストアンサー1

ああ、もちろんです。テストは可視文字として扱うべきではなく、\[間に含める必要があります\]

実際のケース:

export PS1="prompt>\[\033[s\033[10Ctest\033[u\]"

その理由は、bash が test を見える文字で計算する場合、カーソル計算と現在行で使用可能な残りの文字が 4 文字 ("test" の長さ) だけずれた場合に去ったと仮定するためです。

おすすめ記事