sublime text 无法直接编译上传 arduino 代码,必须依赖独立安装的 arduino-cli:需下载官方二进制、设绝对路径、显式指定 fqbn 和实时串口、严格遵循项目命名结构,且 stino 插件已停更不可用。

Sublime Text 本身不能编译或上传 Arduino 代码,所谓“快速验证硬件逻辑”,实际是靠稳定调用 arduino-cli 完成的——配错路径、漏写 --fqbn、串口名过期,Build 就直接失败,不会给你“试几次”的机会。
arduino-cli 必须独立安装且路径写死
Sublime 启动时不加载你的 shell 配置(~/.zshrc 或 PATH),哪怕终端里 arduino-cli version 能跑,Build System 仍会报 command not found: arduino-cli。唯一可靠做法是:下载官方二进制(不是 Arduino IDE 安装包,也不是 pip install arduino-cli),解压后放固定位置:
- macOS/Linux:
/usr/local/bin/arduino-cli,记得chmod +x - Windows:
C:\arduino-cli\arduino-cli.exe(路径不能含空格,反斜杠要双写)
在 Sublime 的 Build System 中,"cmd" 字段必须填绝对路径,例如 ["/usr/local/bin/arduino-cli", "compile", ...],拼字符串或只写 "arduino-cli" 都会失败。
Build System 必须显式指定 FQBN 和真实串口
--fqbn 和 --port 是 arduino-cli compile 和 upload 的强制参数,缺一不可。常见错误包括:
- FQBN 写成
uno或arduino:uno→ 报错Error: board arduino:uno not found;正确写法是arduino:avr:uno(Uno)、arduino:avr:nano:cpu=atmega328(Nano) - 串口填
/dev/cu.usbmodem*(带通配符)→ 不生效;必须填实时设备名,如/dev/cu.usbmodem14301(macOS)、COM3(Windows)、/dev/ttyACM0(Linux) - 拔插板子后没重查串口 → 上传卡在
Connecting to programmer;每次换线或重启电脑后,先运行arduino-cli board list确认当前端口
项目结构必须严格匹配 arduino-cli 规则
arduino-cli 对目录和文件命名极其敏感,不满足就报 No sketch found:
- 项目根目录名必须与主
.ino文件名完全一致(如blink/blink.ino) - 该目录下只能有一个
.ino文件;有多个或名字不一致(如main.ino放在test/下),编译直接失败 -
$file_path在 Build System 中指向的是文件夹路径,不是.ino文件本身;所以确保你按Ctrl+B时,光标在.ino文件内,且该文件位于合法结构的根目录中
头文件跳转失效?不是 bug,是 Sublime 没索引硬件库路径
按下 Ctrl+Click 进不去 Arduino.h 或 Wire.h,不是插件问题,而是 Sublime 默认不扫描 arduino-cli 安装的核心库路径。解决方法只有两个:
- 手动在 Sublime 的
Preferences → Settings – Syntax Specific中添加"index_files": true,并补全include_dirs(需查arduino-cli config dump找出directories.data路径,再拼上/packages/cores/arduino/) - 更省事的做法:直接用
PlatformIO替代——它原生支持 Sublime(通过 PlatformIO IDE 插件),自动管理库路径、跳转、补全,且不依赖 Stino 这类已停更的旧插件
Stino 插件已停更多年,最后一次提交是 2021 年,无法解析新版 arduino-cli 的 JSON 输出和平台索引结构,启用后反而会导致 Serial was not declared in this scope 或配置被覆盖。别碰它。










