我有以下 PS1 提示:
export PS1="\e[1m\e[38;5;198m\u\e[0m @ \e[1m\e[38;5;208m\h\e[0m : \e[1m\w\e[0m\e[38;5;226m\$(parse_git_branch)\e[0m \e[1m>>>\e[0m "
發生的情況是,當輸入時,它到達終端的一半,它會將遊標發送到行的開頭並覆蓋自身,如下所示:
rossid @ HOST : /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents >>>
oussid @ HOST : /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents >>> this is just a test to show what happens nothing seri
(字串的其餘部分取代了開頭)
知道為什麼嗎? (我使用 osx 標準終端和 IntelliJ 終端...都做同樣的事情)
答案1
您必須將所有不可列印的轉義序列括在\[
和之間\]
。例如:
PS1="\[\e[1m\]\[\e[38;5;198m\]\u\[\e[0m\] @ "
[僅顯示提示的一部分。休息時也這樣做。