我正在尝试使用带有彩色提示的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。我一辈子都无法弄清楚这里发生了什么,而且网上似乎没人遇到这个问题。
最佳答案
我可能永远都不知道出了什么问题。在测试此项目时,我已经完全清理了项目中的版本(重新生成整个CMake构建树等),但是只需删除并重新下载自己的存储库即可解决此问题。
关于c++ - 为什么GNU Readline弄乱了ANSI颜色代码?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56084205/