带有命令行历史记录和标签完成的MIT Scheme REPL

27

我正在阅读SICP,并且在我的os x 10.8笔记本电脑上使用通过homebrew安装的mit-scheme

一切都如广告所述,但是我已经习惯了像Python和Node.js这样的运行时环境中的REPL提供的Tab自动补全和命令行历史记录。

我不需要任何重型工具,但是现代REPL中很容易获得这些功能(例如Python中只需一个简单的启动文件,在Node.js中则可以用几行代码实现)。

有没有一种简单的方法可以在mit-scheme REPL中获得Tab自动补全和命令历史记录,而不需要重量级应用程序或者必须切换到emacs(即在xterm终端中)?

2个回答

64

安装readline包装器

brew install rlwrap

安装后,rlwrap scheme将为您提供持久的历史记录、括号匹配和制表符自动完成。我通常使用以下参数运行rlwrap:

-r 将所有输入输出中看到的单词添加到自动完成列表中。

-c 完成文件名。

-f 指定用于制表符自动完成的单词列表。 我使用了来自MIT Scheme参考手册的一份缩略版绑定列表。 你可以在这个gist中找到它,而不是在此处重新发布该列表。 我将此文件存储在“$HOME”/scheme_completion.txt中。

rlwrap -r -c -f "$HOME"/scheme_completion.txt scheme

1 ]=> (flo:a <tab tab>
flo:abs    flo:acos   flo:asin   flo:atan   flo:atan2  
1 ]=> (flo:abs -42.0)

;Value: 42.

1
喜欢这个。这似乎对其他程序也非常有用。 - David Sanders
类似的东西在Ubuntu上存在吗? - Nathan majicvr.com
1
对于Ubuntu,只需使用sudo apt-get install rlwrap而不是brew install rlwrap。 - pakman
为了使 rlwrap 尊重 mit-schemes 中使用 CTRL+C 和 CTRL+G 来中断计算的方式,需要在 .inputrc 中添加几行额外的代码,并使用 --polling 参数来运行 rlwrap;参见 这个 Stack Overflow 问题 - Hans Lub

2

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