bash更改提示符颜色后换行错位

Posted 知了和狗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bash更改提示符颜色后换行错位相关的知识,希望对你有一定的参考价值。

今天又装了Debian, 顺手给提示符更改了一下颜色, 这个很简单, 在.bash_profile中设置PS1变量就可以了, 但是会有一个小问题, 更改颜色后bash的换行出现了错位.
.bash_profile中更提示符颜色的代码如下:

PS1='[\e[1m\e[32m\u\e[34m@\e[35m\h \e[31m\w\e[0m]# '

更改后的效果:

然后换行就出现了问题:

bash更改提示符颜色后换行错位

一直按删除, 光标停在这地方不动了:

实际上之前的debian也是这样, 将就着用了, 今天决定解决一下, 搜索了半天, 完美解决.

方法是使用\[\]告诉Bash哪些是 escape 字符, 让它正确的计算提示符长度, 于是就正常啦.

更改后的代码:

PS1='\[[\e[1m\e[32m\]\u\[\e[34m\]@\[\e[35m\]\h \[\e[31m\]\w\[\e[0m\]]# '

天书一般.

顺便吐槽一下百度, 搜了半天没搜出答案, 同样的关键字Google第一条就搜出来了.

以上是关于bash更改提示符颜色后换行错位的主要内容,如果未能解决你的问题,请参考以下文章

编程规范

c语言中怎样让一个有10个元素的数组输出5个元素后换行后再输出另外五个函数

java 如何在控制台显示完一行输出后换行再显示下一行

AlertDialog 更改片段中的背景颜色 [重复]

java开发手册-编程规约-代码格式

Shell 脚本写入文件换行的问题