按 Home 键后光标停在中间

按 Home 键后光标停在中间

在终端我改变了我的 PS1。

我认为这可能会导致我无法按 Home 键。通常,按 Home 键应该返回到第一行的第一个字符

我的提示文件:https://raw.github.com/chrisjlee/dotfiles/master/.prompt

# Setup color Variables
#############################
STARTFGCOLOR='\e[0;36m'
STARTBGCOLOR="\e[0;32m"
ENDCOLOR="\e[0m"

export PS1="\e[0;36m\n[ $STARTFGCOLOR$STARTBGCOLOR\u@\h\e[01;35m \w $STARTBGCOLOR$STARTFGCOLOR]\e[0;32m\n\e[0;35m]$ $ENDCOLOR"

每当我重做最后一个命令(通过点击终端上的向上按钮)并点击主页按钮时,它就会中途停止。然后字符将无法正确读取

还有其他人遇到这个问题吗?

答案1

您必须将每个颜色代码括在转义的方括号中,如下所示:\[colorcode\]

例子:

STARTFGCOLOR='\[\e[0;36m\]'
STARTBGCOLOR="\[\e[0;32m\]"
ENDCOLOR="\[\e[0m\]"

解释:bash 必须计算提示符的长度,以便在您按下 home 键时正确放置光标。无论出于何种原因,bash 都不认为颜色代码在屏幕上不占用空间。您必须通过将颜色代码括在转义的方括号中来明确告诉 bash 颜色代码不占用空间。

这里了解更多解释。

相关内容