За один вечер отладки я сосчитал сорок перетягиваний мыши к кнопке со стрелкой ради заливки — руки уже жили на Ctrl+S, а загрузка так и осталась кликом. Умножьте на месяцы работы: сотни лишних движений, каждая из которых выдёргивает из кода на две секунды и сбивает мысль. Среда быстрее ровно настолько, насколько быстры руки, и в IDE 2 для скорости рук всё есть — надо один раз пройтись по списку и вдолбить пять связок.
База — установка, первый скетч, настройка порт-плата — уже пройдена в уроках раздела про IDE; здесь — чистая механика: загрузка и проверка, автозавершение, быстрые переходы по файлам и символам, временные папки сборки. Часть связок унаследована от Theia — родни VS Code, — часть осталась от классики, и первые дни пальцы путаются, зато потом меню открывается только ради любопытства.
Арифметика клика: путь до кнопки загрузки — это переезд фокуса на панель, два клика и возврат глаз в код — три-четыре секунды на круг. Тридцать загрузок за вечер отладки — две минуты чистого мышиного времени, но урон не в минутах: каждый переезд рвёт контекст, и мысль собирается заново. Отсюда план на один вечер: выбрать пять связок под свой цикл — проверка, загрузка, монитор, переход, комментарий — и вдолбить их до автоматизма, хоть стикером на рамке монитора. Через неделю стикер можно снять: руки уже не спрашивают. Остальные откроются сами: среда пишет сочетания прямо в пунктах меню, стоит один раз начать их замечать.
Замечать помогает палитра команд: Ctrl+Shift+P открывает список всех команд среды с поиском по названию — печатаете пару букв и получаете пункт, который в меню искали бы минуту. Для разовых действий это дешевле запоминания: учить связку ради одного запуска в месяц незачем, её достаточно уметь находить. Палитра — ещё и витрина функций, о которых не подозреваешь: пролистать её список полезнее, чем чужие шпаргалки.
Загрузка, проверка, панели
Ядро режима «правлю-заливаю»: Ctrl+R проверяет компиляцию без порта, Ctrl+U заливает, Ctrl+Shift+U — через программатор. В свежих сборках IDE 2 к ним добавилась связка Ctrl+Enter — та самая загрузка без мыши, которой в классике не было годами; если на вашей версии она ничего не делает, обновите среду, связка появилась не в первом релизе. Монитор и плоттер живут на Ctrl+Shift+M и Ctrl+Shift+L — обе панели делят один порт, кто первый открыл, того и COM, поэтому привычка «проверил — закрыл вкладку» экономит минуту непонимания, почему плоттер рисует пустоту. Перед Ctrl+U я почти всегда жму Ctrl+R: проверка ловит синтаксис за секунды и не трогает порт, а заливка с битым скетчем просто тратит время на полный проход. Ctrl+Shift+U держите на уме для другого случая: заливка через программатор, когда загрузчик стёрт или сгорел — в обычном цикле она не нужна, но её расположение в списке стоит помнить заранее.
Автозавершение — второй аргумент, ради которого я переехал. Подсказки всплывают по мере набора, если в настройках включены Editor Quick Suggestions — живёт галочка в окне настроек среды; Ctrl+Space зовёт список вручную в любой момент, Tab или Enter принимает. Ограничение честное: подсказки тянет языковой сервер clangd, и на холодном старте большого проекта индекс собирается десятки секунд — список в это время бедный или пустой, это не поломка, дайте минуту. Для библиотечных объектов вроде Serial или lcd вроде бы мелочь, а экономит больше, чем кажется: меньше опечаток — меньше проходов Ctrl+R.
Панели живут в одной боковой области справа от кода: монитор и плоттер — две вкладки над одной и той же шторкой, поэтому Ctrl+Shift+M и Ctrl+Shift+L так похожи — это переключение одной и той же области. Рамку можно сузить, чтобы код оставался читаемым, и развернуть на полэкрана, когда разглядываете кривые. Порт при этом один на обе вкладки: открыли плоттер — монитор получает ноль байтов, и наоборот. Список выбора платы и порта в шапке — тоже часть быстрого цикла: переключение между Uno и Nano по несколько раз за день мышью — отдельное наказание.
Отдельный подарок свежей версии — автосохранение: перед проверкой и заливкой среда сохраняет скетч сама, и рефлекс Ctrl+S из классики можно отпускать. Я ещё год жал Ctrl+S перед каждой загрузкой на автомате — вреда в этом ноль, но и смысла тоже: компиляция больше не стартует с несохранённого файла. Кнопка Save при этом никуда не делась — просто перед сборкой она стала лишним движением, а после правки без заливки по-прежнему полезна.
// Uptime i sostoyanie knopki D2 - minimum teksta, maksimum prohodov.// Cel: proverit (Ctrl+R), zalit (Ctrl+U / Ctrl+Enter), otkryt monitor// (Ctrl+Shift+M) - i ni razu ne potyanutsya k myshi.unsigned long t = 0; void setup() { Serial.begin(9600); pinMode(2, INPUT_PULLUP); pinMode(12, OUTPUT);} void loop() { if (millis() - t >= 1000) { t = millis(); Serial.print("uptime s="); Serial.print(millis() / 1000); Serial.print(" knopka="); Serial.println(digitalRead(2) == LOW ? 1 : 0); // ternar: zamenite if-om digitalWrite(12, digitalRead(2) == LOW ? HIGH : LOW); }}| Действие | Клавиши | Когда спасает |
|---|---|---|
| Проверить компиляцию | Ctrl+R | перед заливкой; порт не трогается |
| Загрузить скетч | Ctrl+U, в свежих сборках Ctrl+Enter | цикл правлю-заливаю без мыши |
| Монитор порта | Ctrl+Shift+M | пульт и лог рядом с кодом |
| Плоттер | Ctrl+Shift+L | увидеть сигнал графиком |
| Быстрое открытие файла | Ctrl+P | скетч из скетчбука по двум буквам |
Переходы и темп-файлы
Переходы — недооценённая половина списка. Ctrl+P открывает файл по куску имени: набираете «tem» — получаете sketch_temperature, не трогая дерево папок; Ctrl+Shift+O прыгает к символу внутри файла по имени функции или переменной, Ctrl+G — к строке по номеру, когда компилятор ткнул в конкретную. Ctrl+/ комментирует выделенный блок одним нажатием, Ctrl+T приводит код к общему стилю — про сам стиль и зачем он нужен, разговор был в уроке про форматирование кода.
Смесь связок — плата за наследство. Часть редакторских привычек унаследована от Theia, родни VS Code: Ctrl+P, Ctrl+Shift+O, мультикурсор по Ctrl+D работают как в большой студии. Часть осталась от классики двухтысячных: Ctrl+T на месте, Ctrl+Shift+M никуда не переехал. Первые дни пальцы спотыкаются на этой смеси, потом она становится преимуществом — старые рефлексы не сломаны, новые добавились сверху. К слову о рефлексах: раскладку я переключаю по Alt+Shift, и за вечер она не раз срабатывает случайно прямо в редакторе — если у вас так же, знайте: среда тут ни при чём.
Поиск — второй трамплин: Ctrl+F ищет по файлу, Ctrl+H заменяет с предпросмотром, и обе строки помнят последний запрос до закрытия проекта. Для чужих библиотек, где надо понять, кто зовёт функцию, поиск по файлу вместе с переходом к символу закрывает девять задач из десяти. Мультикурсор — Ctrl+D расширяет выделение на следующее вхождение слова — правит десять повторов одной переменной за одно движение; в классике об этом можно было только мечтать, а теперь это делается раньше, чем успеваешь подумать о переименовании.
Ещё один прыжок, которого в классике не существовало: Ctrl+Click по имени функции переносит к её определению — clangd знает, где живёт каждый символ, и в большом библиотечном скетче это быстрее любого поиска. Если клик по коду неудобен, та же команда лежит в меню Go с подписанной связкой F12. Возврат назад тоже без мыши — соответствующий пункт рядом, и подписи в меню, как всегда в IDE 2, честнее любой статьи из интернета.
Темп-файлы — то, что происходит за кулисами после Ctrl+R: сборка идёт во временную папку, и её путь виден в логе, если включить Show verbose output during compilation в настройках. На Linux это что-то вроде /tmp/arduino/sketches-…, на Windows — sketches внутри системного Temp; там же лежат прошивочные .elf и .hex этого прогона, до следующей сборки. Для вечного бинаря есть экспорт — механика и где искать файлы разобраны в уроке про экспорт и бэкап-папку. Сами скетчи темп-папке не принадлежат: новый безымянный проект живёт, пока вы не сделали Save As, а оседает он в скетчбуке — устройство папок показано в уроке про структуру sketchbook.
На диске у среды два адреса, которые стоит различать. Папка Arduino15 в домашней директории — склад ядер, инструментов и индексов пакетов: сотни мегабайт, но именно поэтому после переустановки среды платы собираются без повторной загрузки — там же живёт кэш индексов менеджера плат, детали в уроке про URL пакета. Темп-папка сборки — противоположность: чистить её можно в любой момент, среда пересоберёт всё с нуля при первом же Ctrl+R, просто медленнее. Практика: тормозящая сборка с непонятным поведением лечится чисткой temp; кэш Arduino15 чистить без нужды не стоит — это повторное скачивание пакетов на сотни мегабайт.
Финальный мост — от связок среды к связкам платы: горячие клавиши — это скорость рук на компьютере, а у железа свои жесты. В симуляторе ниже — кнопка, которая различает клик, двойной клик и долгое нажатие: тот же принцип, что и у среды, — мало кнопок, много таймингов. Механика различения построена на millis — тот же таймер, что в уроке про millis вместо delay, только измеряет он нажатия, а не паузы.
- 1. Какая связка проверяет компиляцию, не трогая порт?
- 2. Ctrl+Enter не запускает загрузку. Что проверить первым?
- 3. Что делает Ctrl+P?
- 4. Подсказки автозавершения на холодном старте большие проекты дают бедный список. Почему?
- 5. Где лежат .elf и .hex текущей сборки?
- Цикл правлю-заливаю: Ctrl+R проверка, Ctrl+U загрузка, в свежих сборках ещё и Ctrl+Enter.
- Ctrl+Shift+M и Ctrl+Shift+L — монитор и плоттер; обе панели делят один порт, кто первый открыл, тот и COM.
- Автозавершение: Editor Quick Suggestions в настройках, Ctrl+Space вручную; холодный старт clangd занимает десятки секунд.
- Ctrl+P — файл по имени, Ctrl+Shift+O — символ, Ctrl+G — строка, Ctrl+/ — комментарий, Ctrl+T — стиль.
- Сборка живёт во временной папке (путь в verbose-логе); скетчи оседают в скетчбуке после Save As.
Частые вопросы по теме урока
- Какая связка проверяет компиляцию, не трогая порт?
- Ctrl+R — проверка: синтаксис ловится за секунды, порт остаётся свободным. Ctrl+U и Ctrl+Enter — загрузка, Ctrl+Shift+M — монитор. Ctrl+R
- Ctrl+Enter не запускает загрузку. Что проверить первым?
- Связка появилась в свежих сборках. На старых версиях она пуста — обновите среду или пользуйтесь Ctrl+U, которая работает везде. версию среды: связка завезена не в первом релизе IDE 2
- Что делает Ctrl+P?
- Ctrl+P — быстрое открытие по имени: пара букв — и нужный скетч найден без дерева папок. Наследие Theia, родни VS Code. открывает файл по куску имени
- Подсказки автозавершения на холодном старте большие проекты дают бедный список. Почему?
- Языковой сервер строит индекс десятки секунд на большом проекте — это не поломка. Через минуту подсказки всплывают в полном объёме. clangd ещё собирает индекс проекта
- Где лежат .elf и .hex текущей сборки?
- Сборка идёт во временную папку вида sketches-… в системном Temp. Включите Show verbose output during compilation — и путь появится в логе. во временной папке сборки — путь виден в verbose-логе