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

maa*_*asg 13 user-interface scala read-eval-print-loop

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

有没有办法让Scala REPL忽略CTRL-C,或者甚至更好地用它来执行"粘贴"?我正在研究Linux.

om-*_*nom 6

我只知道如何防止 REPL 退出。重新映射CTRL+C以执行复制命令可以以相同的方式完成(如果有一些命令可以在不重启终端的情况下更改键盘映射——我不知道是否有)。无论如何,要阻止^C将您的 REPL 调用包装在 .sh 脚本中,如下所示:

#!/bin/bash

#switch off sensitivity to ^C
trap '' 2

# here goes REPL invoke
scala

#get back sensitivity to ^C
trap 2
Run Code Online (Sandbox Code Playgroud)

陷阱命令

定义并激活要在 shell 接收到信号或其他条件时运行的处理程序。

2 是一个SIGINT值(即按下时触发的信号CTRL+C

  • ^: 类似 `alias scala="bash -c \"trap '' SIGINT; scala\""` 会更有用,因此它只影响 scala 进程,而不影响当前/交互式 bash 会话。另外,最好使用别名,因为它只能交互使用(不会从其他程序调用)。 (2认同)