Sublime如何配置Elixir语言支持?(函数式Web开发)

6次阅读

elixir语法高亮不生效因未装正确插件,应安装languageelixir并手动设置语法;mix formatsublimeonsavebuild配合项目级.sublime-build配置;mix test须在含mix.exs的项目根目录下运行。

Sublime如何配置Elixir语言支持?(函数式Web开发)

安装 Elixir 语言包后为什么 elixir 语法高亮不生效?

Sublime 默认不带 Elixir 支持,必须手动装插件。常见错误是只装了 ElixirTmbundle(老版 TextMate 兼容包),但 Sublime 3/4 实际需要的是 SublimeElixir 或更现代的 LanguageElixir

  • SublimeElixir 提供基础语法高亮 + mix 命令集成,但已停止维护,偶尔在 macos 上触发 Python 2 兼容问题
  • LanguageElixir 是当前推荐:纯语法定义,零依赖,兼容 Sublime 4,支持 .ex.exs.eex 自动识别
  • 安装后需右键文件 → Set Syntax → Elixir 手动触发一次,否则新建文件可能仍用 Plain Text

如果文件已打开但没高亮,试试快捷键 Ctrl+Shift+P(Win/linux)或 Cmd+Shift+P(macOS)→ 输入 Set Syntax: Elixir 回车。

如何让 mix format 在保存时自动运行?

Sublime 本身不内置格式化器调用,得靠 SublimeOnSaveBuildSublimeLinter-contrib-mix_format 这类插件桥接。但注意:mix format 是 Elixir 1.6+ 的 CLI 工具,不是 Sublime 插件,必须确保系统 PATH 能找到它。

  • 先在终端运行 which mix,确认路径(如 /usr/local/bin/mix
  • 若用 asdf / kiex / direnv 管理 Elixir 版本,Sublime 可能读不到 shell 的 PATH,需在 Sublime 的 Preferences → Settings – User 中补全:
    "path": "/usr/local/bin:/Users/you/.asdf/shims"
  • 推荐用 SublimeOnSaveBuild:安装后,在项目根目录放 .sublime-build 文件,内容为:
    { "cmd": ["mix", "format", "$file"], "selector": "source.elixir", "quiet": true }
  • 切勿勾选 Build on Save 全局开关——它会干扰其他语言;应只对 Elixir 文件启用,靠 selector 控制范围

mix test 快速运行单个测试用例失败,提示 ** (undefinedfunctionError) function Mix.Project.config/0 is undefined

这是典型工作目录错位:Sublime 当前打开的是单个 test/some_test.exs 文件,但 mix test 必须在含 mix.exs 的项目根目录下执行。

  • 不要双击打开测试文件单独编辑,而是用 Sublime 打开整个项目文件夹(File → Open Folder...
  • 运行测试前,先确认 Sublime 状态栏右下角显示 Project: your_app_name,而非 Project: None
  • 如果用 SublimeBuild 配置 mix test,务必设 "working_dir": "$project_path",否则 $file 路径无效
  • 想跑单个测试,别用 mix test test/some_test.exs:42 这种写法——Sublime 的变量替换不解析行号,直接写死路径更稳:
    "cmd": ["mix", "test", "test/some_test.exs"]

Elixir 的工具链和 Sublime 的上下文隔离很严格,路径、shell 环境、项目结构这三点只要漏一个,命令就静默失败或报奇怪的 UndefinedFunctionError。调试时优先看终端里 mix test 能不能跑通,再倒推 Sublime 配置哪里没对齐。

text=ZqhQzanResources