我用readline
库编写了一个c ++代码:
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <readline/readline.h>
#include <readline/history.h>
int main(int argc, char** argv) {
char* buf;
while ((buf = readline(">> ")) != nullptr) {
if (strlen(buf) > 0) add_history(buf);
printf("[%s]\n", buf);
free(buf);
}
return 0;
}
代码运行正常,但问题出在backspace
密钥上。当我输入错误并尝试用键删除一个字符时,它会给出一个空格,而不是删除最后一个字符。原本
>> Hellow
点击backspace
后,它会给我一个空格,而不是删除w
:
>> Hellow(there_is_a_space_here!)
我正在使用tmux进行bash工作,只有在使用readline
运行此代码时才会出现这种奇怪的行为。谁能告诉我如何解决backspace
的这种奇怪行为?
更新
在tcsh
上运行代码时,也会出现相同的行为。