终端能跑通 scalac 和 scala 才是前提,需验证版本输出、路径存在,并解决 macOS/Windows 的 PATH 继承问题;插件须手动激活且右下角显示“Scala”;file_regex 必须精准匹配错误格式并配合 2>&1 捕获 stderr。

终端能跑通 scalac 和 scala 才是前提
Sublime Text 不自带编译器,所有构建行为都依赖系统 PATH 中的 scalac 和 scala 命令。如果终端里执行失败,Sublime 里必然报错,且无法修复。
- 必须逐条验证:
scalac -version和scala -version有输出(如Scala compiler version 2.13.12) -
which scalac和which scala返回非空路径(如/usr/local/scala/bin/scalac) - macOS 用户注意:从 Dock 或 Spotlight 启动 Sublime 时,
PATH不继承;必须用终端运行open -a "Sublime Text" - Windows 用户检查系统环境变量
Path是否包含scala\bin,改完后要彻底退出 Sublime 进程(右键任务栏 → Exit),不能只关窗口
装对插件并让右下角显示 “Scala”
插件装了 ≠ 文件被识别为 Scala —— Sublime 不会自动推断语言,扩展名绑定靠插件,但首次仍需手动激活。
- 通过 Package Control 安装作者为 James Bremner 的插件,名称就是
Scala;别选ScalaSyntax、sublack或带括号后缀的变体 - 安装后必须彻底重启 Sublime(不只是关窗口),否则部分语法定义不加载
- 打开一个
.scala文件,看右下角状态栏:若显示Plain Text,点击它 → 选择Scala→Scala(注意是二级菜单,不是Scala (sbt)或Scala (SublimeREPL)) - 若菜单里根本没有
Scala选项,说明插件未生效,重装或确认 Sublime Text 版本 ≥ v4 (Build 4143+)
file_regex 写错就点不了错误行
Scala 编译错误格式固定为 MyApp.scala:5: error: not found: value x,file_regex 必须精准匹配才能双击跳转。
- 正确写法:
"file_regex":"^([^:]+):([0-9]+):(?:[0-9]+):" - 第一组
([^:]+)捕获文件名(如MyApp.scala) - 第二组
([0-9]+)捕获行号(如5) - 第三段列号用
(?:[0-9]+):非捕获组跳过,避免干扰跳转 - 千万别抄泛用模板
^.*?:([0-9]+):([0-9]+):—— 它会吞掉文件名,导致双击跳到错误文件 - 必须配合
2>&1使用,例如"shell_cmd": "scalac \"$file\" 2>&1",否则错误在stderr,file_regex根本捕获不到
构建系统要用 shell_cmd + 2>&1,别混用 cmd 和流重定向
cmd 和 shell_cmd 行为差异极大:前者不走 shell,不支持 2>&1;后者支持管道和重定向,但路径需可被 shell 解析。
- 推荐统一用
shell_cmd:"shell_cmd": "/usr/local/scala/bin/scalac \"$file\" 2>&1"(macOS/Linux)或"shell_cmd": "scalac \"$file\" 2>&1"(Windows,前提是 PATH 正确) -
cmd字段若要用,必须写绝对路径数组:["/usr/local/scala/bin/scalac", "$file"],不能加2>&1 - 必须设
"working_dir": "$file_path",否则import语句因相对路径找不到依赖 - 不要把编译和运行塞进一个构建系统——分设
Scala(只编译)和Scala Run(运行),避免类路径混乱


















