我创建了一个基本的C#控制台应用程序,它使用Mono进行编译,在我的debian服务器上运行。
我使用PuTTY与服务器进行通信&将命令发送到我创建的应用程序。
问题:
如果我尝试转到上一个命令,则下一个命令,在输入的输入中向左/向右移动=>使用箭头键 - 没有任何反应!
当我调查问题时,发现我按下的每个箭头键都是作为空字符发送到输入的' \ 0' (通过迭代Console.Readline()输出中的每个键找到。)
是的,它在Windows(10)上运行良好!
我问你:
PuTTY或它的设置有问题吗?
它与Mono或我自己的代码有关吗?
我只需要处理它吗?
答案 0 :(得分:1)
Cecilio是正确的,ReadLine
没有实现该功能。您在Windows上看到的是“Shell”集成。
从当前流中读取一行字符,并将数据作为字符串返回。
如果您在不使用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功能不实现您期望的历史/编辑功能。它只是读取一个字符串,仅此而已。 编辑:但确实如此!