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

Sublime Text 默认不识别 .f90 或 .f 文件,不装语法包、不手动设语法、不配构建系统,它就永远当你是写纯文本——高亮失效、Ctrl+B 无响应、错误不跳转,不是你漏步骤,是 Sublime 根本没“加载” Fortran 这门语言。
Fortran 语法高亮为什么完全不生效
根本原因是 Sublime Text 自带语法列表里没有 Fortran.tmLanguage。打开一个 main.f90,右下角显示 “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都自动匹配
gfortran 编译失败或 Ctrl+B 完全静默
按下 Ctrl+B 状态栏一闪就消失、没输出也没报错,大概率是构建系统没激活,或者 Sublime 启动时压根没继承到 gfortran 的 PATH。终端里能跑 gfortran --version ≠ Sublime 能调用它。
- macOS:GUI 启动的 Sublime 不读
~/.zshrc;必须从终端执行open -a "Sublime Text"或env PATH="/opt/homebrew/bin:$PATH" subl - Linux:若用 snap 安装 Sublime,它被沙盒隔离,PATH 再全也无效;换 deb/rpm/tarball 版本
- Windows:MinGW-w64 的
gfortran.exe(如C:msys64mingw64ingfortran.exe)必须加进系统环境变量PATH,改完后要彻底关闭 Sublime 进程(任务管理器里杀干净)再重启 - 验证方式:
Ctrl+Shift+P→ 输入Build With→ 看列表是否有你的构建系统;选中后若报gfortran: command not found,就是 PATH 没继承到
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.fortran, source.f90"—— 这和你右下角选的FortranFreeForm对应,不是source.f95或单独写source.f90 -
variants:加一个Run变体,命令为["./${file_base_name}"](macOS/Linux)或["cmd", "/c", "${file_path}\${file_base_name}.exe"](Windows);漏掉working_dir会导致运行时报 “No such file or directory”
错误能跳转但模块跳转/补全很弱
Sublime Text 原生不支持 Fortran 模块解析,use 语句后的模块名点不了、查不到定义,这不是配置问题,是编辑器能力边界。LSP 支持有限,fortls 补全质量依赖项目结构和 include 路径显式声明。
- 最实际的补救方式:用
ctags生成标签文件,配合CTags插件实现基础跳转 - 调试不要指望内置功能;靠
print *或终端里手动gdb ./a.out - 模块间引用混乱时,优先检查
module文件是否在构建路径中,-I参数是否传给了gfortran(需在cmd字段里显式加)
真正卡住人的从来不是怎么写配置,而是 Sublime 启动方式、PATH 继承机制、selector 匹配逻辑这三者没对齐——它们任何一个断开,整个流程就静默失效。尤其 macOS 和 Linux 上从 GUI 图标启动 Sublime,几乎注定失败。


















