Mono,C#控制台,Putty-箭头键变为空字符
本文关键字:字符 控制台 Putty- Mono | 更新日期: 2023-09-27 18:29:06
我正在创建一个基本的C#控制台应用程序,该应用程序在我的debian服务器上使用Mono进行编译。
我正在使用PuTTY与服务器进行通信;向我正在创建的应用程序发送命令。
问题:
如果我尝试转到上一个命令、下一个命令,使用箭头键在输入=>中向左/向右移动-什么都不会发生
当我调查这个问题时,发现我按下的每一个箭头键都是作为一个空字符"''0"发送到输入端的(通过迭代Console.Readline()输出中的每个键来发现)。
是的,它在Windows(10)上运行良好
我问你:
是PuTTY的问题还是设置的问题
这个问题是和Mono有关还是和我自己的代码有关
我必须处理它吗?
Cecilio是正确的,ReadLine
没有实现该功能。您在Windows上看到的是"Shell"集成。
StreamReader.ReadLine
从当前流中读取一行字符,并将数据作为字符串返回。
如果您正在寻找相同的shell样式集成,而不使用readline lib,那么您应该查看LineEditor
类:
getline.cs:像1988年一样聚会
注意:博客中的源链接已经过时,所以在Github中使用Mono/Mono。
using Mono.Terminal;
LineEditor le = new LineEditor ("MyApp");
while ((s = le.Edit ("prompt> ", "")) != null)
Console.WriteLine ("You typed: " + s);
它支持常规光标编辑、类似Emacs的编辑命令、历史记录、历史记录中的增量搜索以及历史记录加载和保存。
ReadLine函数没有实现您期望的历史记录/编辑功能。它只是读一个字符串,仅此而已编辑:但确实如此!