必须安装fsharp-sublime语法包并配置dotnet fsi构建系统:先用package control安装作者为fsharp-sublime的fsharp包,设置文件语法为f#;再新建.sublime-build文件,windows用"cmd"字段调用dotnet fsi "$file",macos/linux用"shell_cmd"字段,且仅支持.fsx后缀。

Sublime Text 本身不识别 .fs 或 .fsx 文件,不装插件就只有纯文本——高亮、自动缩进、括号匹配全无,更别提运行。必须手动装语法包 + 配构建系统,缺一不可。
怎么让 .fs 和 .fsx 文件正确高亮
默认 Sublime 对 F# 文件完全没反应,右下角显示 “Plain Text”,这是最典型的信号。关键不是随便搜个“FSharp”就装,得认准作者和包名。
- 用
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS)调出命令面板,输入Install Package回车 - 搜索
FSharp,确认作者是fsharp-sublime—— 别选FSharpSyntax或OCaml类泛用包,它们常劫持.fs后缀导致高亮错乱 - 安装后打开任意
.fs或.fsx文件,点击右下角语法名 → 选F#;或直接按Ctrl+Shift+P输入Set Syntax: F# - 如果仍不生效,进
Preferences → Package Settings → FSharp → Settings,检查"extensions"是否包含"fs"和"fsx"
为什么不能用 fsharpi,必须用 dotnet fsi
fsharpi 在 .NET 6+ 中已彻底废弃,任何还写 fsharpi "$file" 的构建配置都会失败,报错如 The term 'fsharpi' is not recognized 或 command not found。这不是路径问题,是工具链淘汰了。
- 必须先装 .NET SDK 6.0+,运行
dotnet --version能看到6.x或更高版本号才算过关 -
dotnet fsi是当前唯一受支持的交互式执行方式,它能正确加载#r引用、处理#load、兼容现代 F# 6+ 特性(如无分号推断、管道运算符) - Windows 用户注意:PowerShell 默认执行策略可能阻止
dotnet fsi,临时绕过可用Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
如何配置 Sublime 的 F# 构建系统(.fsx 运行)
核心是写一个 .sublime-build 文件,告诉 Sublime 用 dotnet fsi 执行当前文件。不能硬编码路径,得用 $file 变量;且 Windows 和 macOS/Linux 必须分开写法,混用会导致空格路径崩、构建无输出。
- Windows 用户:菜单
Tools → Build System → New Build System…,粘贴以下内容,保存为FSharp.sublime-build:
{ "cmd": ["dotnet","fsi","$file"], "selector":"source.fsharp", "file_regex":"^(.*?):([0-9]+):([0-9]+)-([0-9]+):([0-9]+)" }
- macOS / Linux 用户:必须用
shell_cmd,否则含空格的路径会解析失败:
{ "shell_cmd":"dotnet fsi \"$file\"", "selector":"source.fsharp", "file_regex":"^(.*?):([0-9]+):([0-9]+)-([0-9]+):([0-9]+)" }
-
file_regex是为了双击错误信息跳转到对应行,F# 错误格式如test.fsx(5,12–5,18),这个正则能精准匹配
最容易被忽略的是:构建系统生效的前提是文件语法已被设为 F#(右下角显示正确),且文件后缀必须是 .fsx —— .fs 是编译单元,不能直接用 dotnet fsi 运行,会报错 error FS0193: internal error: The module/namespace 'FSharp.Core' from compilation unit 'FSharp.Core' did not contain the value 'op_Addition' 这类底层符号缺失错误。











