簡體   English   中英

如何使光標在curses / C中表現得像文本編輯器/終端?

[英]How to make the cursor behave like a text editor/terminal in curses/C?

例如,假設我有字符串“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';
    }
  }

您可以使用GNU readline庫來完成此操作,而不是直接編寫為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編譯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM