如何“修复”SML/NJ交互式系统以使用箭头键

27

我在使用SML/NJ交互式系统时遇到了一些问题,具体来说,当我尝试使用箭头键(左或右)来更正我输入的表达式或者使用上箭头键重复上次输入的表达式时,我的终端会打印出一些代码。(例如,使用上箭头键打印^[[A,使用左箭头键打印^[[D等等)。尽管我仍然可以使用该系统,但这使得操作非常繁琐。

我已经在Control.Compiler中查找了一些信息,但是否还有其他需要注意的地方呢?值得注意的是,我正在使用Mac终端。

谢谢 ^_^


多么优秀的语言,然而它的解释器实现并不友好。我找不到类似于IPython的SMLJ等效工具,这真是令人遗憾。 - Har
2个回答

56

另一种选择是rlwrap

rlwrap sml

6
如果你已经安装了macports,你可以通过运行sudo port install rlwrap来安装rlwrap。然后在~/.bash_profile文件中添加一行alias sml='rlwrap /usr/local/smlnj/bin/sml' - justspamjustin
直到我找到这篇答案,我才知道rlwrap(或上面提到的滥用socat)!谢谢! - user1898811
4
也适用于Homebrew:使用命令"brew install rlwrap"进行安装。甚至无需更改您的bash_profile设置。 - Priyank Desai
如果您正在使用@justspamjustin建议的别名sml=path,可以通过运行which sml来找到sml命令的路径。 - jpenna

18

试试这个。您可以使用 socat 将 readline 支持添加到许多内容中:

socat READLINE EXEC:sml

我刚刚意识到你使用的是OS X系统。看起来socat也适用于OS X,虽然我没有测试过(这在Linux上确实可行)。


9
在我的Linux系统上,我使用"rlwrap"来完成相同的操作:http://utopia.knoware.nl/~hlub/rlwrap/。 - newacct
谢谢 ^_^ 哦,感觉好多了(尽管让socat正常工作需要付出不少努力。下一个盒子是Linux)。 - pablo.meier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接