sublime text 配置 ada 编译运行需先安装 gnat 并验证 gnatmake -v 可用,再创建含 cmd、selector(source.ada)、file_regex 的 .sublime-build 文件,同时绑定 .adb/.ads 语法高亮并处理交互输入问题。

Sublime Text 本身不内置 Ada 支持,但能通过自定义 build system 调用外部 Ada 编译器(如 gnatmake)完成编译运行。关键前提是:系统已安装 GNAT,且 gnatmake 在 PATH 中可直接调用。
确认 GNAT 是否可用
这是最常卡住的一步 —— Sublime 不会报“找不到 GNAT”,而是静默失败或提示 shell_cmd: command not found。
- 在终端(Windows cmd/PowerShell、macOS Terminal、Linux bash)中执行:
gnatmake -v - 若返回版本信息(如
GNAT 12.3.0),说明已就绪;否则需先安装 GNAT - Windows 推荐使用
MSYS2 + mingw-w64-x86_64-gnat(比旧版 GNAT GPL 更易集成) - macOS 可用
brew install gnat(Homebrew 官方仓库已支持) - Linux 多数发行版提供
gnat包(如 Ubuntu/Debian 的sudo apt install gnat)
创建 Ada 构建系统(.sublime-build)
Sublime 的构建系统本质是 JSON 配置,核心是让 gnatmake 正确接收源文件路径,并处理标准错误定位。
- 菜单栏 → Tools → Build System → New Build System
- 粘贴以下内容(适配常见 Ada 文件命名习惯:
main.adb或任意.adb/.ads):
{
"cmd": ["gnatmake", "-gnato", "-gnatwa", "$file"],
"file_regex": "^(.*?):([0-9]+):([0-9]+): (error|warning): (.*)$",
"working_dir": "$file_path",
"selector": "source.ada",
"encoding": "utf-8",
"variants": [
{
"name": "Run",
"cmd": ["gnatmake", "-gnato", "-gnatwa", "$file", "&&", "$file_base_name"]
}
]
}
-
"selector": "source.ada"是关键:它让 Sublime 在打开.adb文件时自动激活该构建系统 -
-gnato启用溢出检查,-gnatwa开启全部警告,适合教学和调试 - Windows 用户注意:
&&在cmd中有效,但若用 PowerShell 作为 shell,需改用;或单独写shell_cmd
关联 Ada 语法高亮与文件类型
默认 Sublime 不识别 .adb 或 .ads,会导致 selector 失效、无语法着色、无法触发构建。
- 打开任意
.adb文件 → 菜单栏 View → Syntax → Open all with current extension as… → Ada - 或手动设置:菜单栏 View → Syntax → Ada(若未显示,需先安装 Ada 插件)
- 推荐安装插件
Ada Language Support(通过 Package Control 安装),它提供:- 自动关联
.adb/.ads扩展名 - 基础语法高亮与括号匹配
- 不依赖 LSP,轻量可靠
- 自动关联
运行时输入/输出与调试注意事项
Ada 程序常需交互式输入,而 Sublime 默认构建面板是只读的,无法键入。
-
Run变体中直接执行$file_base_name,在 Windows 上可能闪退 —— 建议改用:["cmd", "/c", "$file_base_name && pause"] - macOS/Linux 下建议:
["bash", "-c", "./$file_base_name; read -p 'Press Enter to continue...'"] - 若程序崩溃或产生异常,
gnatmake默认不生成详细栈追踪;加-g -O0编译,并在代码中启用pragma Exception_Trace - 调试强烈建议配合外部终端:保存后,在终端中手动运行
gnatmake main.adb && ./main,更可控
真正麻烦的不是配置几行 JSON,而是 GNAT 的路径可见性、文件扩展名绑定、以及交互式 I/O 的绕过方式 —— 这三处任一缺失都会导致“点了 Ctrl+B 没反应”。务必逐项验证,别跳步。











