Друг, живущий в VS Code по работе, однажды сел за мою Arduino IDE и первым делом потянулся к иконке расширений: «где список плагинов? у меня в редакторе их тридцать». Его ждало разочарование: витрина, к которой он привык, тут не главная, список скромный, а половина ожиданий от «плагинов» упирается вовсе не в расширения. Разбор занял у нас один вечер и одну чашку чая — пересказываю его по полочкам.
Сначала словарь. Arduino IDE 2.x собрана на Eclipse Theia — открытой родне VS Code, и модель расширений унаследована оттуда же: расширение — это файл .vsix, архив из манифеста и кода. Каталог, из которого живут расширения Theia-продуктов, — открытый Open VSX на open-vsx.org, а не магазин Microsoft; в маркете Microsoft расширения для Arduino IDE не видны, и скачанный оттуда .vsix среда не берёт.
Второе уточнение до всяких обещаний: расширения в этой среде — про окно и редактор, а не про плату. Компиляцию, ядра и загрузчики расширение не добавляет и не чинит никогда — за это отвечает другой механизм, платформы из Boards Manager. Кто приходит в расширения с запросом «заставьте мой ESP32 собираться» — уходит с пустыми руками; правильная дверь будет ниже по тексту.
Где всё это ищется в интерфейсе. Каталог расширений в IDE 2 живёт в палитре команд и отдельных пунктах, а не в привычной панели со звёздочками и счётчиками скачиваний; списка «у меня установлено вот это» среда не показывает вовсе. Отсюда практический вывод первого дня: не ищите витрину — ищите конкретную вещь, и делайте это словом в палитре. Остальное — вопрос привычки, а не поломки.
Что ставится и что уже в комплекте
Что в сборке без единого действия с вашей стороны. Первое — темы: тёмная стоит по умолчанию, светлая рядом, обе переключаются в настройках; за красками никуда ходить не нужно — темы и шрифты разобраны отдельно. Второе — перевод интерфейса: языковые пакеты для десятков языков среда тянет из Open VSX ещё при своей сборке, поэтому смена языка живёт в настройках, в списке Language, и применяется после перезапуска. Интерфейс на русском — не предмет охоты за расширением, а пункт в списке.
Что ставится руками. Хочется тему за пределами встроенных — берите её на open-vsx.org (в каталоге сотни редакторских тем) и ставьте файлом .vsix через палитру команд: запрос «vsix» находит пункт установки из файла. Первая честная оговорка здесь такая: расширения для VS Code написаны под полный API Microsoft, а Theia поддерживает его подмножество, поэтому тема с Open VSX может встать криво или не проявиться вовсе — каталог открытый, качество в нём плавает. После установки давайте среде перезапуск: добрая половина «неработающих расширений» — просто незакрытое окно.
Сам файл .vsix — обычный архив: манифест с именем и версией плюс код расширения. Ничего секретного внутри нет, и перед установкой чужого пакета его можно распаковать и просмотреть глазами: что объявляет манифест, какие команды регистрирует. Для пакетов с open-vsx.org это редко нужно, но привычка смотреть внутрь спасает от «чудо-ускорителей», которых в открытых каталогах больше, чем кажется на первый взгляд.
Третий пункт списка полезного я оставил пустым сознательно. Для ардуино-работы приличный список заканчивается на темах и языках: автодополнение уже живёт в среде и обслуживается встроенным clangd, переходы к определению — там же, поиск и мультикурсор — из коробки. Ставить поверх «улучшатель редактора» — украшать то, что работает. Мой список расширений на трёх машинах пуст уже второй год, и ни разу за это не было стыдно.
Тот же список изнанкой — чего не ставить даже при большом желании. Пакеты «улучшенной подсветки синтаксиса»: редактор и так красит по правилам C++. «Темы для Arduino» с десятком скачиваний: верный способ получить поломанный интерфейс после очередного обновления. «Аддоны прошивки»: красивое имя того, что платформы и так делают. Фильтр простой: если пакет обещает ускорить сборку или добавить плату — перед вами маркетинг, а не механизм.
Чего расширения не делают
Платы — самое частое недоразумение. Поддержка платы в этой экосистеме — платформа: ядро, toolchain, загрузчики, описания карточек в boards.txt. Ставится через Boards Manager, для сторонних вендоров — вместе с URL пакета в настройках; механику и грабли разбирал в уроке про URL пакета и на примере ESP32 в менеджере плат. Расширение не умеет ни первого, ни второго: оно не пишет в Arduino15 и про toolchain не знает.
Автоформаттер — второй миф. В среде он есть и обслуживается clang-format, но стиль зашит наглухо: файл .clang-format рядом со скетчем среда не читает, настроек в окне Preferences нет, и расширения тут бессильны — такого плагина для этой сборки в природе нет. Правильная стратегия обратная: привести руки к встроенному стилю, логика и цена которого — в уроке про форматирование кода.
Монитор, плоттер, менеджеры плат и библиотек — тоже не рыба для расширений: панели свои, с глубокими связками, и сторонние замены им не живут. Библиотеки идут через Library Manager и ZIP-путь из базового урока про библиотеки. Коротко: весь конвейер «плата — компиляция — заливка» лежит вне расширений, и это не недоработка, а граница слоёв — расширения про окно, платформы про железо.
И маленькая карточка личного опыта: расширение я ставил ровно один раз — тему для показа кода на проекторе. Тема встала, вечер прожила, а после очередного обновления среды исчезла без следа, и возвращать я её не стал: встроенной тёмной хватило. С тех пор в моей записке к среде есть строка «поставил — зачем — когда», и заполнялась она один раз за два года. Цифры честные: ноль активных расширений, ноль сожалений, один стёртый vsix.
// Etalon zdorovya sredy: sobirayu EGO do i posle eksperimentov s temami i vsix.// Teploye vremya sborki do ustanovok - bazovoe; posle - sravnivaem.// Stalo dolshe na poryadok - vinovata ne tema, a chto-to drugoe v hozyajstve. const int LED = 13;unsigned long t0 = 0;int shag = 0; void setup() { Serial.begin(9600); pinMode(LED, OUTPUT); Serial.println("etalon: migayu i pechatayut, nichego lishnego");} void loop() { if (millis() - t0 > 500) { t0 = millis(); shag = shag + 1; if (shag % 2 == 0) { digitalWrite(LED, HIGH); } else { digitalWrite(LED, LOW); } Serial.print("shag "); Serial.println(shag); }}| Захотел | Правильная дверь | Заметка |
|---|---|---|
| тёмный или светлый интерфейс | встроено: настройки, Theme | стоит по умолчанию, без установок |
| интерфейс на родном языке | настройки, Language, перезапуск | языковые пакеты уже в сборке |
| сторонняя тема | vsix с open-vsx.org вручную | совместимость с Theia не гарантирована |
| поддержка новой платы | Boards Manager, для сторонних — URL пакета | расширения тут бессильны |
| другой стиль автоформаттера | нигде: clang-format зашит | файл .clang-format среда игнорирует |
| лучшее автодополнение | уже встроено: clangd | улучшатели поверх не живут |
Позиция, к которой я пришёл после пары вечеров с темами: держать среду голой. Каждая надстройка — это что-то в памяти, что-то в старте и что-то, что однажды сломается после обновления, и его придётся опознавать. Скорость старта у 2.x и так чувствительна к хозяйству — лишние платформы в Arduino15 тянут окно запуска, мы это считали в уроке про тормоза и кэш; расширения добавляют свою каплю в тот же котёл.
Второй аргумент — воспроизводимость. На трёх моих машинах среда выглядит одинаково: встроенная тёмная тема, один шрифт, ни одного vsix. Настройки переносятся файлом, а не списком установленных плагинов, и новый ноутбук собирается за десять минут; к этому приучает git-бэкап проектов быстрее любых рассуждений. Друг с тридцатью плагинами тратит на переезд вечер, я — одну кружку кофе.
Отдельно про ожидание «расширения сделают среду быстрее». Механика у скорости другая: версия среды, кэш сборки, исключения антивируса, число платформ — все эти рычаги разобраны в соседних уроках раздела, и ни один из них не называется «расширение». Наоборот: каждый пакет — код, который грузится вместе со средой. Скорость приходит из чистого хозяйства, а не из надстроек поверх него.
Когда расширения всё-таки уместны: язык интерфейса вне комплекта, специфичная тема под слабое зрение, машина, где редактор нужен и для другого. Это нормальные сценарии, и механизм для них есть — Open VSX и палитра. Держите в голове границу: за окном — расширения, за железом — платформы, а перепутанные двери стоят вечера. В симуляторе выше — модель того же выбора: четыре запроса и четыре правильные двери.
- 1. Какой формат у расширений Arduino IDE 2.x?
- 2. Из какого каталога среда берёт расширения?
- 3. Нужна поддержка новой платы. Куда идти?
- 4. Хочу другой стиль автоформаттера. Что делать?
- 5. Расширение поставилось, но нигде не видно. Первый шаг?
- Формат расширений в IDE 2.x — .vsix; источник — открытый Open VSX, магазин Microsoft для этой среды не поставщик.
- Темы и перевод интерфейса в основном в комплекте: Dark/Light в настройках, Language со сменой после перезапуска.
- Расширения — про окно и редактор; платы — платформы через Boards Manager, библиотеки — Library Manager.
- Автоформаттера-настройщика нет: clang-format зашит, файл .clang-format среда игнорирует.
- Голая среда переносится файлом настроек и git-репозиторием, а не списком плагинов.
Частые вопросы по теме урока
- Какой формат у расширений Arduino IDE 2.x?
- Среда на Theia, и формат унаследован от VS Code: архив .vsix с манифестом и кодом. Библиотеки и скетчи — не расширения. .vsix — как у VS Code
- Из какого каталога среда берёт расширения?
- Theia-продукты живут на открытом Open VSX; в магазине Microsoft расширения для Arduino IDE не видны. Open VSX (open-vsx.org)
- Нужна поддержка новой платы. Куда идти?
- Платформа — это ядро, toolchain и загрузчики, а не расширение. Ставится через Boards Manager; расширения в Arduino15 не пишут. Boards Manager, для сторонних — URL пакета
- Хочу другой стиль автоформаттера. Что делать?
- Настройщика форматтера в этой сборке нет и расширения тут не помогут. Путь — привыкнуть к встроенному стилю. никак: clang-format зашит, .clang-format среда игнорирует
- Расширение поставилось, но нигде не видно. Первый шаг?
- Заметная часть расширений регистрируется только после перезапуска; затем Ctrl+Shift+P и имя расширения. Не завелось — удаляйте. перезапустить среду и проверить палитру по названию