2016-01-04 18 views
0

我創建了一個基本的C#控制檯應用程序,它在我的debian服務器上使用Mono進行編譯。單聲道,C#控制檯,膩子 - 箭頭鍵成爲空字符

我正在使用PuTTY與服務器通信&將命令發送到我正在創建的應用程序。

問題:
如果我試圖去前面的命令,下一個命令,左/右移動在輸入的輸入=>則使用箭頭鍵 - 什麼也沒有發生!

當我調查了這個問題後,發現我按下的每個箭頭鍵都被髮送爲空字符'\ 0'(通過遍歷Console.Readline()的輸出中的每個鍵找到)。

是的,它可以在Windows(10)上正常工作!

我問你:

它是膩子的問題,或者它的設置?
它是否與Mono或我自己的代碼有關?
我只需要處理它?

回答

1

Cecilio正確,ReadLine沒有實現該功能。你在Windows上看到的是「Shell」集成。

StreamReader.ReadLine

讀取一條線從當前流的字符,並返回該數據爲一個字符串。

如果你正在尋找相同殼式整合,而無需使用readline的lib中,你應該看看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編輯命令,歷史,在歷史漸進式搜索以及歷史加載和保存。

+0

所以你說的是,爲了增加本機Windows控制檯支持的功能,我必須使用這個片段在Linux下添加這個功能?我對嗎 ? #Partly睡覺#2AM – VentyCZ

0

ReadLine函數沒有實現您所期望的歷史/編輯功能。它只是讀取一個字符串,僅此而已。 編輯:但它!

+0

請閱讀我的編輯。 – VentyCZ

+0

Ops。我的錯。在Windows上,你是用單聲道還是用.net來運行它? –

+0

我使用Mono「just」編譯/構建應用程序,以便能夠在Linux(Debian)上運行它。 – VentyCZ