bash中Ctrl-A无法将光标移至行首的问题求助
解决方法
问题出在ANSI转义序列没有被正确标记为非打印字符,bash会把这些转义字符算入提示符的长度,导致光标定位错误。你之前错误地把整个提示符用\[和\]包裹,反而破坏了打印内容的识别,所以输入时提示符消失。
正确的做法是只将非打印的颜色控制序列用\[和\]单独包裹,修改后的PS1配置如下:
export PS1="\[\e[47;30m\][\s \t \u@\H \W] \$\[\e[0m\]"
具体说明:
\[\e[47;30m\]:把背景白、前景黑的颜色控制序列标记为非打印字符,bash不会将其计入提示符长度[\s \t \u@\H \W] \$:这部分是实际会显示的文本内容,不需要包裹\[\e[0m\]:把重置颜色的控制序列同样标记为非打印字符
修改后执行source ~/.bashrc重新加载配置,Ctrl-A就能正常跳到行首,输入内容时提示符也不会消失了。
内容的提问来源于stack exchange,提问作者soumeng78
相关产品推荐
相关产品推荐

