我正在使用C中的readline库在bash中创建类似bash的提示.当我试图做出及时丰富多彩,有喜欢的颜色序列这些,着色的伟大工程,但光标间距搞砸.输入过早地缠绕,并且环绕到同一行,因此它开始覆盖提示.我以为我应该逃避颜色序列\[
和\]
喜欢
readline("\[\e[1;31m$\e[0m\] ")
但是打印方括号,如果我逃避反斜杠,它也打印出来.如何转义颜色代码以便光标仍然有效?
告诉readline一个提示字符串中的字符序列在输出到屏幕时实际上不会移动光标的方法是用标记包围它RL_PROMPT_START_IGNORE
(当前,这是readline的C头文件中的字符文字'\ 001')和RL_PROMPT_END_IGNORE
(目前'\ 002').
正如@Joachim和@Alter所说,使用'\ 033'而不是'\ e'来实现可移植性.