这个提示为什么会让终端在屏幕中间换行?

这个提示为什么会让终端在屏幕中间换行?

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

[仅显示提示的一部分。其余内容也同样显示。]

相关内容