sublime text 运行 f# 需同时满足三条件:安装 fsharp-sublime 插件、右下角设为 f# 语法、配置含 source.fsharp 和正确 file_regex 的构建系统;.fs 文件不可直接运行,仅 .fsx 支持 dotnet fsi 解释执行。

Sublime Text 不能开箱即用运行或编译 F#,必须同时满足三件事:装对语法包、设对语法识别、配对构建系统;缺一不可,否则你看到的永远是 Plain Text,Ctrl+B 按了没反应,点错误也跳不到行。
怎么让 .fs 和 .fsx 文件一打开就有高亮
默认右下角显示 Plain Text,说明 Sublime 根本没加载 F# 语法定义。这不是“没装插件”,而是装错了或没激活。
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Install Package回车 - 搜索
FSharp,只安装作者为fsharp-sublime的那个包——别选FSharpSyntax、OCaml或任何带“ML”字样的泛用包,它们会把.fs当 OCaml 处理,导致let不着色、缩进全乱 - 安装后打开任意
.fs或.fsx文件,点击右下角语法名 → 选F#;或直接Ctrl+Shift+P输入Set Syntax: F# - 若仍不生效,进
Preferences → Package Settings → FSharp → Settings,确认"extensions"数组里包含"fs"和"fsx"
为什么 Ctrl+B 运行 .fsx 总报 dotnet not found
这不是 PATH 没配好,是 Sublime 构建系统根本不会继承你的 shell 环境变量。终端里能跑 dotnet fsi --version,不代表 Sublime 能看见它。
- 先在终端确认
dotnet --version输出 ≥ 6.0(fsharpi已彻底废弃,别试) - Windows 用户建议从终端启动 Sublime(比如执行
subl),否则开始菜单启动时大概率读不到 PowerShell 的 PATH - macOS/Linux 用户检查
which dotnet是否有输出;若无,在~/.zshrc或~/.bash_profile加export PATH="$HOME/.dotnet:$PATH"并source一下 - 实在不行,在构建系统里硬写绝对路径:
"cmd": ["C:\Program Files\dotnet\dotnet.exe", "fsi", "$file"](Windows)或"shell_cmd": "/usr/local/share/dotnet/dotnet fsi "$file""(macOS)
如何配置能跳转错误行的 .fsx 构建系统
file_regex 写错,就等于白配——点击错误信息不会跳到对应位置。F# 实际报错格式是 test.fsx(5,12–5,18),正则必须精准匹配这个结构。
- 新建构建系统:
Tools → Build System → New Build System… - Windows 用户用
cmd字段(避免 PowerShell 路径空格崩):{ "cmd": ["dotnet", "fsi", "$file"], "selector": "source.fsharp", "file_regex": "^(.*?):([0-9]+):([0-9]+)-([0-9]+):([0-9]+)", "working_dir": "$file_path" } - macOS/Linux 用户用
shell_cmd字段(注意引号嵌套):{ "shell_cmd": "dotnet fsi "$file"", "selector": "source.fsharp", "file_regex": "^(.*?):([0-9]+):([0-9]+)-([0-9]+):([0-9]+)", "working_dir": "$file_path" } -
selector必须是source.fsharp(不是source.fs或空值),否则 Sublime 不会在你打开.fsx时自动激活该构建系统
.fs 文件不能用 Ctrl+B 直接运行,这是设计使然
.fs 是模块/库文件,不是脚本。强行用 dotnet fsi 执行会报 error FS0193: internal error: The module/namespace 'XXX' from compilation unit 'YYY' did not contain the value 'Main'——这不是语法错,是工具链用错了。
-
.fsx是唯一支持直接解释执行的格式;.fs应放在标准项目中,用dotnet build编译 - 若硬要在 Sublime 里触发编译,可新建一个
FSharp-Compile.sublime-build,内容为:"cmd": ["dotnet", "build", "$project_path"],但前提是当前窗口已打开含.fsproj的文件夹 - 别试图给
.fs文件配dotnet fsi构建系统——它不会报错,但会静默失败或给出误导性内部错误
最容易被忽略的是 selector 值和 file_regex 的括号格式:少一个反斜杠、多一个空格、列号分隔符用逗号而非短横线,都会导致错误无法跳转;而 source.fsharp 写成 source.fs 就会让构建系统完全不响应。











