Sublime Text 默认不识别.f90或.f文件,需先安装官方Fortran语法包并手动设置右下角语法为FortranFreeForm(.f90)或FortranFixedForm(.f),否则高亮、缩进、构建均失效;再配置正确PATH和.sublime-build文件实现编译运行。

Sublime Text 本身不识别 .f90 或 .f 文件,打开就是纯文本——这不是插件没装对,是连基础语法高亮都没激活。必须手动绑定语法类型,否则后续所有构建、跳转、缩进都失效。
Fortran 语法高亮不生效的典型表现和修复
常见错误现象:program、end program 不变色,缩进错乱,关键词无提示,右下角显示 “Plain Text”。这基本说明语法包没装或没选对。
- 别搜“Modern Fortran”“Auto-Compile”这类第三方包——它们常和 LSP 冲突,尤其当你还装了
lsp-fortran - 正确做法:用 Package Control 安装官方
Fortran包(作者是sublimelsp团队),不是“Fortran Syntax”或“fortran.tmbundle”旧版 - 装完后,打开一个
.f90文件 → 点击右下角 “Plain Text” → 选Fortran > FortranFreeForm;如果是老式.f(固定格式),选Fortran > FortranFixedForm - 想一劳永逸?按
Ctrl+Shift+P→ 输入Set Syntax: FortranFreeForm→ 回车,它会自动把当前后缀(如.f90)绑定到该语法
gfortran 调用失败:为什么终端能跑,Sublime 编译却报 “command not found”
根本原因:Sublime 启动时继承的是 GUI 环境的 PATH,不是你的 shell 配置(比如 ~/.zshrc 或 ~/.bashrc)。所以即使 which gfortran 在终端里返回正常,Sublime 也看不到。
- macOS 用户:必须从终端启动 Sublime,执行
open -a "Sublime Text"或env PATH="/opt/homebrew/bin:$PATH" subl(Apple Silicon 路径为/opt/homebrew/bin/gfortran) - Linux 用户:如果用 snap 安装 Sublime,它被沙盒隔离,PATH 再全也没用——换 deb/rpm/tarball 版本
- Windows 用户:确保
gfortran.exe所在目录(如C:msys64mingw64in)已加入系统环境变量PATH,且改完后要彻底退出 Sublime(任务管理器里杀干净进程),再重新打开
自定义 Fortran.sublime-build 的关键字段和易错点
这个 JSON 文件必须存为 UTF-8 无 BOM 编码,放在 Packages/User/ 目录下,文件名以 .sublime-build 结尾。任何语法错误(比如多逗号、少引号、写注释)都会导致构建系统完全不可用,且 Sublime 不报错。
-
"cmd":Linux/macOS 可用["gfortran", "-o", "${file_base_name}", "${file}"];Windows 必须写完整路径,如["C:\msys64\mingw64\bin\gfortran.exe", "-o", "${file_base_name}.exe", "${file}"](注意双反斜杠) -
"selector"必须设为"source.f90"或"source.fortran",否则你打开.f90文件时 Sublime 根本不会自动启用这个构建系统 -
"shell": true在 Windows 上是必需的,否则找不到gfortran.exe;Linux/macOS 可省略,但显式写上更稳妥 -
"variants"加个"Run"变体,命令是["./${file_base_name}"](macOS/Linux)或["cmd", "/c", "${file_path}\${file_base_name}.exe"](Windows),且一定配上"working_dir": "${file_path}",否则运行时报 “No such file or directory”
Fortran 构建系统生效但错误跳转不工作?检查 file_regex
Sublime 默认无法解析 gfortran 的报错位置,也就没法点击错误行跳转到源码。必须在 .sublime-build 里配好 "file_regex" 字段,匹配 gfortran 输出的典型格式,比如 main.f90:12:5: error: Expected a right parenthesis in expression。
- 推荐正则:
"file_regex": "^(..[^:]*):([0-9]+):([0-9]+):? (.*)$"(注意中间是两个冒号分隔,不是三个) - 别漏掉
"working_dir": "${file_path}",否则正则匹配到的文件路径是相对路径,Sublime 找不到对应文件 - 如果用了
-fbacktrace或其他额外编译参数,错误格式可能变化,这时正则要相应调整——先看终端里真实输出再改
最常被忽略的一点:语法高亮和构建系统是两套独立机制。哪怕 .sublime-build 写得完美,如果右下角没手动选成 FortranFreeForm,Sublime 就不会触发 selector 匹配,构建菜单压根不会出现。顺序不能错:先让文件“被识别”,再让它“可构建”。

















