单声道,C#控制台,Putty - 箭头键成为空字符

时间:2016-01-04 23:23:10

标签: c# mono putty

我创建了一个基本的C#控制台应用程序,它使用Mono进行编译,在我的debian服务器上运行。

我使用PuTTY与服务器进行通信&将命令发送到我创建的应用程序。

问题:
如果我尝试转到上一个命令,则下一个命令,在输入的输入中向左/向右移动=>使用箭头键 - 没有任何反应!

当我调查问题时,发现我按下的每个箭头键都是作为空字符发送到输入的' \ 0' (通过迭代Console.Readline()输出中的每个键找到。)

是的,它在Windows(10)上运行良好!

我问你:

  

PuTTY或它的设置有问题吗?
  它与Mono或我自己的代码有关吗?
  我只需要处理它吗?

2 个答案:

答案 0 :(得分:1)

Cecilio是正确的,ReadLine没有实现该功能。您在Windows上看到的是“Shell”集成。

StreamReader.ReadLine

  

从当前流中读取一行字符,并将数据作为字符串返回。

如果您在不使用readline lib的情况下寻找相同的 shell样式集成,那么您应该查看LineEditor类:

getline.cs: Partying like its 1988

注意:博客中的源链接已过期,因此请在Github上使用Mono/Mono

using Mono.Terminal;

    LineEditor le = new LineEditor ("MyApp");
    while ((s = le.Edit ("prompt> ", "")) != null)
        Console.WriteLine ("You typed: " + s);
  

它支持常规光标编辑,类似Emacs的编辑命令,历史记录,历史记录中的增量搜索以及历史记录加载和保存。

答案 1 :(得分:0)

ReadLine功能不实现您期望的历史/编辑功能。它只是读取一个字符串,仅此而已。 编辑:但确实如此!