Sublime Text 的 Haskell 插件不弹出 ghci 是因未安装 GHC 或 PATH 未配置;Ctrl+B 构建失败是因 runhaskell 不支持多文件项目;LSP 卡顿源于 HLS 启动慢且需版本匹配;非标后缀需手动关联语法和设置 syntax_files。
Sublime Text 装完 Haskell 插件为啥
不弹出来?
根本原因是 Sublime Text 本身不带 Haskell 运行时,插件只是“调度员”,
必须已安装且能被系统 PATH 找到。常见错误是只装了
或
,但没装 GHC,或者装了却没加进环境变量。
实操建议:
终端运行
,有输出才说明 GHC 就绪;没有就去
ghcup
装(别用系统包管理器,容易版本错乱)
Windows 用户尤其注意:PowerShell 和 CMD 的 PATH 可能不同,Sublime 默认继承的是 CMD 环境,改完 PATH 后要彻底重启 Sublime(不是 reload project)
插件推荐用
(GitHub 上
是 LSP 方案,对新手略重),它依赖
或
,后者更现代——但必须手动指定路径,在插件设置里填
为什么
构建 Haskell 文件总报
?
Sublime 的默认构建系统只调
,它不处理多文件项目或依赖,遇到
就跪。这不是配置错,是能力边界问题。
实操建议:
单文件脚本:把第一行加上
并确保没 import 非 Prelude 模块,再用
才稳
真实项目:放弃
,改用终端 +
或
;如果非要集成进 Sublime,得自定义构建系统,比如写个
,内容里
,并设
别信网上“一键配置 build system”的 JSON 片段,它们大多忽略
和
,导致在子目录下构建失败
补全慢、跳转卡、hover 不显示类型?
核心瓶颈不在 Sublime,而在
(HLS)的启动和索引过程。它要解析整个项目依赖树,首次加载可能耗时 30 秒以上,期间所有功能都假死。
仿Sublime和notepad++编辑器效果
仿Sublime和notepad++编辑器效果
下载
实操建议:
确认 HLS 版本与 GHC 版本严格匹配(例如 GHC 9.2.8 → 用 HLS 2.0.x,查
兼容表
),错一个 patch 版本就可能无限 loading
项目根目录下放
显式声明 cradle 类型,比如 Stack 项目写
,避免 HLS 自动探测失败
关掉不用的 LSP 功能:在 LSP 设置里禁用
(Sublime 渲染负担大),保留
和
就够用
怎么让 Sublime 正确识别
或
这类非标后缀?
Sublime 默认只认
,其他后缀不会触发语法高亮、构建、LSP 等任何 Haskell 相关逻辑,连括号匹配都失效。
实操建议:
菜单栏 →
View → Syntax → Open all with current extension as… → Haskell
,这样当前文件和同后缀文件都会生效
永久生效需改 User 设置:打开
,加一行
,再在
里选一次,Sublime 就会记住映射
注意
文件不能被 HLS 加载(GHC 内部机制限制),补全和跳转必然失效,这是语言设计决定的,不是配置问题
最麻烦的其实是项目结构感知——HLS 对
位置、
格式、甚至 cabal file 的缩进都敏感,一个空格不对就拒绝工作。与其反复调配置,不如先用
在终端跑一遍,看它卡在哪行日志,比在 Sublime 里盲猜快得多。
ghcighcistackcabalghci --versionHaskell-Sublimesublimelsp/LSP-haskellhaskell-ghc-modhaskell-language-server"haskell_language_server_path": "/path/to/haskell-language-server"Ctrl+BCould not find modulerunhaskellimport{-# LANGUAGE NoImplicitPrelude #-}runhaskellCtrl+Bstack runcabal runHaskell-Stack.sublime-build"cmd": ["stack", "run"]"working_dir": "${project_path}"working_dirselectorLSP-haskellhaskell-language-serverhie.yamlcradle: {stack: {component: "myproj:lib"}}"semantic_highlighting""completion""signatureHelp".hs-boothsx.hsPreferences → Package Settings → Haskell-Sublime → Settings"syntax_files": ["Packages/Haskell/Haskell.sublime-syntax"]View → Syntax → Open all with current extension as….hs-bootstack.yamlpackage.yamlhaskell-language-server --debug .