有没有办法让Scala REPL不会停止使用CTRL-C

时间:2011-09-15 17:01:58

标签: scala user-interface read-eval-print-loop

我正在使用Scala REPL交互式测试我正在构建的一些哈希函数。我经常在产品代码(Eclipse),浏览器和Scala解释器之间切换,进行值和结果的复制/粘贴。在混音中,我经常在解释器上执行CTRL-C,退出会话并放弃我的所有功能。

有没有办法让Scala REPL忽略CTRL-C,或者更好的是,用它来执行“粘贴”?我正在研究Linux。

3 个答案:

答案 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的人打开一张足够详细的故障单来表明原因,我可以解决它。