以下程序打印彩色的readline提示.它打破了控制-a(光标最终向右移动得比它应该的更远):
#include <readline/readline.h>
#include <readline/history.h>
#define CYELLOW "\001\e[0;31m\002"
#define RESET "\001\e[0m\002"
int main(int argc, char **argv)
{
readline(CYELLOW "prompt> " RESET);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
control-a在我没有彩色提示时调用readline()时起作用:
readline("prompt> ");
Run Code Online (Sandbox Code Playgroud)
我正在使用Mac OS X 10.9.4.这是otool的输出:
/usr/lib/libreadline.dylib:
/usr/lib/libedit.3.dylib (compatibility version 2.0.0, current version 3.0.0)
/usr/lib/libncurses.5.4.dylib (compatibility version 5.4.0, current version 5.4.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1
Run Code Online (Sandbox Code Playgroud)
有几个stackoverflow问题似乎涉及到这个:
他们都提到颜色标记需要被\ 001和\ 002括起来.我遵循了那些指示,但控制权仍然被打破了.