為什麼這個提示會讓終端機換行中螢幕?

為什麼這個提示會讓終端機換行中螢幕?

我有以下 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\] @ "

[僅顯示提示的一部分。休息時也這樣做。

相關內容