ヒント:スイッチコマンドによる行の削除[重複]

ヒント:スイッチコマンドによる行の削除[重複]

プロンプトを好きなように変更してみましたが、最後に入力したコマンドを切り替えると(キー矢印を使用)、プロンプトを含む行全体が削除され、最近入力したコマンドとともにプロンプ​​トの一部の文字だけが削除されることがあります。コマンドコマンドはまだ次のようになります。

予想出力:

bucky in [~]: cd ..

出力:

buccd ..

「buc」はプロンプトの一部であり、「cd ..」は私が入力した最新のコマンドです。

私のヒント:

PS1="\[\033[0;34m\u\] \[\033[0;37min\] \[\033[1;32m[\]\[\033[0;31m\w\]\[\033[1;32m]\]\[\033[0;37m:\] "

以下は視覚的なイメージです。

ここに画像の説明を入力してください。

必要に応じてUbuntu 16.04を使用してください。

答え1

これは、プロンプトの印刷部分\u in \w:エスケープされた角かっこ内にあるためです。括弧は通常、印刷されない文字の周りに配置され、 bash にカーソルを移動しないように指示して、プロンプトのサイズを正しく計算します。カーソルが印刷部分に正しく移動しません。

.bashrcプロンプトを上書きするのではなく、プロンプトを設定する部分を変更することをお勧めします...#この行のコメントを削除(削除)できます。

#force_color_prompt=yes

次に、このコードスニペットの2行目を修正します。

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

だからそれは言う:

PS1='${debian_chroot:+($debian_chroot)}\[\033[00;34m\]\u \[\033[0;37m\]in \[\033[01;32m\][\[\033[0;31m\]\w\[\033[1;32m\]]\[\033[0;37m\]: '

または、必要に応じてファイルの末尾にオーバーライドを追加するだけです。

PS1='\[\033[00;34m\]\u \[\033[0;37m\]in \[\033[01;32m\][\[\033[0;31m\]\w\[\033[1;32m\]]\[\033[0;37m\]: '

これはUbuntu 16.04であなたが欲しいと思うことを達成し、あなたが説明する方法を壊すことはありません。 (私はPS1をプレイしたときにこれを経験したことがあります!)

答え2

角かっこを間違って使用しました。

PS1="\[\033[0;34m\]\u \[\033[0;37m\]in \[\033[1;32m\][\[\033[0;31m\]\w\[\033[1;32m\]]\[\033[0;37m\]: "

答え3

あなたを混乱させるのは括弧です。特に、作業ディレクトリの先頭にエスケープされていない「[」があります。 "[\w" これを試してみてください:

PS1="\033[0;34m\u \033[1;32m\[[\033[0;31m\w\033[1;32m]\033[0;37m: "

私の端末で何をしたいのかを正確に実行します。

関連情報