これは私のものです。.bash_profile
export CLICOLOR=1
export LSCOLORS=exfxcxdxbxegedabagacad
# define colors
C_DEFAULT="\[\033[m\]"
C_WHITE="\[\033[1m\]"
C_BLACK="\[\033[30m\]"
C_RED="\[\033[31m\]"
C_GREEN="\[\033[32m\]"
C_YELLOW="\[\033[33m\]"
C_BLUE="\[\033[34m\]"
C_PURPLE="\[\033[35m\]"
C_CYAN="\[\033[36m\]"
C_LIGHTGRAY="\[\033[37m\]"
C_DARKGRAY="\[\033[1;30m\]"
C_LIGHTRED="\[\033[1;31m\]"
C_LIGHTGREEN="\[\033[1;32m\]"
C_LIGHTYELLOW="\[\033[1;33m\]"
C_LIGHTBLUE="\[\033[1;34m\]"
C_LIGHTPURPLE="\[\033[1;35m\]"
C_LIGHTCYAN="\[\033[1;36m\]"
C_BG_BLACK="\[\033[40m\]"
C_BG_RED="\[\033[41m\]"
C_BG_GREEN="\[\033[42m\]"
C_BG_YELLOW="\[\033[43m\]"
C_BG_BLUE="\[\033[44m\]"
C_BG_PURPLE="\[\033[45m\]"
C_BG_CYAN="\[\033[46m\]"
C_BG_LIGHTGRAY="\[\033[47m\]"
# Prompt
if [ -f $(brew --prefix)/etc/bash_completion ]; then
. $(brew --prefix)/etc/bash_completion
fi
source $(brew --prefix)/etc/bash_completion.d/git-prompt.sh
GIT_PS1_SHOWDIRTYSTATE=true
# PS1="\h:\W \u\$(__git_ps1 \" (%s) \")\$"
PS1="$C_YELLOW\w $C_PURPLE\$(__git_ps1 \"(%s) \")$C_DEFAULT\n ☠️ "
長い行を入力/コピーして貼り付けると、新しい行に移動しません。代わりに既存の項目を上書きします。最初に戻っても、すべての文字が削除されるわけではありません。
他の答えのいくつかを見てみると、すべての梱包が問題である可能性があると提案しましたが、すべてが正しく梱包されていると思いますか?
答え1
**クリストファーの答えで問題が解決しない場合...
すべて\[
エスケープコードはとで囲む必要があります\]
。 1つまたは一致しないペアを見逃すと、今見ているような問題が発生する可能性があります。内容が何であるかわからない__git_ps1
ので、何が間違っているのかを言うのは難しいです。
それでも問題が解決しない場合は、ここにいくつかの「デバッグのヒント」があります。 :)プロンプトをテキストファイルにダンプしてから実行すると、これを行うことができますvi
。これにより、何もレンダリングされずに実際の文字を表示できます(echo $PS1
たとえば、コマンドラインで実行するものと比較)。
echo $PS1 > ps1
vi ps1
コードが多い場合は、:%s/\\[//n
括弧の数が一致するかどうかを入力して確認してください:%s/\\]//n
。これにより、エスケープされた角かっこを開閉する回数が提供されます。少なくとも2つの数が等しいことを確認して、ペアのない角括弧を除外できます。 (私はかなり複雑なプロンプトを持っていて、不一致エラーのために何度も困難を経験しました!)
まだわかりませんか?私たちがスキャンできるように、このファイルの内容をここにコピーしてください。
答え2
BASHはすべての文字(印刷可能かどうか)をプロンプト長として計算します。計算されたプロンプトの長さによって、改行が発生する場所が決まります。計算された長さは変更する必要がある変数です。 ☠️の後にスペースを削除して別のスペースを追加すると、\[ \]
BASHはmacOS High Sierra、BASH 4.4.12、およびiTerm 3.1.4を使用している現在のコンピュータで改行位置を正しく計算します。
PS1="$C_YELLOW\w $C_PURPLE\$(__git_ps1 \"(%s) \")$C_DEFAULT\n☠️\[ \]"