私は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" の長さ) だけずれた場合に去ったと仮定するためです。