如何在Windows 10下避免Scala REPL(2.12.4)因CTRL-C终止?
解决Windows 10上Scala REPL 2.12.4按Ctrl+C强制退出的问题
我之前也碰到过这个糟心的问题!在Windows命令提示符里运行Scala 2.12.4 REPL时,按下Ctrl+C总会弹出“Terminate batch job (Y/N)?”的提示,而且不管选Y还是N,整个REPL都会直接终止,每次都得重新启动,太影响效率了。这里有几个亲测有效的解决办法:
方法1:用Ctrl+Break替代Ctrl+C
Windows系统里,Ctrl+Break是专门给控制台程序发送中断信号的快捷键,Scala REPL能正确识别这个信号——它只会终止当前正在运行的代码,而不会退出整个REPL会话。
注意:有些笔记本键盘没有独立的Break键,可能需要组合键触发,比如
Ctrl+Fn+B或者Ctrl+Shift+Fn+B,具体取决于你的键盘布局。
方法2:修改Scala启动脚本(推荐)
这个方法能从根源上解决batch脚本拦截Ctrl+C的问题,步骤如下:
- 找到Scala的安装目录,默认路径一般是
C:\Program Files (x86)\scala\bin - 右键点击
scala.bat文件,选择“编辑”(需要管理员权限才能保存修改) - 在文件中找到类似下面的命令行:
"%_JAVACMD%" %_JAVA_OPTS% %SCALA_OPTS% %_TOOL_OPTS% -classpath "%_TOOL_CLASSPATH%" scala.tools.nsc.MainGenericRunner %* - 在
%_JAVA_OPTS%后面添加终端兼容参数,修改后变成:"%_JAVACMD%" %_JAVA_OPTS% -Djline.terminal=jline.UnsupportedTerminal %SCALA_OPTS% %_TOOL_OPTS% -classpath "%_TOOL_CLASSPATH%" scala.tools.nsc.MainGenericRunner %* - 保存文件后,重新启动Scala REPL。现在按下
Ctrl+C就只会中断当前代码,不会弹出终止提示了。
方法3:使用现代终端替代cmd
默认的命令提示符(cmd)对控制台程序的信号处理比较老旧,试试用Windows Terminal或者PowerShell Core来运行Scala REPL:
- 打开Windows Terminal(从微软商店就能安装)
- 在终端里输入
scala启动REPL - 此时按下
Ctrl+C,大部分情况下只会中断当前运行的代码,不会触发batch job的终止提示。
内容的提问来源于stack exchange,提问作者Sambo
相关产品推荐
相关产品推荐

