在readline中使用颜色prompt导致显示bug

在C语言中`readline`,python中`raw_input`和`input`中,prompt中如果直接使用颜色会出现bug。显示错位并覆盖。

Posted by Readm on September 6, 2016

在readline中使用颜色prompt导致显示bug

在C语言中readline,python中raw_inputinput中,prompt中如果直接使用颜色会出现bug。显示错位并覆盖。 这是因为在readline中颜色字符占用了长度,计算出错。

解决方法: 在readline.h中有如下定义:

/* Definitions available for use by readline clients. */

define RL_PROMPT_START_IGNORE '\001'
define RL_PROMPT_END_IGNORE '\002'

所以应该在颜色字符的前后加入'\001''\002'

注意:

当非prompt中加入这些字符时会出现乱码(ubuntu中已验证),故在其他输出中不应使用这一方法。