Sublime Text 默认不识别 Fortran 文件,需手动关联语法、配置构建系统、补充配色规则并理解其功能边界。

Sublime Text 默认完全不认 Fortran 文件,.f90 打开就是 Plain Text——高亮、缩进、编译、跳错全失效,不是你漏步骤,是它压根没加载语法识别层。
Fortran 语法包装了但还是 Plain Text?检查 selector 和文件后缀是否对得上
装完官方 Fortran 包(作者 sublimelsp)只是第一步。Sublime 不会自动把 .f90 关联到 Fortran 语法,必须手动触发:
- 打开任意
.f90文件 → 点右下角语言名(如Plain Text)→ 选Fortran > FortranFreeForm - 若菜单里没有
Fortran项,按Ctrl+Shift+P输入Reload Syntax Definitions刷新;仍无效说明包没装成功或被其他插件屏蔽 - 想一劳永逸:选好
FortranFreeForm后,再按Ctrl+Shift+P输入Set Syntax: FortranFreeForm→ 选Open all with current extension as…,这样所有.f90文件下次打开就自动匹配 -
.f(固定格式)文件必须单独处理:右下角选Fortran > FortranFixedForm,再用同法绑定后缀,否则注释c行、续行&都无法识别
Ctrl+B 没反应或报 “No build system”?构建系统里的 selector 必须是 source.fortran
高亮有了,但按下 Ctrl+B 没输出、状态栏一闪消失,大概率是构建系统没激活,或者 selector 和当前文件实际语法 scope 不匹配。
- 新建构建系统:
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 对应的 scope 完全一致;写成 source.f90 或 source.fortran90 都会失败gfortran --version;Windows 用户若用 MinGW-w64,建议把 ucrt64\bin 加进系统环境变量,别在 shell_cmd 里硬写绝对路径(路径含空格或反斜杠极易崩)file_regex 必须匹配 gfortran 默认错误格式,例如 main.f90:12:5: Error: Unclassifiable statement;加了 -fbacktrace 或换用 ifort 就得重调正则关键字不变色、注释灰成一片?配色方案缺 Fortran 专属 scope 规则
语法包只负责切分 token(比如把 program 标为 keyword.control.fortran),最终颜色由当前 .sublime-color-scheme 决定。多数主题根本不定义 fortran 相关 scope,直接回落到通用色。
- 按
Ctrl+Shift+P输入Inspect Scope,把光标停在program或!上,看输出的完整 scope 链,例如keyword.control.fortran或comment.line.exclamation.fortran - 查当前配色方案名:
Preferences → Color Scheme;再用PackageResourceViewer: Open Resource找到对应.sublime-color-scheme文件 - 在
"rules"数组末尾添加规则,例如:
{"scope": "keyword.control.fortran", "foreground": "#FF8C00"},
{"scope": "comment.line.exclamation.fortran", "foreground": "#6A9955"}
LSP 补全/跳转弱?Fortran 模块机制天然限制,别强求 IDE 级体验
Sublime 原生不解析模块依赖,use mymod 后无法跳转定义、补全变量名也基本靠猜。这不是配置问题,是 Fortran 语言特性 + 编辑器定位决定的。
- 若坚持要补全,可配
lsp-fortran+fortls,但必须先禁用旧版Fortran语法包(否则高亮错乱) - 更务实的做法:用
ctags生成标签文件(ctags -R --fortran-kinds=+i *.f90),配合SublimeCodeIntel或原生goto_definition(需手动维护tags文件) - 科研场景中,
print *,+ 终端gdb仍是主力调试方式;别指望 Sublime 实现断点单步
最容易被忽略的是:所有配置都建立在“当前文件已被正确识别为 Fortran”这一前提上。右下角语言名不是装饰,它是整个链路的起点——点错一次,后续所有功能全部静默失效,且没有任何提示告诉你卡在哪一步。

















