Sublime Text 默认不支持 F#,需手动安装 FSharp 语法包实现 .fs/.fsx 高亮,并配置 dotnet fsi 构建系统运行脚本;编译 .fs 文件应使用 dotnet CLI 而非 fsc。

Sublime Text 本身不支持 F#,必须手动装语法包 + 配构建系统,否则打开 .fs 或 .fsx 文件就是纯文本,没有高亮、无法运行、也无错误定位。
怎么让 .fs 和 .fsx 文件正确高亮
默认 Sublime 对 .fs 文件完全没识别,得靠第三方语法定义。最稳定的是 FSharp 包(作者 fsharp-sublime),不是“FSharpSyntax”或“OCaml”类泛用包——后者常误劫 .fs 后缀,导致高亮错乱。
- 用
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS)调出命令面板,输入Install Package回车 - 搜
FSharp,选中安装(注意作者名是fsharp-sublime) - 安装后打开任意
.fs或.fsx文件,右下角点语法名 → 选F#;或直接按Ctrl+Shift+P输入Set Syntax: F# - 如果仍不生效,检查是否被其他插件覆盖:进
Preferences → Package Settings → FSharp → Settings,确认"extensions"里包含"fs"和"fsx"
为什么 dotnet fsi 是唯一靠谱的 .fsx 运行方式
fsharpi 已在 .NET Core 2.0 起废弃,.NET 6+ 完全移除;fsc 是编译器前端,不带 REPL 功能。只有 dotnet fsi 是官方维护、跨平台、能读取当前项目依赖的交互式执行器。
- 菜单
Tools → Build System → New Build System… - 粘贴以下内容并保存为
Packages/User/FSharp.sublime-build:
{
"cmd": ["dotnet", "fsi", "$file"],
"selector": "source.fsharp",
"file_regex": "^(.*?):([0-9]+):([0-9]+):.*$",
"working_dir": "$file_path"
}
- 保存后,打开
.fsx文件,按Ctrl+B即可运行;错误信息里的行号能点击跳转 - 若报
command not found: dotnet,说明终端 PATH 没生效——Sublime 的构建系统不继承 shell 的 PATH,得改用绝对路径,比如"cmd": ["/usr/local/share/dotnet/dotnet", "fsi", "$file"](macOS)或"cmd": ["C:\Program Files\dotnet\dotnet.exe", "fsi", "$file"](Windows)
别试图用 Sublime 直接编译 .fs 成可执行文件
fsc 在 Sublime 构建系统里硬配参数编译 .fs 是条死路。它不解析 NuGet 引用、不处理项目结构、不自动生成入口点,你得手动写一长串 --reference 和 --entrypoint,改一个包就得重写整个构建命令。
- 真正可行的做法:用
dotnet new console -lang F# -o myapp初始化标准项目,在 Sublime 里只编辑源码 - 构建和运行交给终端:
dotnet build编译,dotnet run执行 - 如果坚持要在 Sublime 里触发构建,可另建一个
Build.sublime-build,"cmd"设为["dotnet", "build", "$project_path"],但需确保当前文件属于已初始化的项目目录 - 注意:
$project_path只在 Sublime 有打开项目时才有效;单文件打开时为空,构建会失败
最易被忽略的一点:F# 的语言特性(如类型推导、计算表达式、引用 NuGet 包)高度依赖项目上下文和 SDK 版本。Sublime 是纯文本编辑器,它不加载 .fsproj、不启动 LSP 服务、也不管理依赖图——所有“智能”功能都得靠外部工具链补足,配置稍有偏差,高亮就断、运行就崩、错误提示就错位。

















