Sublime Text 默认不支持 Haskell 语法高亮和 GHCi 运行,因其未内置 Haskell 语言包,.hs 文件默认以 Plain Text 模式打开,无关键字着色、缩进规则或类型提示;必须手动安装 SublimeHaskell 等插件并配置 GHC/cabal/stack 路径及自定义 Build System 才能实现语法高亮、类型检查与交互式运行。

为什么 Sublime Text 默认不支持 Haskell 语法高亮和 GHCi 运行
Sublime Text 本身不内置 Haskell 支持,打开 .hs 文件时默认用纯文本模式,没有关键字着色、缩进规则或类型提示。这不是配置错误,而是语言包缺失——它不像 Python 或 JavaScript 那样被默认收录。
常见现象包括:data、where、let 不变色;-> 和 = 没有语法区分;按 Tab 不自动对齐 do 块;保存后无法一键调用 ghci 加载模块。
- 必须手动安装
Haskell-sublime或SublimeHaskell插件(后者功能更全,但依赖 Python 3 环境) -
SublimeHaskell需要系统已安装ghc和cabal(或stack),且能从命令行直接调用 - Windows 用户注意:若
ghci在 CMD 中可用,但在 Sublime 中报'ghci' is not recognized,大概率是 PATH 没被 Sublime 继承(尤其通过开始菜单启动时)
如何正确安装并启用 SublimeHaskell 插件
推荐使用 Package Control 安装,避免手动解压路径出错。确保已安装 Package Control(没装的话先用 Ctrl+` 调出控制台,粘贴官方安装脚本)。
安装步骤:
- Ctrl+Shift+P → 输入
Package Control: Install Package→ 回车 - 等待列表加载完成,输入
SublimeHaskell→ 选中并回车(注意不是Haskell-sublime) - 安装完成后重启 Sublime(必要:插件需初始化 GHC 路径和 cabal/stack 配置)
- 新建文件,保存为
test.hs,再从右下角状态栏点击语法切换 →Haskell(或按 Ctrl+Shift+P →Set Syntax: Haskell)
此时应看到 module、import 变蓝,函数名左对齐,in 和 of 有高亮——说明语法支持已生效。
怎样让 Ctrl+B 直接运行 Haskell 脚本(而非只编译)
Sublime 默认的 Build System 对 Haskell 是空的。想按 Ctrl+B 就在面板里跑 ghci 加载当前文件,必须自定义 build 文件。
操作路径:Tools → Build System → New Build System…,粘贴以下内容后保存为 Haskell.sublime-build:
{
"cmd": ["ghci", "$file"],
"selector": "source.haskell",
"working_dir": "$file_path",
"variants":
[
{
"name": "Load in GHCI",
"cmd": ["ghci", "$file"]
}
]
}
关键点:
-
"cmd"必须写["ghci", "$file"],不能写["runhaskell", "$file"]——后者只执行 Main.main,不进交互式环境,没法试let x = 2 + 3 -
"working_dir"设为$file_path,否则import同目录下的其他模块会失败(Module not found) - 如果用
stack项目,可把"cmd"改成["stack", "ghci", "--no-load", "--load", "$file"],避免自动加载整个 package
SublimeHaskell 报错 “Cannot find cabal or stack” 怎么办
这个提示不是说没装 cabal/stack,而是插件找不到可执行文件路径。它默认只查 PATH,不读 shell 的 ~/.bashrc 或 ~/.zshrc。
解决方式分平台:
- macOS / Linux:在 Sublime 的
Preferences → Package Settings → SublimeHaskell → Settings中,添加:"add_to_PATH": ["/Users/yourname/.cabal/bin", "/Users/yourname/.local/bin"] - Windows:确认
cabal.exe和ghci.exe所在目录(如C:\Program Files\Haskell Platform\9.2.8\bin)已加到系统环境变量 PATH,并用任务管理器彻底关闭所有 Sublime 进程后再重开 - 通用验证法:在 Sublime 控制台(Ctrl+`)里运行
import subprocess; print(subprocess.check_output(['ghci', '--version'])),看是否返回版本号
插件真正依赖的是 cabal v2-repl 或 stack repl 来做类型检查和自动补全,光有 ghci 不够——所以这个报错不处理,Ctrl+Shift+P → Haskell: Check File 就会卡住或失败。


















