私は現在gitブランチ、npmパッケージのバージョン情報、私が持っている仮想環境などを見ることができるようにカスタムbashプロンプトを設定しました。ただし、履歴を参照するために上矢印キーを押すと、プロンプトに欠陥があります。
通常は次のようになります。
ただし、履歴をナビゲートすると、ラムダ記号とコマンドの間のスペースが消えます。
時々このようなことが起こるのになぜそうなのかわかりません。私はちょうど小さなスペースのためにトリッキーだったようだが、bashプロンプトを構成するのに多くの時間を費やした後、それは完璧に見えたかった。
これが私の.bashrcの外観です。違いがある場合は、WindowsバージョンのGit Bash(btw)を使用しています。
bashPrompt() {
SYMBOL="λ"
COUNT=(`find ./ -maxdepth 1 -name "package.json"`)
if [ ${#COUNT[@]} -gt 0 ]; then
NPM_PACKAGE_INFO="($(node -p -e "require('./package.json').version"))"
else
NPM_PACKAGE_INFO=""
fi
if [ ! -z "$CONDA_DEFAULT_ENV" ]; then
ENV=" ($CONDA_DEFAULT_ENV)"
else
ENV=""
fi
if [ -d .git ]; then
if [ -z "$(git status --porcelain)" ]; then
echo "[\[\e[0;36;40m\u@\H\]\[\e[0;37;40m]\]\[\e[1;34;40m${ENV}\] \[\e[1;31;40m\w\]\[\e[1;32;40m$(__git_ps1)\] \[\e[0;37;40m${NPM_PACKAGE_INFO}\]\n\[\e[0;37;40m${SYMBOL}\] "
else
echo "[\[\e[0;36;40m\u@\H\]\[\e[0;37;40m]\]\[\e[1;34;40m${ENV}\] \[\e[1;31;40m\w\]\[\e[1;33;40m$(__git_ps1)\] \[\e[0;37;40m${NPM_PACKAGE_INFO}\]\n\[\e[0;37;40m${SYMBOL}\] "
fi
else
echo "[\[\e[0;36;40m\u@\H\]\[\e[0;37;40m]\]\[\e[1;34;40m${ENV}\] \[\e[1;31;40m\w\] \[\e[0;37;40m${NPM_PACKAGE_INFO}\]\n\[\e[0;37;40m${SYMBOL}\] "
fi;
}
PROMPT_COMMAND='PS1="$(bashプロンプト)"'
答え1
文字列の1つは次のとおりです。
"[\[\e[0;36;40m\u@\H\]\[\e[0;37;40m]\]\[\e[1;34;40m${ENV}\] \[\e[1;31;40m\w\]\[\e[1;32;40m$(__git_ps1)\] \[\e[0;37;40m${NPM_PACKAGE_INFO}\]\n\[\e[0;37;40m${SYMBOL}\] "
\[\]
各テキストをペアで含めます。改行文字を削除し\n
てPS1を使ってみると次のようになります。
PS1="[\[\e[0;36;40m\u@\H\]\[\e[0;37;40m]\]\[\e[1;34;40m${ENV}\] \[\e[1;31;40m\w\]\[\e[1;32;40m$(__git_ps1)\] \[\e[0;37;40m${NPM_PACKAGE_INFO}\] n\[\e[0;37;40m${SYMBOL}\] "
上キー(上矢印)を押すと、ほとんどのプロンプトが履歴コマンドに置き換えられます。
行間隔を使用するテキストを括弧の外に配置します。
PS1="[\[\e[0;36;40m\]\u@\H \[\e[0;37;40m]\]\[\e[1;34;40m\]${ENV} \[\e[1;31;40m\]\w\[\e[1;32;40m\]$(__git_ps1) \[\e[0;37;40m\]${NPM_PACKAGE_INFO} n\[\e[0;37;40m\]${SYMBOL} "
それからもう一度やり直してください。
うまくいけば改行文字を追加して\n
もう一度やり直してください。
それでも問題がある場合は、bashを4.4.18(現在のバージョン)または同様のバージョンに更新してください。