Sublime Text 不能直接编译烧录 Arduino 代码,因其仅为文本编辑器,无内置编译器或 SDK 支持;但可通过配置 arduino-cli 和自定义 Build System 实现编译上传一体化。

Sublime Text 能不能直接编译烧录 Arduino 代码
不能。Sublime Text 本身只是文本编辑器,没有内置编译器、上传器或 Arduino SDK 支持。它不理解 Arduino.h,也不会调用 avr-gcc 或 avrdude。强行写完就插线烧录,大概率报错 ‘Serial’ was not declared in this scope 或 command not found: arduino-cli。
但可以把它变成一个轻量、响应快的 Arduino 代码编辑界面——前提是把编译和烧录流程交给外部工具链,并让 Sublime 知道怎么触发它们。
必须装 arduino-cli 而不是依赖 IDE
别去下 Arduino IDE 然后试图“集成”进 Sublime——那套 GUI 启动慢、占用高,且 arduino-cli 才是官方推荐的命令行接口,Sublime 调用它最稳。
- 从 GitHub releases 下对应系统的二进制(如
arduino-cli_0.40.2_Windows_64bit.zip),解压后把arduino-cli.exe(Windows)或arduino-cli(macOS/Linux)加到系统PATH - 运行
arduino-cli config init初始化配置,再执行arduino-cli core update-index和arduino-cli core install arduino:avr - 验证:在终端跑
arduino-cli compile -b arduino:avr:uno ./Blink,能生成.hex就算通了
Sublime 中用 Build System 调用 arduino-cli
这是最关键的一步。Sublime 的构建系统(Tools → Build System → New Build System…)本质就是写个 JSON 去描述「按什么命令、在什么路径、传什么参数」来执行任务。
比如针对 Uno 板子的编译+上传一体化构建:
{
"cmd": ["arduino-cli", "compile", "-b", "arduino:avr:uno", "--upload", "-p", "/dev/cu.usbmodem14301", "$file_path"],
"selector": "source.cpp",
"working_dir": "$file_path",
"variants": [
{
"name": "Compile Only",
"cmd": ["arduino-cli", "compile", "-b", "arduino:avr:uno", "$file_path"]
}
]
}
-
$file_path必须是完整项目目录(含.ino文件和同名文件夹),不能只选中单个.ino文件——arduino-cli认的是 sketch 目录结构 -
-p参数里的串口号要按实际填:/dev/cu.usbmodem*(macOS)、/dev/ttyUSB*(Linux)、COM3(Windows) - 如果提示
Permission denied(尤其 macOS/Linux),给arduino-cli加执行权限:chmod +x arduino-cli
语法高亮和自动补全靠插件,但别信“Arduino IDE for Sublime”
搜 “sublime arduino plugin” 会看到一堆老插件,其中多数已三年没更新,不支持 arduino-cli,甚至还在硬编码调用 arduino.exe。真正可用的只有两个:
-
Arduinolike:轻量,只做语法高亮和基础括号匹配,兼容所有 Arduino 版本,不会干扰构建流程 -
EasyClangComplete(需手动配):想用Serial.print()补全就得上它,但得把arduino-cli导出的编译命令转成compile_commands.json,否则补全全是红色波浪线
别装带“IDE”“Builder”“Uploader”字样的插件——它们大概率自己实现了一套过时的调用逻辑,和你的 arduino-cli 冲突,最后烧录失败还找不到原因。
真正麻烦的从来不是配置几行 JSON,而是板子识别不稳定、串口权限反复丢失、或者 .ino 文件改名后 arduino-cli 死活不认——这些细节没日志、不报错、只静默失败,得盯着 arduino-cli compile --debug 输出逐行看。










