我喜欢在Emacs中进行Scala开发,并且不时地使用REPL来测试代码片段或者加载和测试我刚刚编写的一些代码。我正在使用Scala 2.9.1,我注意到当我在终端缓冲区中打开REPL时,事情基本上已被破坏。特别是,我无法从当前行中删除任何字符,并且无法在当前行上向后移动光标。这是非常令人沮丧的,因为任何时候我输入错误的东西,我必须重新开始命令。我想知道是否有其他人在使用Emacs下的Scala REPL时遇到此问题,并且如果有人有潜在的解决方案。
我喜欢在Emacs中进行Scala开发,并且不时地使用REPL来测试代码片段或者加载和测试我刚刚编写的一些代码。我正在使用Scala 2.9.1,我注意到当我在终端缓冲区中打开REPL时,事情基本上已被破坏。特别是,我无法从当前行中删除任何字符,并且无法在当前行上向后移动光标。这是非常令人沮丧的,因为任何时候我输入错误的东西,我必须重新开始命令。我想知道是否有其他人在使用Emacs下的Scala REPL时遇到此问题,并且如果有人有潜在的解决方案。
我发现 rlwrap (readline包装器)与emacs的ansi-term和scala配合得很好。只需调用“rlwrap scala”,您就可以正常进行bash行编辑以及历史记录。作为奖励,您的历史记录将跨越多次scala调用,因此您不会丢失退出Scala REPL后输入的所有内容。
如果rlwrap不适合你,只需在ansi-term(默认为C-x C-j)中切换到行模式,就可以在行上使用emacs风格的编辑,但是没有像历史和完成这样的shell细节。
已经提到过Ensime了,所以如果你不介意所涉及的设置,我会把它作为一个很好的选择。
你可以尝试使用 菊石粉, amm
。我可以在emacs中确认标签完成工作 ansi-term
。这适用于其默认模式(基于stty)或 你可以使用JLine3 同 amm
。注意Dotty(暂定Scala 3)repl, dotr
,也是基于 amm
并且还有工作标签完成 ansi-term
。