小编Ele*_*las的帖子

彩色的readline提示打破了控制-a

以下程序打印彩色的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括起来.我遵循了那些指示,但控制权仍然被打破了.

c macos readline

2
推荐指数
1
解决办法
572
查看次数

标签 统计

c ×1

macos ×1

readline ×1