Sublime Text 默认不识别 .hs 文件,因其未内置 Haskell 支持;必须安装官方 Haskell 插件、正确配置 PATH、确保项目根目录含 .cabal/package.yaml/hie.yaml,三者缺一不可,否则语法高亮、类型提示、跳转等功能均失效。

Sublime Text 默认不识别 .hs 文件,打开就是 “Plain Text”,这不是你配错了,是它压根没内置 Haskell 支持——装对插件、PATH 正确、项目结构合规,三者缺一不可。
右下角显示 “Plain Text” 怎么办?
这是最表层但最关键的信号。Sublime 不像 VS Code 那样自动关联后缀,也不自带语言定义。
- 先点右下角语言名(比如 “Plain Text”),看菜单里有没有 Haskell;没有就说明语言包没装或损坏
- 用 Package Control 安装官方
Haskell插件(作者是sublimelsp),不是SublimeHaskell或ghc-mod——后者已停更且不兼容 Sublime Text 4 - 安装后必须重启 Sublime,再打开
.hs文件,右下角才可能变成Haskell - 某些主题(如 Monokai)对
module、import、类型签名等 scope 着色弱,可额外装Syntax Highlighting for Haskell补强
Ctrl+B 运行单文件脚本总失败?
默认 Build System 对 Haskell 是空的,而且 runhaskell 有明确能力边界:只适用于无依赖、无 import 非 Prelude 模块的单文件脚本。
- 按
Tools → Build System → New Build System,粘贴并保存为Packages/User/Haskell.sublime-build:
{
"cmd": ["runhaskell", "$file"],
"selector": "source.haskell",
"file_regex": "^([^:]*?):([0-9]+):([0-9]+):"
}
runhaskell --version;若失败,用 ghcup install ghc 装 GHC,并把 ~/.ghcup/bin(macOS/Linux)或 %APPDATA%\ghcup\bin(Windows)加入系统 PATHCould not find module 错误,说明已超出 runhaskell 能力范围——别硬调构建系统,改用终端 stack run 或 cabal run
类型提示、跳转定义全失效?
语法高亮只是表层,真正功能(hover 类型、Ctrl+Click 跳转、错误诊断)全依赖 haskell-language-server(HLS)成功启动。而 HLS 启动失败时,Sublime 往往静默降级,状态栏不报错也不提示。
- 终端执行
haskell-language-server --version;若报command not found,说明 HLS 没装或不在 PATH - Sublime(尤其 macOS/Linux 从 Dock 启动)默认不继承 shell 的 PATH,需手动验证:
Ctrl+`打开控制台,输入import os; print(os.environ.get('PATH')),确认输出含which haskell-language-server的路径 - 必须装
LSP插件(底层通信) +LSP-haskell(LSP-haskell 已废弃,搜Haskell Language Server即可) - 项目根目录必须含
.cabal、package.yaml或hie.yaml;否则 HLS 启动失败,插件连日志都不打 - 改完配置后必须重启 Sublime——HLS 进程在启动时就绑定项目路径,reload project 不生效
为什么 HLS 卡在 “starting…” 或 hover 不出类型?
这不是插件问题,是 HLS 自身行为:首次加载要解析整个依赖树,耗时可能超 30 秒;且对 GHC 版本极其敏感,错一个 patch 版本就可能无限 loading。
- 查兼容表,确保
haskell-language-server版本与项目所用 GHC 严格匹配(例如 GHC 9.2.8 → HLS 2.0.x) - 项目根目录放
hie.yaml显式声明 cradle,比如 Stack 项目写:cradle: stack: component: "myproj:lib" - 确认
ormolu(HLS 默认格式器)已安装且在 PATH:ormolu --version;否则格式化静默禁用 - Windows 用户注意:路径含中文或空格会导致 HLS 启动失败,且 Sublime 默认继承 CMD 环境变量,改完 PATH 后务必彻底重启
最容易被忽略的是:Sublime 的 Haskell 功能完全不“自包含”,所有智能行为都靠外部工具链驱动。PATH 没对齐、HLS 版本不匹配、项目根目录缺 .cabal 或 hie.yaml——这三处任一出问题,都会导致功能静默失效,连错误提示都没有。



















