関連している:履歴を参照するときに bash プロンプトがバグるのはなぜですか?
履歴は次のようになります。
1831 git remote -v
1832 gs
1833 gd
1834 gc -am 'moved apsum options etc to their own file
set routes to allow cors
changes to the apsum pull '
1835 git push
1836 reset
1837 history
1838 __git_ps1
1839 reset
1840 history
1841 Kill 99894
1842 history
g*
これらはすべて git コマンドのエイリアスです。履歴をスクロールすると、1833 番 (アンダースコアはカーソル位置を示します) に到達するまではすべて正常です。
$ gd _
[ up arrow]
$ gds_
[up arrow]
$ gdit remote -v_
PS1 の非印刷文字が原因だと考えましたが、それらはすべて括弧で囲みました。
PS1="\n\[$FCYN\]\$(date +%H:%M:%S) \w\[$IGreen\]\$(__git_ps1)\[$Black\] $ \[$DarkGray\]"
何か見逃しましたか? これは複数行のコミット メッセージがあるときにのみ発生するものですか?
編集: 私の最終的な解決策はコメントに載せるには大きすぎます:
export PS1="\\n\[\033[38;5;246m\]\u@\[$(tput sgr0)\]\[\033[38;5;245m\]\h\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\[\033[38;5;28m\]\w\[$(tput sgr0)\]\[\033[38;5;15m\]\[$(tput sgr0)\]\[\033[38;5;2m\]`__git_ps1`\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\[\033[38;5;90m\]\t\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\[\033[38;5;232m\]\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\n\[$(tput sgr0)\]\[\033[38;5;0m\]\\$\[$(tput sgr0)\] "
奇妙に思えるかもしれませんが、git ブランチと明るい背景 (ここでは見えません) で読みやすい色を使用した、見やすいプロンプトが生成されます。
collumj@machineName ~ (dev) 17:35:42
$
答え1
「すべて」は括弧で囲まれていますが、不明な点がいくつかあります。列が右にシフトされているので、bash が気付かないテキストが送信されていることを意味します。
ロケールの不一致が原因でこのようなことが起こる可能性はありますが、おそらく気づくでしょうそれ。
設定でカラー機能を使用していないことを確認してください__git_ps1
。によるとフェドーラというスクリプトを呼び出すgit-prompt.sh
、これにより ( を設定した場合GIT_PS1_SHOWCOLORHINTS
) エスケープ シーケンスが送信され、実際の列に関して bash が混乱する可能性があります。