右下角未显示“Elixir”是所有问题的根源:语法未识别导致高亮失效、LSP不启动、构建报错;必须先确保右下角显示Elixir、Sublime Text≥4142、elixir-ls正确部署且路径配置无误。

右下角没显示“Elixir”,后面所有功能都白配——高亮失效、LSP不启动、构建报错,全卡在这一步。
右下角显示 Plain Text?语法包根本没生效
打开 .ex 或 .exs 文件,右下角显示 Plain Text 或 HTML,说明 Sublime 根本没加载 Elixir 语法定义。这不是插件装少了,而是路径或注册失败。
- 点击右下角语法名 → 从弹出菜单选
Elixir;若列表里没有,说明Packages/Elixir/Syntaxes/Elixir.sublime-syntax文件不存在 - 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS)→ 输入Set Syntax: Elixir,前提是已安装 Elixir 插件且路径正确 - 用
Preferences → Browse Packages…进入目录,确认Elixir/文件夹存在,且含Syntaxes/Elixir.sublime-syntax - 别装
Phoenix-Sublime试图“替代” Elixir 插件——它不提供基础.ex支持,还可能把.ex错误识别为Elixir (EEx)
Sublime Text 版本低于 4142?LSP 启动必失败
Sublime Text 4(build ≥ 4142)是运行 SublimeLSP + elixir-ls 的硬性门槛。旧版对项目根识别、进程启动、文档链接支持极弱,elixir-ls 进程常启动即退出,日志只显示 client stopped unexpectedly。
- 菜单栏 →
Help → About Sublime Text,确认 build 号 ≥ 4142;如果是 4126 或更早,先升级,别折腾配置 - 低版本下即使填对
command路径,LSP-elixir设置也大概率灰掉,状态栏不显示 LSP 图标 - 旧版
SublimeLSP对mix.exs位置推断有硬伤,会把项目根设错,导致依赖无法加载、跳转全部失效
elixir-ls 不是插件,是必须手动部署的二进制
elixir-ls 是独立语言服务器程序,不是 Sublime 插件。装完 SublimeLSP 和 ElixirSyntax 就以为齐活了,结果右键没有 Go to Definition,问题就出在这儿。
- 推荐方式(需 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 - 手动下载:去 GitHub Releases 下最新
elixir-ls-*.zip,解压后记下release/language_server.sh(或.bat)的绝对路径 - 验证是否可用:在终端直接运行该命令,看到
Starting language server即表示可执行;若报command not found,说明没加到系统PATH,LSP 配置中就得写全路径 - 在
Preferences → Package Settings → LSP → Servers → LSP-elixir用户设置中填入:"command": ["/your/absolute/path/to/language_server.sh"]
构建系统写 "shell": true 就废了
用 "shell": true 启动 mix test 或 mix run,Sublime 会丢掉实时输出流,错误堆栈卡在半截,日志断掉就看不到哪一行报错。
- 构建命令必须用原生数组写法:
"cmd": ["mix", "test"],不是"cmd": "mix test" -
$project_path必须指向含mix.exs的目录;没开项目时该变量为空,命令直接失败 - 单文件运行可用
["elixir", "$file"],但对 Phoenix 或任何mix项目完全无效——它不加载依赖、不读config/ - 构建系统保存为
Elixir.sublime-build,再通过Tools → Build System → Elixir手动启用,按Ctrl+B运行
最易被忽略的是:语法识别和版本门槛是前置条件,不是可选项。很多人花半天调 LSP 路径,却没发现右下角一直显示 Plain Text;或者死磕构建输出,却忘了 "shell": true 让 mix 流式日志直接消失。这些点不先踩实,后续所有配置都是空中楼阁。











