我正在制作一种解释语言。我使用一个交互式提示符,在其中输入要求值的表达式(REPL)。我想知道,我如何实现标准的提示行为?比如按上下方向键来浏览命令历史,按左右方向键来移动文本光标,而不是打印^[[D^[[C^[[A^[[B]代码。我只是不知道如何抓住他们,或者任何控制字符。
我在Linux上。我是否需要使用护士或一些外部库,或者可以用内置函数完成?这与我的语言无关,但是像这样使用提示,没有导航,这让我很抓狂。
下面是一个示例C程序,它允许您使用readline(必须使用-lncurses -lreadline
编译):
#include <stdio.h>
#include <curses.h>
#include <readline/readline.h>
#include <readline/history.h>
int main (void) {
char *input = readline("$ ");
printf("You typed `%s'!n", input);
return 0;
}
基本上,它模仿元键的命令行行为,如home/end和方向键。但这一切都取决于你是否正确配置了输入