节点JS REPL,套接字和Telnet - 选项卡完成,箭头键等

时间:2011-12-27 22:18:13

标签: node.js telnet read-eval-print-loop control-characters

我一直在玩Node的REPL。我认为通过Socket提供它,通过Telnet / puTTY /无论连接到它,并在运行中调试我的服务器都会很酷。

我使用了这里找到的示例: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);
好的,太棒了!现在我可以使用Telnet连接到端口5001并与REPL交互。但是,我遇到了控制字符的问题(即Tab,Ctrl + C,向上箭头,向下箭头等)。我怎样才能让这些工作?例如,如果我使用telnet连接,输入“1 + 1< Enter>”,我得到2.但是,当我点击“<向上箭头>< Enter>”时,我得到“...”,如如果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 个答案:

答案 0 :(得分:1)

见上文。

rlwrap telnet localhost 6634