Sublime Text需通过arduino-cli插件实现Arduino编译上传,禁用已停更的Stino;配置Build System调用arduino-cli compile/upload;头文件跳转需手动添加include路径;串口监视须另开终端。

Sublime Text 本身不内置 Arduino 编译支持,必须通过插件 + 外部工具链配合才能实现“保存即编译”或一键上传——核心是让 Sublime 调用 arduino-cli(官方推荐)或旧版 ino,而非依赖已停更的 Stino。
为什么别再用 Stino 插件
Stino 基于过时的 Arduino IDE 1.x API,无法适配 Arduino IDE 2.x 及其新项目结构(platformio.ini 或 arduino-cli 的 JSON 配置),且长期无维护。常见报错包括:AttributeError: 'NoneType' object has no attribute 'get'、Failed to parse boards.txt。它还会强制覆盖你本地的 arduino-cli 配置,导致串口识别失败。
用 arduino-cli + Sublime Build System 实现真编译
这是目前最稳定、可复现的方式:把 arduino-cli 当作纯命令行工具,Sublime 只负责触发和展示输出。
- 先安装
arduino-cli(推荐用brew install arduino-cli或官网下载二进制,**不要用 pip 安装的旧版**) - 运行
arduino-cli config init生成配置,确认sketchbook.path指向你的代码目录 - 在 Sublime 中新建 Build System(Tools → Build System → New Build System),填入:
{
"cmd": ["arduino-cli", "compile", "--fqbn", "arduino:avr:uno", "$file_path"],
"selector": "source.cpp",
"working_dir": "$file_path",
"variants": [
{
"name": "Upload",
"cmd": ["arduino-cli", "upload", "-p", "/dev/cu.usbmodem*", "--fqbn", "arduino:avr:uno", "$file_path"]
}
]
}
注意:/dev/cu.usbmodem* 需按实际串口名替换(macOS 查 ls /dev/cu.*,Windows 是 COM3 类似);arduino:avr:uno 换成你板子的真实 FQBN(查 arduino-cli board listall)。
头文件跳转与自动补全怎么搞
Sublime 默认不索引 Arduino 核心库(如 Wire.h、SPI.h),Ctrl+Click 会提示 “No definition found”。解决方法只有两个有效路径:
- 用
Package Control安装EasyClangComplete,并手动在ecc_config.json中添加arduino-cli输出的 include 路径(执行arduino-cli compile --export-binaries --verbose看日志里-I开头的路径) - 更轻量:直接把 Arduino CLI 的硬件包路径加到 Sublime 的
include_dirs(在 Build System 配置里加"include_dirs": ["/Users/xxx/Library/Arduino15/packages/arduino/hardware/avr/1.8.6/cores/arduino"])
补全仍较弱——Arduino 的 C++ 混用宏(如 digitalWrite 是函数指针宏)会让大多数 LSP 服务失效,别强求智能提示像 VS Code + PlatformIO 那样完整。
调试和串口监视器得另开终端
Sublime 的 Build System 本质是单次进程调用,无法维持串口连接。想看 Serial.print() 输出,必须:
- 用系统自带终端或
screen /dev/cu.usbmodem14101 9600(macOS)、putty(Windows)手动连 - 或装插件
Terminus,建个自定义命令:["screen", "/dev/cu.usbmodem*", "9600"],但它不解析arduino-cli的波特率配置,得自己核对代码里Serial.begin(9600)
没有“一键打开串口监视器”的可靠方案——这恰是 Sublime 在嵌入式场景的硬伤:它不是 IDE,只是编辑器。复杂项目建议直接切到 PlatformIO Core(命令行)或 VS Code + PlatformIO 扩展。










