【问题标题】:How to make an interactive promp with arrow key functionality?如何使用箭头键功能制作交互式提示?
【发布时间】:2011-08-31 03:13:10
【问题描述】:

我正在制作一种解释性语言。我使用交互式提示输入要评估的表达式(REPL)。我想知道,如何实现标准提示行为?就像按上下箭头键导航命令历史,按左右箭头键移动文本光标,而不是打印 ^[[D^[[C^[[A^[[B 代码。我只是不知道如何捕捉它们,或者一般的控制字符。

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

【问题讨论】:

    标签: input keyboard command-prompt ncurses read-eval-print-loop


    【解决方案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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-04
      • 2010-12-27
      • 2012-02-21
      • 2021-03-14
      • 2017-02-09
      • 2020-07-31
      相关资源
      最近更新 更多