2011-08-31 43 views
1

我正在制作一种解释型语言。我使用交互式提示输入要评估的表达式(REPL)。我想知道,我如何实现标准提示行为?与按下向上和向下箭头键导航命令历史记录一样,并按下左右箭头键移动文本光标,而不是打印^ [[D^[[C^[[A^[[B代码。我只是不知道如何抓住他们,或者一般的控制角色。如何使用箭头键功能制作交互式Promp?

我在Linux上。我需要使用ncurses还是一些外部库,还是可以使用内置函数完成?这与我的语言无关,但它使我疯狂地使用这样的提示,而没有导航。它使测试更加困难。

回答

1

下面是一个例子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。