运行的readline代码

时间:2017-12-13 12:03:27

标签: c++ terminal readline tmux backspace

我用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上运行代码时,也会出现相同的行为。

0 个答案:

没有答案