我正在使用C语言中的readline库在bash中创建一个类似于bash的提示符。当我尝试使用像这些颜色序列使提示符变得丰富多彩时,颜色正常显示,但光标的间距出现了问题。输入太早被换行,而换行到同一行上,因此开始覆盖提示符。我认为应该使用
\[
和\]
转义颜色序列,如下所示:
readline("\[\e[1;31m$\e[0m\] ")
但是,这会打印出方括号,如果我转义反斜杠,它也会打印那些字符。我该如何转义颜色代码,使光标仍然起作用?
"\e"
是GCC编译器中的扩展,它通常不可移植。 - Some programmer dude"\["
和"\]"
这一对符号是 Bash 特有的,你不需要它们。 - Some programmer dudereadline("\[\033[1;31m$\033[0m\] ")
吗?请使用\033
而不是\e
。 - David Ranieri