我正在使用Scala REPL交互式测试我正在构建的一些哈希函数。我经常在产品代码(Eclipse),浏览器和Scala解释器之间切换,进行值和结果的复制/粘贴。在混音中,我经常在解释器上执行CTRL-C,退出会话并放弃我的所有功能。
有没有办法让Scala REPL忽略CTRL-C,或者更好的是,用它来执行“粘贴”?我正在研究Linux。
答案 0 :(得分:4)
我只知道如何防止REPL退出。重新映射CTRL+C
以执行复制命令可以以相同的方式完成(如果有一些命令可以更改键映射w / out重启终端 - 我不知道是否有一个)。无论如何,要阻止^C
在.sh脚本中包装你的REPL调用,如下所示:
#!/bin/bash
#switch off sensitivity to ^C
trap '' 2
# here goes REPL invoke
scala
#get back sensitivity to ^C
trap 2
陷阱命令
定义并激活shell接收时运行的处理程序 信号 或其他条件。
2是SIGINT值(这是按CTRL+C
时触发的信号)
答案 1 :(得分:1)
作为原生Scala REPL的替代方案,您可以Ammonite使用does handle Ctrl+C:
@ while(true) ()
... hangs ...
^Ctrl-C
Interrupted!
@
传统的Scala REPL无法处理失控的代码,除了杀死进程外,别无选择,无法完成所有工作。
Ammonite-REPL让你打断线程,停止失控命令并继续。
答案 2 :(得分:0)
repl已经拦截了ctrl-C,但显然它在linux上不起作用。它确实适用于osx。如果使用linux的人打开一张足够详细的故障单来表明原因,我可以解决它。