我正在制作一种解释性语言。我使用交互式提示输入我要输入的表达式(REPL)。我想知道,我如何实现标准的提示行为?就像按向上和向下箭头键导航命令历史记录一样,按左右箭头键移动文本光标,而不是打印^ [[D ^ [[C ^ [[A ^ [[B code。我只是不知道如何捕捉它们,或者一般的任何控制角色。
我在Linux上。我是否需要使用ncurses或一些外部库,还是可以使用内置函数?这无关我的语言,但它使我疯狂使用这样的提示,没有导航。它使测试更加困难。
答案 0 :(得分:2)
以下是一个示例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和方向箭头键等元键的命令行行为。但这完全取决于您是否正确配置了inputrc。