Sublime Text 可通过插件与工具链实现 Haskell 开发支持,关键在于本地已安装并配置好 ghc/stack/cabal,再安装 SublimeHaskell 插件并指定 haskell-language-server 路径,最后自定义构建系统以支持一键运行。

Sublime Text 本身不内置 Haskell 支持,但通过插件 + 正确的工具链配置,可以实现语法高亮、类型提示、错误跳转和一键运行。关键不在“装什么插件”,而在于 ghc、stack 或 cabal 是否可用,以及构建系统能否准确定位可执行文件。
确认本地 Haskell 工具链已就绪
Sublime 不负责编译 Haskell,它只调用你系统里已安装的工具。如果 ghc --version 或 stack --version 报 “command not found”,所有后续配置都会失败。
-
macOS:用
brew install ghc cabal-install或brew install haskell-stack - Windows:推荐直接安装
stack(官网下载 installer),它自带 GHC;避免单独装 GHC,路径常出问题 - Linux(Ubuntu/Debian):
sudo apt install ghc cabal-install,再运行cabal update
验证方式:终端中执行 ghc --version 和 stack exec -- ghc --version 都应返回版本号。若后者失败,说明 stack 环境未初始化,先运行 stack setup。
安装 SublimeHaskell 插件(核心依赖)
这是目前 Sublime 上最成熟、仍在维护的 Haskell 插件,提供语法检查、符号跳转、类型提示、模块补全等功能。它依赖 hdevtools 或 ghc-mod(已弃用)或 haskell-language-server(推荐)。
- 用 Package Control 安装
SublimeHaskell后,**必须手动配置后端**,否则只有基础高亮 - 优先使用
haskell-language-server(简称 HLS):它由 Haskell 社区官方维护,兼容 Stack/Cabal 项目,支持 LSP 协议 - 安装 HLS:
stack install haskell-language-server(Stack 项目)或cabal install haskell-language-server(Cabal 项目) - 安装完成后,检查路径:
which haskell-language-server,把输出路径记下来(如/home/user/.local/bin/haskell-language-server)
在 Sublime 中打开 Preferences → Package Settings → SublimeHaskell → Settings,填入:
{
"haskell_language_server_path": "/your/path/to/haskell-language-server",
"enable_haskell_ide_engine": false,
"enable_ghc_mod": false
}
配置构建系统(让 Ctrl+B 运行 .hs 文件)
默认构建系统不认识 .hs,需手动定义。不建议复用插件自带的 “Haskell” 构建(常过时),直接写一个轻量级的 Shell 调用更可控。
- 菜单栏选择
Tools → Build System → New Build System… - 替换全部内容为以下(适配 Stack 项目):
{
"cmd": ["stack", "runghc", "$file"],
"file_regex": "^(...*?):([0-9]+):([0-9]+):? ?(.*)$",
"selector": "source.haskell",
"syntax": "Packages/Haskell/Haskell.sublime-syntax"
}
- 保存为
Haskell.sublime-build(自动存到 User 目录) - 若用 Cabal 项目,把
"cmd"改成:["cabal", "v2-run", "--", "$file_base_name"],但要求当前目录是含.cabal文件的根目录 -
file_regex是关键:它让 Sublime 解析 GHC 错误位置并支持点击跳转;正则必须匹配 GHC 输出格式,否则报错不标行
常见问题与绕过坑点
很多配置失败不是因为步骤错,而是环境细节被忽略:
-
haskell-language-server找不到项目配置?确保$file打开的是项目内文件,且当前工作目录(右下角状态栏显示)是含stack.yaml或cabal.project的目录 - Ctrl+B 没反应?检查是否选对了构建系统(右下角应显示 “Haskell”),且文件已保存(
$file不支持未保存缓冲区) - 类型提示不出现?SublimeHaskell 默认只在光标停在函数名或变量上 500ms 后触发;可调小
tooltip_delay_ms设置 - Windows 下
stack runghc报路径错误?把stack.exe所在目录加进系统 PATH,或改用绝对路径:"cmd": ["C:/Users/xxx/AppData/Roaming/local/bin/stack.exe", "runghc", "$file"]
真正卡住的地方,往往不是 Sublime 设置,而是 stack.yaml 里的 resolver 和本地 GHC 版本不匹配,或者项目没 build-depends 声明依赖 —— 这些问题 HLS 会报错,但错误信息藏在 Sublime 控制台(Ctrl+`)里,得手动翻。










