2011-12-27 48 views
3

我一直在玩Node的REPL。我認爲通過Socket使其可用非常酷,通過Telnet/puTTY /任意連接到它,並且可以即時調試我的服務器。節點JS REPL,套接字和Telnet - Tab完成,箭頭鍵等

我曾經在這裏找到了例子:http://nodejs.org/docs/latest/api/repl.html,基本上看起來像這樣...

net.createServer(function (socket) { 
    var cmd = repl.start(">", socket); 
    //... some other stuff here.... not important 
}).listen(5001); 

OK,太棒了!現在我可以使用Telnet連接到端口5001並與REPL交互。但是,我遇到了控制字符問題(即Tab,Ctrl + C,向上箭頭,向下箭頭等)。我怎樣才能讓這些工作?例如,如果我使用telnet連接,輸入「1 + 1 <Enter>」,我得到2.但是,當我點擊「<向上箭頭> <輸入>」時,我得到「...」 REPL正在等我完成命令。但是,真的,我想要做的就是看到我執行的最後一條命令。我知道Telnet喜歡保持它的輸出,直到輸入一個換行符,但是有什麼辦法可以避免這種情況?

$ telnet localhost 6634 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 
>1+1 
2 
>^[[A 
... 

編輯:我也發現了這個問題,這可能會或可能不會進行相關 - Arrow keys turn into control characters in Telnet

編輯2:嗯... rlwrap似乎解決大部分我的問題:

$ rlwrap telnet localhost 6634 

唯一不起作用的是本地/全局變量的製表符完成,我想我可以不用。我主要關心命令歷史。 rlwrap很整潔!

回答

1

見上。

rlwrap telnet localhost 6634

+0

你可以使用-c -f開關模仿tab完成:http://blog.lishman.com/2008/04/rlwrap.html顯然你需要一個Node.js的關鍵字列表 – booyaa 2013-06-13 08:22:18