sublime text 默认不能运行 haskell 是因为它只是编辑器,需依赖系统已安装的 ghc 或 runhaskell;常见失败原因是未安装 ghc、path 未配置正确或构建系统配置错误。

为什么 Sublime Text 默认不能运行 Haskell
Sublime Text 本身只是文本编辑器,不带编译器或解释器。想「Ctrl+B 运行 Haskell」,本质是让它调用系统已安装的 ghc 或 runhaskell,再把输出展示在底部面板。如果没装 GHC、路径没加进系统环境变量、或者构建系统配置错命令,就会报 sh: ghc: command not found 或 [Errno 2] No such file or directory。
确认 GHC 已正确安装并可命令行调用
这是最常被跳过的一步——很多人以为装了 Haskell Platform 就万事大吉,但 macOS 上可能装在 /usr/local/bin/ghc,而 Sublime(尤其从 Dock 启动)默认不读 shell 的 PATH;Windows 用户则常因安装时没勾选「Add to PATH」导致失败。
- 终端里运行
ghc --version和runhaskell --version,必须有输出 - macOS:如果终端能运行但 Sublime 不行,用
launchctl setenv PATH "$PATH"(重启 Sublime)或改用subl命令从终端启动 - Windows:检查「系统属性 → 高级 → 环境变量」中
PATH是否含C:\Program Files\Haskell\bin或类似路径
创建自定义 Haskell 构建系统(.sublime-build)
Sublime 的构建系统是 JSON 格式文件,存放在 Packages/User/ 目录下。不要改默认的 Haskell.sublime-build(它只支持语法高亮,不带执行逻辑)。
新建文件 HaskellRun.sublime-build,内容如下:
{
"cmd": ["runhaskell", "$file"],
"file_regex": "^(...*?):([0-9]+):([0-9]+):? ?(.*)$",
"selector": "source.haskell",
"working_dir": "$file_path"
}
-
cmd用runhaskell而非ghc:适合快速测试单文件脚本,避免生成 .o/.hi 文件干扰 -
file_regex让错误行号可点击跳转;正则匹配Foo.hs:12:5: error:这类格式 -
working_dir设为$file_path,确保模块导入、数据文件读取等相对路径正常 - 保存后按
Cmd+Shift+P(macOS)或Ctrl+Shift+P(Win/Linux),输入Build System→ 选HaskellRun
处理多文件项目或需要 GHC 编译的情况
单靠 runhaskell 无法处理多个模块、Cabal 项目或需要链接外部库的场景。这时候得切到项目根目录手动跑 cabal run 或 stack exec -- your-executable,Sublime 不适合替代终端做项目构建。
- 若坚持在 Sublime 内触发,可写一个新构建系统,
cmd改成["cabal", "run"],但要求当前文件是.cabal所在目录,且cabal在 PATH 中 - 注意
cabal run会重新构建整个项目,比runhaskell慢得多,不适合高频试错 - 对于依赖
ghci的交互式调试(比如 :l 加载模块),Sublime 本身不提供 REPL 集成,得另开终端或用SublimeREPL插件(但该插件已多年未维护,稳定性差)
真正卡住人的往往不是配置步骤,而是 GHC 路径对不上、构建系统没选对、或者误以为 Sublime 能像 VS Code 那样自动识别 Cabal 项目结构——它不能。每一步都得亲手验证命令是否真能跑通,而不是“看起来配好了”。










