有没有办法让 Scala REPL 不因 CTRL-C 而停止
我正在使用 Scala REPL 以交互方式测试我正在构建的一些哈希函数。我不断地在产品代码 (Eclipse)、浏览器和 Scala 解释器之间切换,复制/粘贴值和结果。在混合过程中,我经常在解释器上执行 CTRL-C,退出会话并失去所有功能。
有没有办法让 Scala REPL 忽略 CTRL-C,或者更好的是,用它执行“粘贴”?我正在 Linux 上工作。
I'm using the Scala REPL to interactively test some hash functions I'm building. I'm constantly switching between the product code (Eclipse), the browser and the Scala interpreter, doing copy/paste of values and results. In the mix I'm often doing CTRL-C on the interpreter, exiting the session and loosing all my functions.
Is there any way to let the Scala REPL either ignore CTRL-C or, even better, perform "paste" with it? I'm working on Linux.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我只知道如何防止 REPL 退出。可以以相同的方式重新映射 CTRL+C 来执行复制命令(如果有一些命令能够更改键盘映射而无需重新启动终端 - 我不知道是有一个)。无论如何,要阻止
^C
将 REPL 调用包装在 .sh 脚本中,如下所示:trap 命令
2 是一个 SIGINT 值(这是当您按
CTRL+C
)I only know how to prevent REPL from exiting. Remapping of
CTRL+C
to perform copy command could be done in the same way (if there is some command that ables to change keymap w/out restarting terminal -- I don't know is there one). Anyways, to block^C
wrap your REPL invocation in .sh script like this:trap command
2 is a SIGINT value (that's the signal which is triggered when you press
CTRL+C
)repl 已经拦截了 ctrl-C,但显然它在 Linux 上不起作用。它确实可以在 osx 上运行。如果使用 Linux 的人开具了足够详细的票证来说明原因,我可以修复它。
The repl already intercepts ctrl-C, but apparently it doesn't work on linux. It does work on osx. If someone who uses linux opens a ticket with sufficient detail to indicate why not, I can fix it.
作为原生 Scala REPL 的替代方案,您可以使用 Ammonite ,确实处理Ctrl+C:
As an alternative to the native Scala REPL, you can use Ammonite, which does handle Ctrl+C: