sublime text无法识别fortran文件是因语法包未安装、构建系统selector不匹配及gfortran未被正确继承环境变量;需装官方fortran包、手动设语法为fortranfreeform、配置含file_regex的构建系统并彻底重启。

Sublime Text 本身不识别 .f90 或 .f 文件,也不会自动调用 gfortran;你看到的“没高亮”“Ctrl+B 没反应”“错误不跳转”,基本都卡在这三步:语法包没装对、构建系统 selector 不匹配、gfortran 没被 Sublime 真正继承到环境变量里。
Fortran 语法高亮为什么不起作用
不是插件没装,是 Sublime 根本没把当前文件当成 Fortran 来处理。默认打开 .f90 就是 Plain Text,所有后续功能(缩进、关键词变色、补全提示)全失效。
- 必须先通过 Package Control 安装官方
Fortran包(作者是sublimelsp,别选错成Modern Fortran或带 Auto-Compile 的第三方包) - 装完后,打开一个
.f90文件 → 右下角点击当前语法名(如Plain Text)→ 选Fortran > FortranFreeForm - 想一劳永逸:按
Ctrl+Shift+P→ 输入Set Syntax: Fortran→ 回车,它会自动把所有.f90关联过去 -
.f(固定格式)文件要单独处理:菜单栏View → Syntax → Open all with current extension as… → Fortran Fixed Format
gfortran 编译命令怎么写进 Build System
Sublime 的构建系统是纯 JSON 驱动,不能直接套 C/C++ 模板,也不能只写 gfortran main.f90 —— 那样出错时 Sublime 压根不知道哪行错了,更没法双击跳转。
- 新建
Tools → Build System → New Build System,填入以下内容并保存为Fortran.sublime-build:
{
"cmd": ["gfortran", "-Wall", "-Wextra", "-o", "${file_base_name}", "${file}"],
"file_regex": "^(..[^:]*):([0-9]+):([0-9]+):? ?(.*)$",
"working_dir": "${file_path}",
"selector": "source.fortran"
}
cmd 中加 -Wall -Wextra 是关键,否则隐式类型声明等常见科研代码问题不会报错file_regex 必须严格匹配 gfortran 默认输出格式,例如 main.f90:12:5: Error: Unclassifiable statement
gfortran 换成完整路径,如 ["C:\msys64\mingw64\bin\gfortran.exe", ...],注意双反斜杠gfortran 通常在 /opt/homebrew/bin/gfortran(Apple Silicon)或 /usr/local/bin/gfortran(Intel),但 GUI 启动的 Sublime 不读 shell 配置文件为什么 Ctrl+B 按了没反应或报 “command not found”
这不是配置写错了,是 Sublime 启动时根本没加载到 gfortran 所在路径 —— 终端里能跑 gfortran --version,不等于 Sublime 就能看见。
- macOS:不要从 Dock 或 Spotlight 启动 Sublime;改用终端执行
env PATH="/opt/homebrew/bin:$PATH" subl - Linux:如果用 snap 安装的 Sublime,它被沙盒隔离,PATH 再全也没用;换 tarball 或 deb 版本
- Windows:确认 MinGW-w64 的
bin目录已加入系统PATH,且 Sublime 是彻底重启(不是关闭再开) - 即使
gfortran可用,也要检查当前文件右下角是否显示FortranFreeForm;如果是Plain Text,selector再对也白搭 - 构建系统没手动激活:
Tools → Build System → Fortran(选你保存的文件名,不含.sublime-build后缀)
如何让编译后直接运行生成的可执行文件
Build System 支持 variants,可以加一个 Run 变体,但要注意平台差异和工作目录——否则会提示 No such file or directory。
- 在上面的 JSON 中追加
variants字段:
"variants": [
{
"name": "Run",
"cmd": ["./${file_base_name}"],
"working_dir": "${file_path}"
}
]
./${file_base_name},Windows 下得改成:["cmd", "/c", "${file_path}\${file_base_name}.exe"]
working_dir 必须显式指定,否则 Sublime 默认在用户主目录下找可执行文件.mod 或 .o 文件,需在 cmd 中加 -J./(指定模块搜索路径)或 -I./(头文件路径)最常被忽略的一点:Sublime 的构建系统不会自动感知你改了 PATH 或重装了 gfortran;每次环境有变动,都要彻底重启 Sublime,而不是关掉再开。另外,file_regex 对 gfortran 4.8+ 有效,老版本可能需要微调正则表达式中的列号捕获组位置。











