必须安装fsharp-sublime语法包、配置dotnet fsi构建系统并确保.net sdk 6.0+在path中:装包时认准作者,设语法为f#,检查extensions含"fs""fsx";构建系统selector须为source.fsharp,shell_cmd调用dotnet fsi "$file";fsharpi已废弃,仅dotnet fsi可用。

Sublime Text 默认不识别 .fs 和 .fsx 文件,装完插件却没高亮、按 Ctrl+B 运行报 dotnet not found,不是你代码写错了,是编辑器根本没“认出”这是 F#——语法包装错、构建系统配漏、PATH 隔离,三者缺一不可。
怎么让 .fs 和 .fsx 文件一打开就有正确高亮
默认打开就是 Plain Text,右下角不显示 F#,说明语法定义完全没加载。关键不是搜到“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"
为什么 Ctrl+B 运行 .fsx 报 dotnet not found 或 command not found
这不是插件问题,是 Sublime 构建系统无法继承 shell 的 PATH 环境变量。终端里 dotnet fsi --version 能跑,不代表 Sublime 能找到它。
- 先在终端确认
dotnet --version输出 ≥ 6.0;再运行dotnet fsi --version,确保交互式环境可用 - 新建构建系统:
Tools → Build System → New Build System…,贴入以下内容并保存为FSharp.sublime-build:
{
"shell_cmd": "dotnet fsi \"$file\"",
"file_regex": "^(.*?):([0-9]+):([0-9]+):? ?(.*)$",
"working_dir": "$file_path",
"selector": "source.fsharp"
}
-
selector必须是source.fsharp(不是source.fs或空值),否则 Sublime 不会在你打开.fsx时自动激活该构建系统 - Windows 用户若用 Git Bash 或 MSYS2,需把
shell_cmd改成bash -c "dotnet fsi \"$file\"",否则路径含空格时会崩
为什么不能用 fsharpi,必须用 dotnet fsi
fsharpi 在 .NET 6+ 中已彻底移除,任何还写 fsharpi "$file" 的构建配置都会失败,错误信息如 The term 'fsharpi' is not recognized 或 command not found——这不是路径没配对,是工具链本身淘汰了。
-
dotnet fsi是当前唯一受支持的交互式执行方式,能正确处理#r引用、#load、F# 6+ 特性(如无分号推断、管道运算符) -
.fs文件应走编译流程(dotnet build),不是dotnet fsi;只有.fsx脚本才适合用构建系统一键运行 - PowerShell 用户注意:默认执行策略可能阻止
dotnet fsi,临时绕过可用Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
最容易被忽略的是 selector 值和 PATH 隔离——前者错一个字符,构建系统就完全静默失效;后者导致 dotnet 找不到,但错误提示往往只显示“构建完成”,连报错都没有。











