不推荐新项目使用Deviot插件,因其依赖已停止维护的PlatformIO Core 4.x,且在Sublime Text 4、Arduino 2.0+及ESP-IDF项目中补全失效;推荐改用Sublime+PlatformIO CLI+ECC组合方案实现真实补全与烧录。

Deviot 插件是否还值得装?
不推荐新项目用 Deviot。它底层依赖已停止维护的 PlatformIO Core 4.x,而当前主流是 PlatformIO Core 6.x;Sublime Text 4 对 Python 3.8+ 插件兼容性变差,Deviot 的自动补全在 Arduino 2.0+ SDK 或 ESP-IDF 项目中常失效,且无法识别 platformio.ini 中自定义的 lib_deps 路径。
用 Sublime + PlatformIO CLI 实现真实补全
核心思路:绕过 Deviot,直接让 Sublime 调用本地已安装的 pio 命令生成 compile_commands.json,再由 EasyClangComplete(ECC)插件读取该文件提供 C/C++ 补全。
- 先确保系统已全局安装
platformio:pip install platformio
- 在 Arduino 项目根目录运行:
pio init --ide sublime
(会生成.sublime-project和compile_commands.json) - 安装 Sublime 插件
EasyClangComplete(通过 Package Control) - 在项目根目录新建
.clang_complete,内容为:-I./.pio/libdeps/uno/ -I./.pio/frameworks/arduino-avr/cores/arduino -I./.pio/frameworks/arduino-avr/variants/standard
(路径需按实际.pio结构调整)
Arduino 函数补全失效的三个常见原因
即使配置了 ECC,digitalWrite()、Serial.print() 这类函数仍不提示,通常卡在这几个点:
-
compile_commands.json没生成或路径不对 —— 检查是否在正确项目目录下执行了pio init,且.sublime-project中"folders"指向的是含platformio.ini的根目录 - Arduino 核心头文件没被 ECC 扫到 ——
.clang_complete中的-I路径必须精确到cores/arduino目录,不能只写到frameworks/arduino-avr - Sublime 缓存未刷新 —— 关闭项目后删掉
.sublime-project同级的.sublime-workspace文件再重开
比补全更关键的是编译和上传流程
Sublime 本身不处理烧录,得靠快捷键绑定 pio 命令:
- 菜单 → Tools → Build System → New Build System…,填入:
{ "cmd": ["pio", "run", "-t", "upload"], "working_dir": "${project_path}", "selector": "source.c, source.cpp", "shell": true }保存为PlatformIO Upload.sublime-build - 然后设快捷键(Preferences → Key Bindings),加一行:
{"keys": ["ctrl+alt+u"], "command": "build", "args": {"select": true}} - 注意:
pio run -t upload会先编译再烧录,但若板子未接入或串口被占,错误信息全堆在 Sublime 底部状态栏,建议先手动跑pio device list确认端口
补全只是表象,真正卡住人的永远是路径、权限、串口占用这些细节。










