Sublime Text 4(build ≥ 4142)是稳定使用 elixir-ls 的前提,低版本存在LSP启动失败、根目录识别错误等问题;elixir-ls需手动安装为独立二进制,且LSP配置中syntaxes路径必须与ElixirSyntax插件实际路径一致。

Sublime Text 4(build ≥ 4142)才能稳定用 elixir-ls;低于这个版本,LSP 启动失败、项目根识别错、跳转失效是常态,不是配置问题。
确认 Sublime Text 版本是否达标
打开 Sublime Text,菜单栏 → Help → About Sublime Text。看到类似 Build 4142 或更高数字才算过关。如果是 Build 4126 或更早——别折腾 LSP 配置了,先升级。旧版 SublimeLSP 对 Elixir 的 mix.exs 位置推断、workspace folder 初始化逻辑有硬伤,elixir-ls 进程会启动后立刻退出,日志里只显示 client stopped unexpectedly。
elixir-ls 不是插件,是必须手动安装的独立二进制
很多人卡在这步:装完 SublimeLSP 和 ElixirSyntax 就以为齐活了,结果状态栏不显示 LSP,右键没有 Go to Definition。因为 elixir-ls 是个命令行程序,得单独部署:
- 推荐方式(需 Elixir ≥ 1.12):
mix archive.install github elixir-lsp/elixir-ls,成功后执行language_server.sh --version(macOS/Linux)或language_server.bat --version(Windows)能输出ElixirLS v0.116.0类似字样 - 手动下载:去
https://github.com/elixir-lsp/elixir-ls/releases找最新elixir-ls-*.zip,解压后记下release/language_server.sh(或.bat)的**绝对路径** - 验证 PATH:在终端直接运行
language_server.sh --version必须成功——如果报command not found,说明没加到系统 PATH,后续 LSP 设置里就得写全路径
LSP 设置里 syntax 匹配必须精准对应 ElixirSyntax
打开 Preferences → Package Settings → LSP → Settings,右侧用户设置中添加 clients 块。关键不是写对 command,而是 scopes 和 syntaxes 必须和你当前文件实际激活的语法一致:
- 确保已安装
ElixirSyntax插件(不是旧版Elixir包),否则右下角显示Plain Text,LSP 根本不会触发 - 检查当前文件语法:按
Ctrl+Alt+Shift+P(Windows/Linux)或Cmd+Alt+Shift+P(macOS),看输出是不是source.elixir;如果不是,手动设为View → Syntax → Elixir → Elixir - 配置示例(注意
syntaxes路径必须和你本地ElixirSyntax安装位置一致,常见为Packages/ElixirSyntax/Elixir.sublime-syntax):{ "clients": { "elixir-ls": { "command": ["/path/to/release/language_server.sh"], "scopes": ["source.elixir"], "syntaxes": ["Packages/ElixirSyntax/Elixir.sublime-syntax"], "languageId": "elixir", "enabled": true } } }
构建系统和 LSP 是两套东西,别混为一谈
有人把 elixir "$file" 构建系统配好了,就以为 LSP 也该工作——这是典型误解。构建系统只管运行代码,LSP 负责语义分析。它们互不依赖,但共用一个前提:右下角必须显示 Elixir。
- 如果构建能跑但 LSP 不生效:90% 是
syntaxes路径写错,或ElixirSyntax没装对 - 如果 LSP 日志里反复出现
no matching syntax:说明文件虽是.ex后缀,但 Sublime 并未将其识别为source.elixir,检查View → Syntax是否被手动切成了其他模式 - 混合 Phoenix 项目时,
.eex文件默认不走 elixir-ls,需要额外配source.eelixirscope 和对应 syntax,否则模板里的 Elixir 表达式无法跳转
最常被忽略的点:LSP 启动依赖 mix.exs 存在且可解析。如果打开的是单个 .ex 文件而非项目根目录,elixir-ls 可能因找不到依赖而降级为“无项目模式”,此时补全、跳转能力大幅缩水——不是配置漏了,是工作区没设对。

















