sublime text默认不支持fortran,.f90文件显示为plain text;必须安装sublimelsp的fortran语法包,手动设置语法为fortranfreeform,并配置含"selector": "source.fortran"的构建系统才能实现高亮、编译与错误跳转。

Sublime Text 本身不认 Fortran 文件,不装语法包、不手动选语法、不配构建系统,.f90 文件永远是纯文本——高亮不起来、Ctrl+B 没反应、错误不跳转,不是你操作错,是它根本没“看见”你在写 Fortran。
Fortran 语法高亮为什么不起作用
Sublime Text 默认不带 Fortran.tmLanguage,打开 .f90 或 .f 就是 Plain Text。常见现象包括:program 不变色、缩进全乱、end do 没提示。这不是插件冲突,是基础缺失。
- 必须通过 Package Control 安装官方
Fortran包(作者 sublimelsp,别搜“Modern Fortran”或“Auto-Compile”,那些容易和 LSP 冲突) - 装完后,打开一个
.f90文件 → 点右下角语言名 → 选Fortran > FortranFreeForm;.f文件则选Fortran > FortranFixedForm - 想一劳永逸?用
Ctrl+Shift+P→ 输入Set Syntax: FortranFreeForm,再在弹出面板里选Open all with current extension as…,这样以后所有.f90都自动匹配 - Windows/macOS/Linux 下都一样:不手动点这一下,后续所有配置全白搭
gfortran 编译失败或 Ctrl+B 无声无息
按下 Ctrl+B 没输出、状态栏一闪就消失,大概率是构建系统没激活,或 selector 和当前文件语法不匹配。更隐蔽的问题是 Sublime 启动时没继承到 gfortran 的 PATH。
- 先确认
gfortran --version能在终端里正常运行;Windows 用户若用 MinGW-w64,建议把ucrt64\bin加进系统环境变量,而不是在构建系统里硬写绝对路径 - 新建构建系统:
Tools → Build System → New Build System,贴入以下内容并保存为Fortran.sublime-build:
{
"shell_cmd": "gfortran -Wall -Wextra -J./ -c $file_name && gfortran -o ${file_base_name} $file_name",
"file_regex": "^(..[^:]*):([0-9]+):([0-9]+):? ?(.*)$",
"working_dir": "$file_path",
"selector": "source.fortran"
}
-
selector必须是source.fortran—— 这和你右下角选的FortranFreeForm对应,不是source.f90或其他 -
file_regex必须匹配gfortran默认报错格式,例如main.f90:12:5: Error: Unclassifiable statement;若用-fbacktrace或其他 flag 改变了输出格式,正则就得重调
错误能跳转但补全/跳转模块定义很弱
Sublime 原生不解析 Fortran 模块依赖,use my_module 后按住 Ctrl 点不进去,也不提示 my_module 里的函数——这不是 bug,是 Fortran 模块机制本身导致的静态分析困难。
- 补全基本靠
ctags:用ctags -R --fortran-kinds=+im --fields=+nia .生成tags文件,再装CTags插件,重启 Sublime - 如果要用
lsp-fortran+fortls,必须先禁用旧版Fortran语法包,否则高亮会错乱、LSP 初始化失败 - 模块路径(
-I)得显式加进构建系统:"shell_cmd": "gfortran -I./include -Wall ...",否则use语句找不到模块,但 Sublime 不报这个错,只让编译器报
最容易被忽略的是:每次改完 .sublime-build 或切换语法后,必须重新打开文件,或者手动执行一次 Tools → Build System → Fortran 才生效;还有,file_regex 里那个 ^..[^:]* 是为了兼容 Windows 路径含盘符(如 C:\work\main.f90),Linux/macOS 下其实可以简化,但统一写法更省事。











