sublime text需手动设置fortran语法高亮与文件关联:先通过右下角选择fortranfreeform(.f90)或fortranfixedform(.f),再在syntax specific中配置syntax路径、缩进等;构建系统需自定义fortran.sublime-build,指定cmd、selector为source.fortran;无原生调试支持,依赖print或终端gdb;补全与跳转受限于fortran模块机制,推荐ctags或手动查找。

Fortran语法高亮和文件关联怎么设
Sublime Text 默认不识别 .f90 或 .f 文件,打开后是纯文本,没高亮也没缩进。这不是插件问题,是基础配置缺失。
手动指定语法:打开 Fortran 源文件 → 点击右下角当前语法名(比如 “Plain Text”)→ 选 Fortran > FortranFreeForm(对应 .f90)或 Fortran > FortranFixedForm(对应老式 .f)。这步必须做,否则后续所有功能都无效。
一劳永逸的办法:在 Preferences > Settings – Syntax Specific 中粘贴:
{
"syntax": "Packages/Fortran/FortranFreeForm.sublime-syntax",
"tab_size": 2,
"translate_tabs_to_spaces": true
}
注意:Packages/Fortran/ 路径依赖是否已安装官方 Fortran 插件;如果没装,先用 Package Control 安装 Fortran(作者是 wbond),别装错成其他同名但维护停滞的包。
编译命令怎么绑定到 Ctrl+B
Sublime 的 Build System 是纯配置驱动,不依赖插件。Fortran 没预置构建系统,得自己写 JSON。
常见错误:直接套用 C/C++ 模板,忘了改 cmd 和 selector;或者路径含空格没加引号,导致 gfortran: command not found 即使终端里能跑。
推荐做法(以 macOS/Linux + gfortran 为例):
- 新建
Tools > Build System > New Build System - 填入以下内容并保存为
Fortran.sublime-build:
{
"cmd": ["gfortran", "-o", "${file_base_name}", "${file}"],
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"selector": "source.fortran",
"shell": false,
"working_dir": "${file_path}"
}
selector 必须是 source.fortran(不是 source.f90),否则 Ctrl+B 不触发;file_regex 支持跳转到报错行,但仅对 gfortran 4.8+ 有效;Windows 用户把 gfortran 换成完整路径如 "C:\MinGW\bin\gfortran.exe",且 shell 设为 true。
调试和断点支持现实吗
Sublime Text 本身不提供 Fortran 调试器集成。所谓“调试”,实际只能靠 print 语句 + 手动编译运行,或者外挂终端。
有人尝试用 sublime-gdb 插件,但 Fortran 的变量名 mangling、数组内存布局、模块作用域会让 GDB 输出极难读;gfortran -g 生成的 debug info 在 Sublime 里完全不可见。
务实建议:
- 开发逻辑密集型代码时,优先用
write(*,*)输出关键变量值 - 复杂算法验证阶段,切到终端手动执行
gfortran -g -o test test.f90 && gdb ./test - 别在 Sublime 里折腾“图形化断点”,它既不识别
break命令,也不解析stop语句
自动补全和跳转定义为什么失效
Fortran 的模块依赖、use 语句、include 路径是动态的,Sublime 的原生索引机制无法解析跨文件符号。所以 Ctrl+Click 跳转函数定义、Tab 补全子程序名,基本不可用。
替代方案有限:
- 装
SublimeCodeIntel插件?它对 Fortran 支持停留在 2013 年,遇到type(t) :: x就卡死 - 用
ctags生成标签?ctags --fortran-kinds=+i可提取接口,但不处理use iso_c_binding这类现代特性 - 最稳的路:接受“无智能补全”,靠
Ctrl+P快速打开同项目下的.mod或.f90文件手动查
Fortran 的模块系统本质是编译期链接,不是运行时反射——这点决定了编辑器能力的天花板。别指望 Sublime 做到 VS Code + fortran-language-server 那种程度,它真做不到。










