Sublime Text安装并配置Fortran工程级编译运行环境

大明君_4597

大明君_4597

2026-08-13

737人浏览

原创

fortran语法高亮完全不生效是因为sublime text未加载fortran语法定义,必须安装官方fortran插件(作者sublimelsp)、手动设置语法为fortranfreeform/fortranfixedform、配置selector为source.fortran的构建系统,缺一不可。

sublime text安装并配置fortran工程级编译运行环境

Fortran语法高亮完全不生效,右下角显示“Plain Text”

这不是主题或插件冲突导致的,是 Sublime Text 根本没加载 Fortran 语法定义。它连 .f90 文件都当纯文本处理,后续所有功能(缩进、跳转、构建)全失效。

  • 必须通过 Package Control: Install Package 安装官方 Fortran 插件(作者 sublimelsp),别选 Modern Fortran 或 MinimalFortran——它们和 LSP 补全工具冲突概率高
  • 装完后打开任意 main.f90 → 点右下角 Plain Text → 选 Fortran > FortranFreeForm;.f 文件则选 Fortran > FortranFixedForm
  • 想一劳永逸?按 Ctrl+Shift+P 输入 Set Syntax: FortranFreeForm,再选 Open all with current extension as…,这样所有 .f90 文件下次自动匹配
  • 若菜单里压根没 Fortran 选项,先 Ctrl+Shift+P → Reload Syntax Definitions;还不行就检查 Preferences → Package Settings → Fortran 是否存在

Ctrl+B 按下后无输出、无错误、也不生成可执行文件

根本原因不是编译器坏了,而是构建系统没激活,或者 selector 和当前文件语法不匹配——Sublime 不会自动猜你写的是 Fortran。

  • 新建构建系统: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 或其他任意字符串
  • 保存后务必手动切换到该构建系统:Tools → Build System → Fortran(别留成 Automatic)
  • 确认终端中能运行 gfortran --version;Windows 用户若用 MinGW-w64,建议把 ucrt64in 加进系统 PATH,而不是在 shell_cmd 里硬写绝对路径
  • 编译成功但运行时卡住、无法读取键盘输入(如 read(*,*))

    Sublime 的构建系统默认在后台静默执行,read 类交互式语句会因 stdin 被重定向而阻塞或直接跳过——这不是代码错,是运行环境没配对。

    Sublime Text Build Linux版
    Sublime Text Build Linux版

    Sublime Text Linux x86-64 deb 安装包。官方也提供 rpm、tar.xz 和软件源安装方式。

    下载
    • 不要依赖默认构建系统运行带输入的程序;改用终端手动测试:cd $file_path && gfortran -o ${file_base_name} $file_name && ./${file_base_name}
    • 如需一键运行,可新增一个 variants,例如在 Fortran.sublime-build 中追加:
    "variants": [
      {
        "name": "Run",
        "shell_cmd": "gnome-terminal -- bash -c "gfortran -o ${file_base_name} $file_name && ./${file_base_name}; read -p '\nPress any key to continue'""
      }
    ]
  • 注意:该方式仅适用于 Linux(gnome-terminal);Windows 用户可用 cmd /c start cmd /k 包裹,macOS 则用 open -a Terminal
  • 更稳妥的做法是把交互逻辑拆到单独脚本中,或改用调试器(如 gdb)配合 lsp-fortran 实现断点调试
  • Fortran 文件能高亮但关键字/注释颜色异常(比如 program 和 ! 都是灰色)

    Fortran 语法包只负责把代码切分成 keyword.control.fortran、comment.line.fortran 等 scope,最终颜色由当前配色方案决定。很多主题压根没定义这些 scope,于是回落到通用色。

    • 按 Ctrl+Shift+P 输入 Inspect Scope,把光标停在 program 或 ! 上,看输出的 scope 链,例如 keyword.control.fortran
    • 查当前配色方案名:Preferences → Color Scheme;再用 PackageResourceViewer: Open Resource 找到对应 .sublime-color-scheme 文件
    • 在 "rules" 数组末尾添加规则,例如:
    {"scope":"keyword.control.fortran","foreground":"#FF8C00"}
  • 保存后重新选一遍当前配色方案(Sublime Text 3 需重启才生效;ST4 可实时预览)
  • Fortran 在 Sublime 中不是“开箱即用”的语言,语法识别、构建系统、交互运行、颜色渲染这四层必须逐层对齐——漏掉任意一层,都会表现为“好像配置了,但就是不对”。最常被忽略的是 selector 和 source.fortran 的绑定关系,以及 read 类语句在构建系统中的 stdin 处理方式。

    相关文章

    PHP速学视频免费教程(入门到精通)
    PHP速学视频免费教程(入门到精通)

    PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

    下载

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    相关专题

    更多
    PixTV官网入口地址合集
    PixTV官网入口地址合集

    本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

    2026.10.10

    80

    15

    Kratos框架HTTP与gRPC服务开发教程
    Kratos框架HTTP与gRPC服务开发教程

    本专题围绕Kratos框架双协议服务开发,涵盖HTTP路由与处理器编写、参数获取、gRPC服务实现与客户端调用、metadata上下文传递、encoding编解码注册、统一响应封装、超时控制与流式响应实现方法。

    2026.10.10

    40

    15

    Kratos框架Protobuf接口定义与代码生成合集
    Kratos框架Protobuf接口定义与代码生成合集

    本专题讲解Kratos框架接口定义体系,涵盖proto编写规范、proto add/client/server生成命令、http注解路由、validate校验、OpenAPI文档生成、跨服务proto复用与兼容性设计。

    2026.10.10

    20

    15

    C++虚函数怎么定义和调用
    C++虚函数怎么定义和调用

    C++虚函数是实现运行时多态的重要机制。本专题从virtual关键字的基本用法入手,介绍基类与派生类之间的函数重写、基类指针调用派生类方法,以及动态绑定的执行过程,帮助初学者掌握虚函数的核心语法。

    2026.10.10

    20

    26

    C++类与对象的封装方法教程
    C++类与对象的封装方法教程

    C++封装是面向对象编程的核心特性之一,通过类将数据与操作数据的函数组织在一起,并利用访问权限控制外部访问。本专题介绍类的定义、成员变量、成员函数以及public、private和protected的使用方法,帮助初学者掌握封装的基本原理。

    2026.10.10

    20

    32

    C++构造函数定义与调用方法
    C++构造函数定义与调用方法

    C++构造函数用于初始化类对象,是面向对象编程的重要基础。本专题从构造函数的定义、声明和调用入手,介绍默认构造函数、带参数构造函数、拷贝构造函数及成员初始化列表,帮助初学者掌握对象创建与初始化的基本方法。

    2026.10.10

    20

    16

    Kratos框架零基础入门教程
    Kratos框架零基础入门教程

    本专题整理Kratos框架入门内容,涵盖Go环境准备、kratos CLI安装升级、new命令创建项目、目录结构分层说明、服务启动与双协议端口、依赖下载报错排查,帮助开发者快速跑通第一个Kratos框架微服务应用。

    2026.10.10

    20

    15

    C++条件判断语句怎么写
    C++条件判断语句怎么写

    C++条件判断是控制程序执行流程的重要基础。本专题介绍if、if-else、else if和switch等常见分支语句,结合条件表达式、比较运算符与代码示例,帮助初学者掌握不同场景下的判断逻辑。

    2026.10.10

    20

    13

    C++变量怎么声明和赋值
    C++变量怎么声明和赋值

    C++变量是编写程序和存储数据的基础。本专题围绕变量声明、定义、初始化、赋值和类型选择等内容展开,帮助初学者理解不同变量的用法,并掌握在实际代码中定义和使用变量的方法。

    2026.10.10

    20

    20

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程