Input 如何在Nim中编写具有readline样式行编辑的文本提示?

Input 如何在Nim中编写具有readline样式行编辑的文本提示?,input,terminal,readline,nim-lang,Input,Terminal,Readline,Nim Lang,readLine不支持行编辑和调用以前的命令,例如: 尽管如此: 变量名称:string=readLinestdin 你好,名字! 没有编辑功能。但如果我编译它并用rlwrap包装它: $rlwrap read_测试 正如我所希望的那样。具有readline库提供的可编辑和可重新调用的行 readLineFromStdin几乎可以工作,但不支持ctrl+d,它在ctrl+d上返回一个空字符串,这与换行符没有区别 我怎样才能在纯尼姆身上做到这一点?谢谢 Ctrl+D是EOF信号,因此您可以在输入中

readLine不支持行编辑和调用以前的命令,例如:

尽管如此: 变量名称:string=readLinestdin 你好,名字! 没有编辑功能。但如果我编译它并用rlwrap包装它:

$rlwrap read_测试 正如我所希望的那样。具有readline库提供的可编辑和可重新调用的行

readLineFromStdin几乎可以工作,但不支持ctrl+d,它在ctrl+d上返回一个空字符串,这与换行符没有区别

我怎样才能在纯尼姆身上做到这一点?谢谢

Ctrl+D是EOF信号,因此您可以在输入中捕捉EOF:

while not endOfFile(stdin):
  var name: string = readLine(stdin)
  echo "Hi, ", name, "!"

readLineFromStdin的过程没有那么复杂,您可以重新编写自己的过程,并将上述代码添加到其中。

虽然@xbello的答案是正确的,但如果您想使用软件包,我们最终使用了,它支持C-d处理和加载其他功能。

太棒了!我们最终使用了nim noise作为readline的替代品,它附带了大量的铃声和口哨