sublime text需通过手动配置arduino-cli实现arduino开发:必须独立安装arduino-cli并写死绝对路径,配置fqbn与串口,补充include路径解决跳转失效,弃用已停更的stino,推荐platformio替代。

Sublime Text 不能直接编译或上传 Arduino 代码,它连 Arduino.h 都不认识——所有“编译成功”提示,都是靠调用外部 arduino-cli 实现的。想让它真正干活,你得亲手配好命令路径、板型标识、串口设备,漏一个环节,Build failed 就立刻报给你看。
arduino-cli 必须独立安装,别碰 Arduino IDE 自带的 CLI
Arduino IDE 安装包里确实有 arduino-cli,但它藏在深层目录(如 Contents/Java/bin/arduino-cli),PATH 不自动加,版本难更新,Sublime 启动时根本找不到。官方推荐方式是单独下载二进制:
- 去
GitHub releases下最新版(Windows 选.exe,macOS 选arm64或amd64,Linux 选对应架构) - 解压后放固定位置:macOS/Linux 推荐
/usr/local/bin/arduino-cli,Windows 推荐C:\arduino-cli\arduino-cli.exe - 终端运行
arduino-cli version确认能输出版本号;再跑arduino-cli core update-index && arduino-cli core install arduino:avr装好 Uno/Nano 所需核心
Build System 配置里必须写死 arduino-cli 路径
Sublime 启动时不会加载你的 ~/.zshrc 或 PATH,哪怕终端里 which arduino-cli 有结果,Build 仍会报 command not found。解决方法只有一条:不依赖 PATH,直接填绝对路径。
新建 Build System(Tools → Build System → New Build System),内容如下:
{
"cmd": ["/usr/local/bin/arduino-cli", "compile", "--fqbn", "arduino:avr:uno", "$file_path"],
"working_dir": "$file_path",
"selector": "source.arduino",
"variants": [
{
"name": "Upload",
"cmd": ["/usr/local/bin/arduino-cli", "upload", "-p", "/dev/cu.usbmodem14201", "--fqbn", "arduino:avr:uno", "$file_path"]
}
]
}
注意三点:
-
/dev/cu.usbmodem14201要换成你真实的串口名(macOS 用ls /dev/cu.*查,Windows 是COM3类) -
arduino:avr:uno是完整 FQBN,不能简写为uno;查可用板型用arduino-cli board listall -
selector设为source.arduino,确保只对.ino文件生效,避免误触发
头文件跳转失效?因为 Sublime 根本没索引 Arduino 核心库
Ctrl+Click Wire.h 提示 “No definition found”,不是插件问题,是 Sublime 默认不扫描 arduino-cli 安装的硬件包路径。它不会自动把 ~/.arduino15/packages/arduino/hardware/avr/1.8.6/cores/arduino 加进 include 路径。
两个可行方案:
- 轻量做法:在 Build System 配置里加
"include_dirs": ["~/.arduino15/packages/arduino/hardware/avr/1.8.6/cores/arduino", "~/.arduino15/packages/arduino/hardware/avr/1.8.6/variants/standard"](路径需按实际版本号调整) - 补全增强:装
EasyClangComplete插件,再执行arduino-cli compile --export-binaries --verbose,从日志里找所有-I开头的路径,填进ecc_config.json
别用 Stino,PlatformIO 才是 Sublime 下唯一持续维护的替代方案
Stino 已停更多年,硬编码依赖 Arduino IDE 1.x 的 Java 架构和 boards.txt 文件格式,而 arduino-cli 2.x+ 彻底改用 JSON 和扁平化平台目录,Stino 连板型列表都解析不了,常见报错:AttributeError: 'NoneType' object has no attribute 'get'、Failed to parse boards list。
如果你需要板型管理、库自动安装、串口监视器一体化支持,直接上 PlatformIO:
- 通过 Package Control 安装
PlatformIO IDE - 首次启动会自动下载
platformio-core和atmelavr平台,耗时但只需一次 - 新建项目时选
Arduino框架 +Arduino Uno,自动生成platformio.ini,后续编译(Ctrl+B)、上传(Ctrl+Alt+U)、串口监视(Ctrl+Alt+I)全部就绪
真正容易被忽略的是:Sublime 的 Build System 不会帮你管串口权限、驱动兼容性或复位时机——上传失败时,先手动用终端跑 arduino-cli upload -p /dev/cu.xxx --fqbn arduino:avr:uno ./Blink 看原始错误,比盯着 Sublime 底部面板猜要快得多。











