Emacs中的Scala REPL

nom*_*mad 14 emacs scala read-eval-print-loop

我喜欢在Emacs中进行Scala开发,并且不时地使用REPL来测试代码片段或者加载和测试我刚刚编写的一些代码.我正在使用Scala 2.9.1,我注意到当我在终端缓冲区中打开REPL时,事情基本上已被破坏.特别是,我无法从当前行中删除任何字符,并且无法在当前行上向后移动光标.这是非常令人沮丧的,因为任何时候我输入错误的东西,我必须重新开始命令.我想知道是否有其他人在使用Emacs下的Scala REPL时遇到此问题,并且如果有人有潜在的解决方案.

小智 9

我发现rlwrap(readline包装器)与emacs的ansi-term和scala配合得很好.只需调用"rlwrap scala",您就可以正常进行bash行编辑以及历史记录.作为奖励,您的历史记录将跨越多次scala调用,因此您不会丢失退出Scala REPL后输入的所有内容.

如果rlwrap不适合你,只需在ansi-term中切换到行模式(默认为Cx Cj)就可以在行上使用emacs风格的编辑,但是没有像历史和完成这样的shell细节.

已经提到了Ensime,所以如果你不介意所涉及的设置,我会把它作为一个很好的选择.


S. *_*nko 8

您可以安装ENSIME按照说明操作.我不知道你调用REPL的方式,但是从ENSIME调用的REPL工作(它允许向后移动光标并删除符号,我已经检查过).

  • 谢谢你的提示.看起来从Ensime调用REPL确实可以解决这个问题,但它引入了其他一些问题.特别是,通过Ensime调用的REPL没有命令历史记录,并且似乎无法完成制表符. (2认同)