为什么GNU Readline弄乱了ANSI颜色代码?

时间:2019-05-10 20:08:27

标签: c++ c libreadline

我正在尝试使用带有彩色提示的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。我一辈子都无法弄清楚这里发生了什么,而且网上没人似乎有这个问题。

1 个答案:

答案 0 :(得分:0)

我可能永远都不知道出了什么问题。在测试此项目时,我已经彻底清理了项目中的版本(重新生成整个CMake构建树等),但是只需删除并重新下载自己的存储库即可解决此问题。

相关问题