必须先确认scalac和scala在终端能运行,否则sublime构建无效;macos需用终端启动sublime以继承path;安装官方scala插件并手动设置语法;构建系统须捕获stderr、设working_dir和正确file_regex;lsp+metals才能实现补全跳转,依赖build.sbt和jdk。

确认 scalac 和 scala 在终端能跑通是前提
别跳过这步——Sublime 里所有构建行为都依赖系统 PATH。在终端执行 scalac -version 和 scala -version,必须输出类似 Scala compiler version 2.13.12 的结果;再执行 which scalac 和 which scala,返回非空路径(如 /usr/local/scala/bin/scalac)。如果任一命令报 command not found,说明 PATH 没配对,后续配置全无效。
macOS 用户尤其注意:从 Dock 或 Spotlight 启动 Sublime 时,它不会加载 ~/.zshrc 中的 PATH。必须用终端运行 open -a "Sublime Text" 启动;Windows 用户要检查系统环境变量 Path 是否含 scala\bin,且改完后需彻底退出 Sublime 进程(右键任务栏 → Exit),不能只关窗口。
装对插件并手动激活 Scala 语法
官方推荐的 Scala 插件是 James Bremner 维护的那个,Package Control 中搜 “Scala”,排第一、名称就叫 Scala。不是 ScalaSyntax、sublack 或带括号后缀的变体。
安装后必须重启 Sublime(彻底退出进程),然后打开一个 .scala 文件,看右下角状态栏是否显示 Scala。如果显示 Plain Text,点击它 → 选择 Scala → Scala(注意是二级菜单)。若菜单里根本没有 Scala 选项,说明插件没生效,重装或检查 Sublime Text 版本是否为 v4(Build 4143+)。
- 不要依赖“自动识别”:Sublime 不会根据文件内容猜语言,扩展名绑定靠插件配置,但首次仍需手动点选
- 全局生效可右键文件 →
Open with → Sublime Text,再设一次语言,或在Preferences → Settings – Syntax Specific中加"syntax": "Packages/Scala/Scala.sublime-syntax"
构建系统必须捕获 stderr 才能跳转错误行
网上抄来的 Scala.sublime-build 模板常失效,因为 scalac 把错误信息写进 stderr,而默认构建系统只读 stdout,导致编译失败却点不了报错行。
正确做法是显式合并错误流:"shell_cmd": "scalac \"$file\" 2>&1",或用 cmd 字段写绝对路径:["/usr/local/scala/bin/scalac", "$file"]。同时必须设 "working_dir": "$file_path",否则 import 语句因相对路径找不到类;"file_regex" 要匹配 Scala 错误格式,例如 "^([^:]+):([0-9]+):(?:[0-9]+):",才能双击 MyApp.scala:5: error: 跳转到对应行。
- 别用泛用正则
^.*?:([0-9]+):([0-9]+)::它会吞掉文件名,跳转到错误文件 - 分设两个构建系统:一个叫
Scala(只编译),另一个叫Scala Run(运行已生成的.class),避免混在一起导致类路径混乱 -
Scala Run的cmd应为["/usr/local/scala/bin/scala", "$file_base_name"],前提是当前目录在$file_path且已存在同名.class文件
LSP + Metals 才有补全和跳转,不是装个语法插件就行
官方 Scala 插件只提供高亮和文件识别,没有补全、悬停看类型、跳转定义等能力。这些功能必须靠 LSP 协议 + Metals 语言服务器实现。
要启用智能提示,得三者齐备:安装 LSP 插件(作者 sublimelsp)、再装 lsp-metals(作者 tombry)、项目根目录下必须有 build.sbt(哪怕只有一行 scalaVersion := "2.13.12")。打开项目要用 File → Open Folder,不能只开单个 .scala 文件——LSP 客户端只在文件夹模式下激活。
- 首次打开会下载 metals-launcher(约 80MB),需稳定网络;可提前下载并配置
"server_binary_path"避免卡住 - java -version 必须输出 JDK(不是 JRE),且
$JAVA_HOME/bin在 PATH 中;GUI 启动 Sublime 时若 PATH 缺失,LSP 日志会卡在Starting server - 用了 Scala 3?确保
lsp-metals是 v0.12+,老版本不支持 Scala 3.3+
PATH 继承问题最容易被忽略,尤其是 macOS GUI 启动场景;file_regex 写错会导致满屏错误却无法跳转;LSP 启动失败往往不是插件问题,而是 build.sbt 位置不对或 JDK 不可用——这些环节断一个,整个语义功能就静默失效。











