01.10.2026 15:35
ESP-Vim перетворює ESP32 на кишеньковий комп’ютер із Vim замість ОС
Розробник під ніком Omwah переніс Vim 9.2 на мікроконтролери ESP32-P4 та ESP32-S3. Незвичність проєкту ESP-Vim у тому, що редактор не запускається поверх Linux або іншої операційної системи — мікроконтролер завантажується безпосередньо у Vim, а сам редактор фактично стає основним середовищем роботи з пристроєм.
На платі з дисплеєм і клавіатурою така система перетворюється на мінімалістичний кишеньковий комп’ютер для роботи з текстом, програмування та взаємодії з периферією. На звичайній dev-board без екрана ESP-Vim можна використовувати через UART як термінальний застосунок — приблизно так само, як при підключенні до віддаленої Unix-машини.
При цьому йдеться не про спрощену імітацію vi. У прошивку перенесено повноцінний Vim 9.2 із буферами, вікнами, регістрами, макросами, Vim Script, пошуком через :vimgrep, diff-режимом, перевіркою орфографії та підсвічуванням синтаксису приблизно для 30 типів файлів.
Vim замість shell
ESP-Vim помітно відрізняється від звичного Linux-середовища. Повноцінної командної оболонки тут немає, тому стандартні для настільного Vim команди на кшталт :terminal або :!cmd недоступні.
Замість цього автор додав власний набір команд :Esp, через які редактор отримує доступ до функцій самого мікроконтролера. З Vim можна сканувати Wi-Fi-мережі, керувати GPIO, працювати з ADC, I²C, послідовними портами, датчиками, Bluetooth, пам’яттю та системними налаштуваннями. Для сценаріїв автоматизації доступні також функції esp_*(), які можна викликати безпосередньо з Vim Script.
Другим середовищем програмування став MicroPython. Скрипт можна написати у Vim і відразу виконати на пристрої, а Python-код має доступ як до обладнання ESP32, так і до самого редактора. Наприклад, програма може проаналізувати відкритий буфер Vim, знайти в ньому певний текст і залежно від результату переключити GPIO.
У результаті редактор тут виконує приблизно ту роль, яку в традиційній ОС поділяють shell, файловий менеджер, IDE та системні утиліти.
Файли, Git і доступ до інших машин
ESP-Vim підтримує локальну файлову систему у Flash-пам’яті та SD-карти. Для керування файлами є :EspFiles — двопанельний файловий менеджер у стилі Midnight Commander. Він працює не тільки з локальними каталогами, а й із віддаленими машинами через SCP та SFTP.
Передавати файли можна також через HTTP(S), USB Mass Storage або вбудований вебінтерфейс. Останній дозволяє працювати з файлами та налаштуваннями через браузер і навіть бачити в реальному часі, що зараз відкрито в редакторі. Доступ до вебінтерфейсу захищений паролем.
Окремо реалізовано базову роботу з Git. Безпосередньо з Vim доступні init, commit, diff, log, clone, fetch та push. Репозиторії зберігаються у Flash або на SD-карті та сумісні зі звичайним Git на ПК; обмін із віддаленими репозиторіями можливий через HTTPS або SSH.
Яке залізо потрібне
Проєкт розрахований на ESP32-P4 та ESP32-S3. Мінімальна конфігурація передбачає 16 МБ Flash і щонайменше 8 МБ PSRAM. Саме зовнішня PSRAM тут критично важлива: внутрішньої оперативної пам’яті ESP32 для Vim недостатньо.
За оцінкою автора, при роботі зі звичайним файлом Vim використовує близько 0,5 МБ пам’яті, а під час тестів із документацією та syntax highlighting споживання доходило приблизно до 2,7 МБ. Прошивка наразі займає близько 2,2 МБ, ще приблизно стільки ж припадає на runtime-файли Vim — документацію, syntax-файли та плагіни.
Серед цільових пристроїв зазначені M5Stack Tab5, кілька дисплейних плат на ESP32-S3, зокрема варіанти Cheap Yellow Display, Freenove ESP32-S3 Display і Waveshare із монохромним LCD. Підтримуються вбудовані, USB- та BLE-клавіатури, а сенсорний екран можна використовувати для переміщення курсора та прокручування.
Цікаво, що старий класичний Cheap Yellow Display на ESP32 для ESP-Vim не підходить: у нього лише 4 МБ Flash і немає необхідної PSRAM. Потрібні саме новіші S3-версії з конфігурацією на кшталт N16R8 — 16 МБ Flash та 8 МБ PSRAM.
Поки що це радше експеримент
Попри вражаючий список можливостей, ESP-Vim наразі залишається експериментальним проєктом. Автор прямо зазначає, що ESP32-P4 та ESP32-S3 поки тестувалися переважно в емуляторі, а повноцінне випробування на фізичних платах ще триває.
Втім, сама концепція виглядає доволі органічною. Інтерфейс vi свого часу створювався для повільних терміналів і систем із ресурсами, які за сучасними мірками були надзвичайно обмеженими. Тому Vim, який десятиліттями асоціювався з Unix-серверами та терміналами, несподівано добре вписується і в сучасний мікроконтролер із кількома мегабайтами пам’яті.
По суті, ESP-Vim демонструє досить незвичний підхід до embedded-комп’ютера: замість того щоб намагатися вмістити в ESP32 урізану настільну ОС, автор побудував систему навколо одного добре відомого інструмента, поступово додавши до нього файловий менеджер, мережу, Git, Python і прямий доступ до обладнання.
Нагадаємо, нещодавно команда ESPARGOS виявила, що в деяких чипах ESP32 є недокументована функція: вона дає змогу прошивці обходити стандартні функції Wi-Fi та Bluetooth і натомість захоплювати необроблені баз смуги IQ.
)
)