配好需三件事:能运行、有语法高亮、hover显示类型;右下角显示“plain text”说明haskell语言包未生效,须装官方haskell插件并重启,确认右下角显示“haskell”,再配置path、haskell.sublime-build及hls.yaml以支持运行与完整类型提示。

能跑起来、有高亮、hover 看到类型,三件事做完才算配好;缺一不可,不是装个插件就完事。
右下角显示 “Plain Text”?说明 Haskell 语言包根本没生效
这不是配置漏了,是 Sublime Text 默认不认 .hs 后缀。哪怕你装了 GHC 和 HLS,.hs 文件打开还是纯文本——关键词不着色、-> 和 = 没区别、缩进乱套。
- 先点右下角当前语言名(比如 “Plain Text”),看菜单里有没有
Haskell;没有,说明语言定义没装或损坏 - 用
Package Control: Install Package装官方Haskell插件(作者sublimelsp),别选SublimeHaskell或ghc-mod——后者已停更且不兼容 ST4 - 装完必须重启 Sublime;再开
.hs文件,右下角应显示Haskell,此时module、import、let才会变色 - 某些主题(如 Monokai)对
type或data的 scope 支持弱,可额外装Syntax Highlighting for Haskell补强
Ctrl+B 报 “command not found”?PATH 没被 Sublime 继承
Sublime 不自动读 shell 的 PATH,尤其 macOS/Linux 从 Dock 启动、Windows 从开始菜单启动时,它压根看不到你 ~/.ghcup/bin 或 %APPDATA%ghcupin 里的命令。
- 终端里先确认
runhaskell --version和ghc --version都能跑通;不能,就用ghcup install ghc和ghcup install hls - 在 Sublime 控制台(
Ctrl+`)里输import os; print(os.environ.get('PATH')),看输出里有没有你which runhaskell的路径 - 如果没有,编辑
Preferences.sublime-settings,加这段:"env": { "PATH": "/Users/you/.ghcup/bin:$PATH" }(macOS/Linux)或"env": { "PATH": "C:\Users\you\AppData\Roaming\ghcup\bin;%PATH%" }(Windows) - 保存后彻底重启 Sublime,别只 reload project
Build System 写对了还报错?runhaskell 有硬性限制
runhaskell 只能跑单文件脚本,不能处理 import Data.Text 或多模块项目。报 Could not find module 不是配置错,是它能力到此为止。
- 新建
Packages/User/Haskell.sublime-build,内容为:{ "cmd": ["runhaskell", "$file"], "selector": "source.haskell", "file_regex": "^([^:]*?):([0-9]+):([0-9]+):" } - 确保
$file路径不含空格;Windows 用户注意:命令行调用要带.bat后缀,即runhaskell.bat - 如果脚本里用了
getLine或其他需要 stdin 的函数,Ctrl+B会卡住不动——这是 Sublime build 系统的设计限制,不是 bug;真要交互,去终端跑runhaskell test.hs - 多文件项目别硬扛,改用终端
stack run或cabal run;非要集成进 Sublime,得另写Stack.sublime-build,设"working_dir": "${project_path}"
hover 不显示完整类型?HLS 默认做了“友好裁剪”
HLS 默认把 forall a. Eq a => a -> a -> Bool 折成 a -> a -> Bool,省略量词和约束——这对初学者友好,但函数式开发中你常需要原始签名来推理。
- 项目根目录建
hie.yaml,内容:cradle: direct: arguments: [] - 同级再建
hls.yaml(HLS v2.1+ 支持),内容:plugins: ghcide: typecheck: showFullTypes: true - 改完后必须执行
Ctrl+Shift+P → LSP: Restart Servers;只重启 Sublime 不生效,HLS 进程绑定的是旧配置 - 检查 HLS 版本是否匹配 GHC:GHC 9.4.x 对应 HLS 2.4.x,错一个 patch 版本就可能忽略
hls.yaml
最易被忽略的点:HLS 启动失败时 Sublime 往往静默降级,状态栏卡在 “Haskell: Starting…” 后消失,不报错也不提示——这时候得去终端手动跑 haskell-language-server --version 和 haskell-language-server --lsp 看输出,而不是反复重装插件。











