我正在尝试使用带有彩色提示的 GNU Readline。归结为一个最小的测试用例,我的readline()
调用如下所示:
readline("\x1b[34m" "prompt>" "\x1b[m");
我希望看到这样的提示(想象一下它是蓝色的):
prompt>
但相反,我看到:
[34mprompt>[m
我在文档中阅读了有关提示扩展的信息,并认为那里可能会发生一些奇怪的事情。但是扩展的提示很好,这可以按预期工作:
rl_set_prompt("\x1b[34m" "prompt>" "\x1b[m");
printf("%s", rl_prompt); // Prints "prompt>" in blue
这发生在 Gnome Terminal 和 Xterm 中。我在 Ubuntu 18.04 上使用 libreadline 7。我一生都无法弄清楚这里发生了什么,而且似乎没有人在网上遇到这个问题。