vscode配置haskell需手动安装ghcup与hls并严格匹配ghc版本,指定中科大镜像源加速国内安装,vscode中必须设置haskell.serverexecutablepath为wrapper路径,且项目根目录须含.cabal或stack.yaml文件才能启用完整语言功能。

VSCode 本身不带 Haskell 支持,必须手动装好 ghcup + haskell-language-server(HLS),再配对项目结构,否则 HLS 根本不会启动——悬停没类型、跳转失效、错误不标红,都是因为这个环节断了。
用 ghcup 装工具链,必须换中科大镜像
官方源在国内基本不可用,ghcup 默认会卡死或校验失败。Windows 用户要在 PowerShell(非管理员)里先设镜像再运行安装脚本:
$env:BOOTSTRAP_HASKELL_YAML = 'https://mirrors.ustc.edu.cn/ghcup/ghcup-metadata/ghcup-latest.yaml'Set-ExecutionPolicy Bypass -Scope Process -Force- 再执行安装命令(含
Invoke-WebRequest那一长串)
Linux/macOS 用户用 curl 安装后,也要立刻运行:
ghcup set mirror https://mirrors.ustc.edu.cn/ghcup/
装的时候务必勾选 HLS、指定非系统盘路径(如 D:\ghcup)、允许自动写入 PATH,否则 VSCode 终端里 ghc --version 会报 command not found。
VSCode 必须手动指定 haskell.serverExecutablePath
Haskell 插件(ID: Haskell.haskell)经常自动探测失败,静默降级为仅语法高亮。解决方法是硬编码路径:
- 打开设置(
Ctrl+,),搜haskell.serverExecutablePath - 填入完整路径,例如 Windows:
D:\ghcup\bin\haskell-language-server-wrapper.exe - macOS/Linux:
~/.ghcup/bin/haskell-language-server-wrapper
不确定路径?终端里跑 which haskell-language-server-wrapper 或 ghcup list 查已安装版本对应路径。别填 haskell-language-server,wrapper 才能自动选 GHC 版本。
项目根目录必须有 .cabal 或 stack.yaml
HLS 不识别单个 .hs 文件,也不认空文件夹。打开 VSCode 时一定要“Open Folder”,而不是“Open File”。常见错误现象:
- 右下角状态栏一直显示 “Loading…” 或干脆没反应
- 悬停函数名无类型,
Ctrl+Click跳转失败 - 修改代码后错误不实时标红
快速验证:在终端进项目根目录,运行 cabal init -n 生成最小 .cabal,或用 stack new myproj 创建标准项目。HLS 启动后,状态栏会变成 “Ready” 并显示 GHC 版本号。
最容易被忽略的是项目元数据文件和打开方式——哪怕 ghcup 和 HLS 全装对了,只开一个 Main.hs,它就只是个带高亮的文本编辑器。











