如何使光标在curses / C中表现得像文本编辑器/终端?

时间:2013-08-13 23:42:37

标签: c ncurses curses

例如,假设我有字符串“Hinge” - 我希望能够将光标移动到开头,点击del删除“H”,然后插入“B”,将所有内容推到前面向前游标并创建单词“Binge”,而不是覆盖默认行为“i”。我可以使用标准的addch()函数吗?

此外,即使我可以在屏幕上正确打印它,看起来这是一个过于复杂的问题,使其与缓冲区相对应。这似乎是一项常见的任务,但我不能想到一种非黑客的方法。

以下是我目前处理基本输入的示例。

  if (isprint(key)) {
    if (ctx->pos != sizeof(ctx->line)-1) {
      mvwaddch(self->window, y, x, key);
      ctx->line[ctx->pos++] = key;
      ctx->line[ctx->pos] = '\0';
    }
  }

1 个答案:

答案 0 :(得分:1)

您可以使用GNU readline library来完成此操作,而不是直接编码到curses。这是一个简单的程序:

#include <stdio.h>
#include <readline/readline.h>
#include <readline/history.h>

int main () {
    char *s = readline("Type something: ");
    printf("You typed: %s\n", s);
    return 0;
}

在我的系统上,我使用gcc prog.c -lreadline -ltermcap

编译
相关问题