Sublime Text默认不识别Fortran文件,必须安装官方Fortran语法包、手动设置右下角语法为FortranFreeForm(.f90)或FortranFixedForm(.f),并配置含"selector":"source.fortran"的构建系统,否则高亮、编译、错误跳转均失效。

Sublime Text 本身不编译 Fortran,也默认不识别 .f90 或 .f 文件——你遇到的“高亮失效”“Ctrl+B 没反应”“错误不跳转”,基本都卡在这三件事上:gfortran 没进 Sublime 的 PATH、语法没手动绑定、构建系统里的 selector 和实际 scope 不匹配。
Fortran 文件打开就是 Plain Text?必须手动绑定语法
这不是插件没装全,是 Sublime 压根没加载 Fortran 语法层。官方 Fortran 包(作者 sublimelsp)装完也不会自动关联后缀。
- 打开一个
main.f90→ 点右下角语言名(比如Plain Text)→ 选Fortran > FortranFreeForm - 如果是老式固定格式
.f文件 → 选Fortran > FortranFixedForm,否则续行符&和注释c行全失效 - 想一劳永逸:按
Ctrl+Shift+P输入Set Syntax: FortranFreeForm→ 回车,它会把当前后缀(如.f90)永久绑定到该语法 - 如果菜单里没有
Fortran项,先按Ctrl+Shift+P输入Reload Syntax Definitions刷新;仍无效说明包没装成功,或被其他同名旧包(如fortran.tmbundle)屏蔽
Ctrl+B 报 “No build system” 或直接没输出?检查 selector 和 scope 是否对齐
selector 是构建系统生效的硬性开关,不是建议值。它必须和你在右下角选中的语法所对应的 scope 完全一致,写错一个字母都不行。
- 新建构建系统:
Tools → Build System → New Build System - 粘贴以下内容并保存为
Fortran.sublime-build(路径在Packages/User/下):
{
"cmd": ["gfortran", "-o", "${file_base_name}", "${file}"],
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.fortran",
"shell": true
}
-
"selector": "source.fortran"是唯一正确写法——不是source.f90、source.fortran90或source.fortran-freeform - 验证当前文件 scope:按
Ctrl+Shift+P输入Developer: Show Scope Name,光标放在代码任意位置,看状态栏显示是否为source.fortran - Windows 用户若用 MinGW-w64,
"shell": true必须设为true,否则找不到gfortran.exe;macOS/Linux 用户推荐从终端启动 Sublime:open -a "Sublime Text"或env PATH="/opt/homebrew/bin:$PATH" subl
终端能跑 gfortran --version,但 Sublime 里报 command not found?PATH 继承不对
Sublime 启动时继承的是 GUI 环境的 PATH,不是你的 shell 配置(比如 ~/.zshrc)。所以 which gfortran 在终端里返回正常,Sublime 里照样找不到。
- macOS(Apple Silicon):确认
gfortran在/opt/homebrew/bin/;若用 MacPorts,则是/opt/local/bin/。必须从终端启动 Sublime 才能继承该路径 - Linux:确保
gfortran所在目录已加入/etc/environment或用户级~/.profile(GUI 登录时读取),不要只改~/.bashrc - Windows:MinGW-w64 推荐把
ucrt64\bin加进系统环境变量;避免在cmd字段里硬写绝对路径,空格和反斜杠极易崩,比如"C:\Program Files\mingw64\bin\gfortran.exe"就不行 - 快速验证:在 Sublime 里按
Ctrl+`打开 Python 控制台,执行import os; print(os.environ.get('PATH')),看输出里有没有gfortran路径
错误信息能捕获,但双击不跳转到对应行号?file_regex 匹配失败
file_regex 是让 Sublime 解析 gfortran 错误输出、支持双击跳转的关键正则。默认格式是 main.f90:12:5: Error: ...,但加了 -fbacktrace 或换用 ifort 就会变样。
- 原始正则
"^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$"适配 gfortran 4.8+ 默认输出 - 如果错误行变成
main.f90:12.5: Error: ...(中间是点),需改成"^(..[^:]*):([0-9]+)\.([0-9]+):? (.*)$" - ifort 输出常带括号,如
main.f90(12): error #6404: ...,正则得相应调整为"^(..[^:]*)\(([0-9]+)\):? (.*)$" - 改完
.sublime-build文件后,必须重启 Sublime 或至少重新触发一次构建系统列表刷新(Tools → Build System → New Build System…打开再关掉)
最容易被忽略的是 scope 和 selector 的严格一致性——哪怕你装了最全的插件、写了最漂亮的构建命令,只要右下角显示的是 Plain Text 或 FortranFreeForm 而不是真正激活了 source.fortran scope,整个构建链就断在第一步。


















