BashはカスタムPS1プロンプトを使用すると最初の行を上書きします。

BashはカスタムPS1プロンプトを使用すると最初の行を上書きします。

私の問題は似ていますが、違います。この問題

.bashrc以下のようにカスタムPS1を作成しました。

STARTCOLOR='\e[0;36m';
ENDCOLOR="\e[0m"
export PS1="\n$STARTCOLOR\u@\h:\! <\t> \w\n\$ $ENDCOLOR"

次のようになります(もちろん色付き)。

tony@home:515 <17:04:52> ~/IdeaProjects/SomeProject
$ gedit ~/.bashrc

私のプロジェクトをリモートGitリポジトリに接続するときに初めてこの問題を発見しました。私は次のことを楽しみにしています(もちろん実際の店ではありません)。

$ git remote add origin https://[email protected]/tony/someproject.git

しかし、これが得られました(私のPS1の一部にも当てはまります):

project.gitte add origin https://[email protected]/tony/some

このように視覚的に奇妙であっても、コマンドはまだ機能します。

長すぎます。私のコマンドが1行より長い場合、2行目は最初の行を上書きします。どんなアイデアがありますか?

答え1

\[(リンクされた質問への回答で述べたように)は\]、カラーエスケープシーケンスを含む印刷できない文字で表示します。
これにより、bash新しい行に移動する必要がある文字数を計算した後、プロンプトの長さに含めることはできません。

STARTCOLOR='\e[0;36m'
ENDCOLOR="\e[0m"
export PS1="\n\[$STARTCOLOR\]\u@\h:\! <\t> \w\n\$ \[$ENDCOLOR\]"

関連情報