Sublime Text不能直接编译或上传Arduino代码,它仅是编辑器;所有功能均依赖外部调用arduino-cli,需手动配置Build System、指定FQBN、串口及绝对路径,Stino插件已停更不可靠。

Sublime Text 不能直接编译或上传 Arduino 代码,它只是编辑器;所有“编译成功”提示都来自外部调用 arduino-cli——配错路径、漏写 FQBN、串口格式不对,Build failed 立刻报给你看。
arduino-cli 必须独立安装且路径写死
Sublime 不自带任何编译工具,arduino-cli 是唯一可靠入口。Stino 插件已停更,依赖它大概率遇到 command not found: arduino-cli 或 Serial was not declared in this scope。
- 从 arduino-cli 官方 releases 页面 下载对应系统二进制(非 Arduino IDE 安装包)
- 解压后把
arduino-cli文件放到固定位置,例如/usr/local/bin/arduino-cli(macOS/Linux)或C:\tools\arduino-cli.exe(Windows) - 在 Sublime 的 Build System 配置中必须用绝对路径调用,不能只写
arduino-cli——系统 PATH 不一定被 Build System 加载 - 运行
arduino-cli config init初始化配置,再执行arduino-cli core update-index和arduino-cli core install arduino:avr补齐平台支持
Build System 要手动写 JSON,不能靠插件自动识别
Sublime 的 Build System 是纯 JSON 文件,需明确定义 cmd、working_dir、selector 和变量替换逻辑。Stino 之类插件会掩盖这些细节,反而让错误难以定位。
- 新建
Tools → Build System → New Build System,粘贴如下内容(以 Uno 为例):
{
"cmd": ["/usr/local/bin/arduino-cli", "compile", "--fqbn", "arduino:avr:uno", "--build-path", "/tmp/arduino_build", "$file_path"],
"working_dir": "$file_path",
"selector": "source.arduino",
"file_regex": "^(.*?):([0-9]+):([0-9]+):[ ]*(.*)$"
}
-
$file_path必须指向含.ino主文件的目录,且该目录下只能有一个同名.ino文件(如blink.ino),否则arduino-cli会报错 -
selector设为source.arduino后,需在Preferences → Settings – Syntax Specific中把当前文件设为 Arduino 语法(否则快捷键不生效) - 上传命令要另写一个 Build System,
cmd改为upload并加--port参数,例如--port /dev/cu.usbmodem14201(macOS)或--port COM3(Windows)
头文件跳转和补全基本不可用,别指望 IDE 级体验
Sublime 不解析 Arduino 核心库路径,#include <Arduino.h> 右键跳转会失败,Serial. 也几乎无补全。这不是配置问题,是能力边界。
- 若需跳转,得手动在项目根目录建
.sublime-project,填入include_dirs指向arduino-cli的 cores 路径,例如:~/.arduino15/packages/arduino/hardware/avr/1.8.6/cores/arduino - 但即便如此,
setup()/loop()全局函数、digitalWrite()等常用函数仍不会出现在补全列表里 - 真正写复杂逻辑时,建议用 PlatformIO(VS Code)或直接回归 Arduino IDE —— Sublime 适合轻量编辑+快速上传,不是开发主力环境
最易被忽略的一点:每次改完 FQBN 或串口,都要确认 arduino-cli 当前是否已登录对应平台。运行 arduino-cli board list 和 arduino-cli board listall 是最快验证方式,比反复点 Build 更省时间。

















