代码之家  ›  专栏  ›  技术社区  ›  Paul Moore

有没有类似于GNU readline的.Net库?

  •  6
  • Paul Moore  · 技术社区  · 16 年前

    我正在考虑用C#编写一个控制台应用程序,我想结合历史记录、完成和命令行编辑功能,比如GNU readline(但不一定像那样广泛!)

    是否有现有的.net库提供此类功能?我想一个选择是使用互操作服务调用GNU readline。但是有没有一个本地的选择呢?

    3 回复  |  直到 16 年前
        1
  •  9
  •   Christian.K    13 年前

    你可能想看看米格尔·德·伊卡扎的 getline.cs (博客帖子中的链接已断开,现在可以找到代码 here

    使用它很容易。

    如果您想尝试,只需下载并编译文件:

    C:\> csc.exe /d:DEMO getline.cs 
    C:\> getline.exe
    shell>
    

    这个 #ifdef DEMO 第部分还显示了基本的REPL:

    var le = new LineEditor("whatever");
    string s;
    
    while ((s = le.Edit("my prompt> ", "")) != null)
    {
        // User input from command line / prompt now in "s".
    }
    
        2
  •  2
  •   Duncan Bayne    16 年前

    Mono-Readline .

    它为GNU Readline库提供了一个.NET接口——虽然它有点原始,只有0.0.1版,我只见过它在Mono运行时运行。

    你也应该小心使用许可证。。。AFAIK任何链接GNU Readline库的东西都需要在GPL下发布。

        3
  •  2
  •   Antonello    16 年前

    一个旨在模拟红线的大部分功能的项目是 Deveel ReadLine ,但我不得不说它没有得到维护。上次我使用它时,它在.NET和Mono上都运行得很好,尽管在取消自动折叠的行时有一个小错误。

        4
  •  0
  •   Per Lundberg Kartik Soneji    6 年前

    老问题,但仍然相关,因为它出现在谷歌搜索结果。提及以下内容是有意义的:

    https://github.com/tonerdo/readline

    ReadLine是一个类似GNU ReadLine的库,内置于纯C语言中。它可以作为内置的替代品 Console.ReadLine() 它还带来了一些从unixshell中获得的终端好处,比如命令历史导航和tab自动完成。

    它是跨平台的,可以在支持.NET的任何地方运行,以netstandard1.3为目标意味着它可以与.NET核心以及完整的.NET框架一起使用。

    许可证

    该项目是根据麻省理工学院许可证授权的