Неформатированный код Lua быстро накапливает проблемы - непоследовательные отступы, разное расстояние вокруг операторов и блоки, различающиеся у разных участников команды. Правильное расширение VS Code устраняет всё это автоматически. Это руководство охватывает лучшие расширения форматирования Lua для VS Code в 2026 году, как настроить каждое из них, как включить форматирование при сохранении и что использовать, когда установить расширения вообще невозможно.
Почему форматирование важно для Lua
В Lua нет обязательного стандарта оформления. Парсер языка принимает любые допустимые отступы, любые пробелы вокруг операторов и любую структуру блоков - а это значит, что каждый разработчик по умолчанию следует собственным привычкам. В сольном проекте это нормально. В общем коде, игровом моде или репозитории командных скриптов непоследовательное форматирование создаёт шум в каждом диффе, замедляет проверку кода и усложняет отладку.
Цена непоследовательного стиля Lua
Когда два человека пишут на Lua по-разному - один использует отступы в четыре пробела, другой - табуляцию; один ставит пробелы вокруг операторов, другой нет - каждый коммит содержит изменения форматирования вперемешку с изменениями логики. Рецензенты тратят время на чтение диффов стиля вместо диффов логики. Количество конфликтов слияния растёт. Форматировщик решает эту проблему, нормализуя каждый файл к одному стилю при сохранении, делая диффы чистыми и удобными для проверки.
- Постоянные отступы - блоки `do`/`end`, `if`/`end`, `function`/`end` всегда оформляются одинаково
- Единообразные пробелы - пробелы вокруг `=`, `+`, `-`, `..` и других операторов применяются последовательно
- Дисциплина пустых строк - лишние пустые строки между функциями и внутри циклов нормализуются автоматически
- Предсказуемая работа со строками - длинные конкатенации строк и многострочные строки раскладываются предсказуемо
- Общекомандное принудительное применение - общий `.luarc.json` или `stylua.toml` в системе контроля версий гарантирует одинаковые правила для всех
Note
Лучшие расширения форматирования Lua для VS Code
В Marketplace VS Code есть несколько расширений Lua, но лишь некоторые из них активно поддерживаются и обеспечивают надёжное форматирование. Вот три, которые стоит знать в 2026 году, в порядке рекомендации.
1. Lua Language Server (sumneko.lua) - рекомендуемый вариант
Lua Language Server, опубликованный как `sumneko.lua` в Marketplace VS Code, - самый полный инструмент разработки на Lua, доступный для VS Code. Он устанавливает полноценную реализацию Language Server Protocol (LSP), которая предоставляет диагностику, вывод типов, переход к определению, документацию при наведении, поиск ссылок по всему проекту и встроенный форматировщик - всё в одном расширении.
- Издатель: sumneko (Tang Liu)
- ID в Marketplace: `sumneko.lua`
- Активные установки: 1M+ (по состоянию на 2026 год)
- Поддерживаемые версии Lua: 5.1, 5.2, 5.3, 5.4, LuaJIT
- Форматировщик: встроенный, настраивается через `.luarc.json`
- Форматирование при сохранении: поддерживается нативно
- Лучше всего подходит: большинству рабочих процессов Lua - игровым скриптам, автономным инструментам, встраиваемым системам
Tip
2. StyLua (jq-steuersoftware.stylua) - самоуверенная альтернатива
StyLua - это принципиальный форматировщик кода Lua, написанный на Rust и вдохновлённый Prettier. Расширение VS Code оборачивает бинарный файл StyLua и интегрирует его как форматировщик документов. В отличие от Lua Language Server, StyLua - инструмент только для форматирования: он не предоставляет диагностику, документацию при наведении или автодополнение. Зато он даёт детерминированный стиль без споров: вы соглашаетесь со стилем и следуете ему, так же как работает Prettier для JavaScript.
- Издатель: jq-steuersoftware
- ID в Marketplace: `jq-steuersoftware.stylua`
- Поддерживаемые версии Lua: 5.1, 5.2, 5.3, 5.4, LuaJIT, Luau (Roblox)
- Файл конфигурации: `stylua.toml` (необязателен - хорошо работает с настройками по умолчанию)
- Форматирование при сохранении: поддерживается нативно
- Лучше всего подходит: новым проектам, командам, которым нужно форматирование в стиле Prettier без настройки, разработке Roblox Luau
3. LuaFormatter (Koihik.vscode-lua-format) - настраиваемый устаревший вариант
LuaFormatter - более старое расширение, оборачивающее утилиту командной строки `lua-format`. Оно предоставляет обширную конфигурацию - можно по отдельности настроить ширину отступа, максимальную длину строки, пробелы вокруг операторов, отступ продолжения и многие другие правила. Такой уровень контроля полезен при миграции существующего кода, в котором уже есть устоявшийся стиль, который форматировщик должен соблюдать. Однако разработка замедлилась после появления StyLua, а бинарный файл `lua-format` на некоторых платформах требует отдельной установки.
- Издатель: Koihik
- ID в Marketplace: `Koihik.vscode-lua-format`
- Файл конфигурации: `.lua-format` (формат YAML)
- Лучше всего подходит: существующему коду со сложными требованиями к стилю, детальному по-правиловому контролю
- Предупреждение: требует отдельной установки бинарного файла `lua-format` на Linux/Mac
Warning
Как настроить Lua LS в VS Code
Установка Lua Language Server занимает меньше двух минут. Вот полный путь настройки от чистой установки VS Code до работающего форматирования при сохранении.
Установите Lua Language Server из Marketplace
Откройте VS Code и нажмите Ctrl+P (Cmd+P на Mac), чтобы открыть панель быстрого открытия. Введите `ext install sumneko.lua` и нажмите Enter. VS Code автоматически скачает и установит расширение. Дополнительные бинарные файлы не требуются - бинарник language server поставляется вместе с расширением.
Откройте файл .lua и запустите форматирование
Откройте любой файл `.lua` в вашем проекте. Нажмите Shift+Alt+F (Shift+Option+F на Mac), чтобы выполнить Format Document. При первом использовании VS Code покажет запрос на выбор форматировщика по умолчанию для файлов Lua - выберите Lua Language Server. Файл отформатируется сразу, а выбор сохранится в ваших пользовательских настройках.
Создайте .luarc.json для конфигурации уровня проекта
Создайте файл `.luarc.json` в корне проекта, чтобы последовательно управлять правилами форматирования и поведением language server для всей команды. Зафиксируйте этот файл в системе контроля версий, чтобы каждый участник получал одинаковые настройки. Минимальная стартовая конфигурация ориентирована на Lua 5.4 и отключает диагностику неопределённых глобальных переменных для проектов с собственными глобалами.
{
"Lua.runtime.version": "Lua 5.4",
"Lua.diagnostics.globals": ["myGlobal", "anotherGlobal"],
"Lua.format.enable": true,
"Lua.format.defaultConfig": {
"indent_style": "space",
"indent_size": "4",
"max_line_length": "120",
"trailing_table_separator": "smart"
}
}Включите форматирование при сохранении
Откройте настройки VS Code с помощью Ctrl+, (Cmd+, на Mac), найдите `format on save` и включите параметр Editor: Format On Save. С этого момента при каждом сохранении файла `.lua` форматировщик будет запускаться автоматически. Чтобы ограничить эту настройку только файлами Lua, не включая её глобально, добавьте её в `.vscode/settings.json` проекта.
{
"editor.formatOnSave": true,
"[lua]": {
"editor.defaultFormatter": "sumneko.lua"
}
}Lua Форматировщик - в браузере
Форматируйте код Lua мгновенно в браузере без расширений и установок - вставьте код и получите чистый, структурированный результат за секунды.
Настройка форматирования при сохранении
Форматирование при сохранении - самая значимая настройка для разработки на Lua в VS Code. После активации вам никогда не придётся запускать форматировщик вручную - он срабатывает при каждом Ctrl+S. Вот как настроить его правильно для разных командных сценариев.
Пользовательские и рабочие настройки
В VS Code два уровня настроек: пользовательские (применяются ко всем проектам) и рабочие (применяются только к текущему проекту). Для форматирования рабочий уровень почти всегда правильный выбор - он гарантирует, что каждый участник проекта использует один и тот же форматировщик, независимо от личных пользовательских предпочтений. Рабочие настройки находятся в `.vscode/settings.json` в корне проекта и должны быть зафиксированы в системе контроля версий.
Форматирование при сохранении для StyLua
Расширение StyLua для VS Code использует тот же механизм форматирования при сохранении. Установите форматировщик по умолчанию `jq-steuersoftware.stylua` в рабочих настройках. StyLua читает конфигурационный файл `stylua.toml`, если он есть - именно там задаются column_width, indent_type, indent_width и quote_style. Без `stylua.toml` StyLua применяет правила по умолчанию (отступ в два пробела, длина строки 120 символов, двойные кавычки).
column_width = 120
line_endings = "Unix"
indent_type = "Spaces"
indent_width = 4
quote_style = "AutoPreferDouble"
call_parentheses = "Always"Tip
Исключение файлов из форматирования
Некоторые файлы Lua переформатировать не следует - библиотеки поставщиков, сгенерированный код или минифицированные скрипты. В StyLua добавьте файл `.styluaignore` (с синтаксисом как у `.gitignore`) для исключения путей. В Lua Language Server можно ограничить форматировщик конкретными каталогами с помощью параметра `Lua.workspace.ignoreDir` в `.luarc.json`.
Сравнение LuaFormatter и StyLua
Два наиболее обсуждаемых форматировщика Lua - это LuaFormatter и StyLua. Они придерживаются принципиально разных подходов к философии форматирования, и правильный выбор зависит от контекста вашего проекта. Вот прямое сравнение.
| Аспект | LuaFormatter (Koihik) | StyLua |
|---|---|---|
| Философия | Высокая настраиваемость | Принципиальный (в стиле Prettier) |
| Файл конфигурации | `.lua-format` (YAML) | `stylua.toml` (TOML, необязателен) |
| Правила конфигурации | 30+ отдельных параметров | ~6 основных параметров |
| Luau / Roblox | ✗ Не поддерживается | ✓ Нативная поддержка Luau |
| Установка бинарника | ✗ Отдельный шаг на некоторых ОС | ✓ Входит в расширение VS Code |
| Использование в CI/CD | ✓ Через CLI lua-format | ✓ Автономный бинарник |
| Активная поддержка | ✗ Замедлилась с 2023 года | ✓ Активно поддерживается |
| Лучше всего для | Существующего кода с готовым стилем | Новых проектов, Roblox Luau |
Если вы начинаете новый проект, выберите StyLua и зафиксируйте конфигурацию. Если вы наследуете код с устоявшимся стилем, настройте LuaFormatter так, чтобы он ему соответствовал. Никогда не смешивайте оба форматировщика в одном проекте.
Lua Language Server и StyLua: могут ли они сосуществовать?
Lua Language Server и StyLua выполняют разные основные задачи - Lua LS это полноценный language server для диагностики и intellisense, StyLua - только форматировщик. Они могут сосуществовать в одной настройке VS Code: установите Lua LS для диагностики и код-интеллекта, а StyLua назначьте форматировщиком по умолчанию для форматирования документов. Эта комбинация даёт лучшее из обоих инструментов. Настройте её в .vscode/settings.json, задав defaultFormatter для [lua] как jq-steuersoftware.stylua, сохранив при этом установленный Lua LS ради его функций LSP.
Встроенный форматировщик Lua LS: когда его достаточно
Для большинства разработчиков встроенного форматировщика Lua Language Server достаточно, и он избавляет от необходимости устанавливать второе расширение. Он справляется со всеми стандартными задачами форматирования и чисто интегрируется с `.luarc.json`. Главная причина добавить StyLua сверху - если ваша команда хочет более строгого принудительного соблюдения стиля (например, конкретного стиля кавычек или соглашений о скобках вызовов), который форматировщик Lua LS сейчас не поддерживает.
Онлайн-форматировщик Lua как запасной вариант
Расширения VS Code - правильное решение для повседневной разработки. Но бывают сценарии, когда нужно отформатировать код Lua, ничего не устанавливая, - и здесь браузерный инструмент изящно закрывает пробел.
Когда вы не можете установить расширения
- Общие или заблокированные машины - корпоративные рабочие станции, компьютеры в лабораториях или среды CI, где нельзя устанавливать расширения VS Code
- Быстрая разовая чистка - коллега прислал фрагмент кода Lua на проверку, а вы хотите отформатировать его без переключения контекста
- Проверка кода без среды разработки - рецензирование pull request на машине, где ваша полная настройка Lua не сконфигурирована
- Проверки при адаптации - убедиться, что файл правильно отформатирован перед коммитом, не дожидаясь установки полного инструментария
- Осмотр минифицированного кода - у вас есть результат работы Lua-минификатора, и вы хотите переформатировать его для читаемости
Lua-форматировщик Aback Tools справляется со всеми этими случаями. Вставьте код Lua в редактор, и форматировщик применит единообразные отступы, нормализует пробелы вокруг операторов и приведёт в порядок пустые строки прямо в браузере - без регистрации, без установки, и данные никогда не покидают ваше устройство.
Дополнительные онлайн-инструменты для Lua
Форматирование - лишь один шаг в полном процессе обеспечения качества кода Lua. Несколько других браузерных инструментов покрывают смежные задачи, которые регулярно нужны вместе с форматированием:
- **Lua Beautifier** - улучшает визуальную компоновку синтаксически корректного, но трудного для чтения кода
- **Lua Syntax Validator** - проверяет код на ошибки парсинга с построчной диагностикой до запуска
- **Lua Minifier** - удаляет комментарии, пробелы и пустые строки для развёртывания в продакшене, уменьшая размер файлов скриптов
- **Lua Obfuscator** - переименовывает переменные и кодирует строки, защищая игровые скрипты от поверхностного реверс-инжиниринга
- **Lua Deobfuscator Helper** - повышает читаемость обфусцированных скриптов для отладки и анализа
Lua Beautifier
Приведите код Lua в порядок с правильными отступами, пробелами и переносами строк прямо в браузере - без расширений, установки и загрузок на сервер.
Лучшие практики форматирования Lua
Форматировщик работает с пробелами, но качество кода Lua этим не ограничивается. Эти практики дополняют ваш форматировщик, поддерживая кодовые базы Lua согласованными, читаемыми и сопровождаемыми в любом масштабе.
Фиксируйте конфигурацию форматировщика в системе контроля версий
`.luarc.json` для Lua LS, `stylua.toml` для StyLua или `.lua-format` для LuaFormatter должны находиться в корне проекта и быть зафиксированы в репозитории. Это гарантирует, что каждый участник - и каждый запуск CI - использует одинаковые правила форматирования. Без зафиксированной конфигурации каждый разработчик откатывается к собственным настройкам расширения, и расхождение форматирования со временем возвращается.
Добавьте проверку форматирования в CI
Форматирование при сохранении в VS Code помогает только тем, кто использует VS Code с установленным расширением. Проверка в CI ловит всё, что проскользнуло мимо: участников с другими редакторами, быстро исправленные файлы или сгенерированный код Lua. Флаг `--check` у StyLua завершается ненулевым кодом, если какой-либо файл отформатирован неверно, - это позволяет легко прерывать задание GitHub Actions или GitLab CI при нарушениях стиля.
Отделяйте коммиты форматирования от коммитов логики
Если вы впервые вводите форматировщик в существующий код, прогоните его по всем файлам одним выделенным коммитом без других изменений. Подпишите его явно (например, `chore: apply lua formatter to all files`). Так весь шум от форматирования останется в одном коммите, а все последующие коммиты будут содержать только изменения логики - и `git blame` останется полезным на каждой строке.
Tip
Используйте согласованные имена локальных переменных
Форматировщики не переименовывают переменные - это ваша ответственность. Сообщество Lua в основном использует `snake_case` для переменных и функций и `PascalCase` для таблиц уровня модуля и конструкций, подобных классам. Договоритесь о соглашении с командой и задокументируйте его в `CONTRIBUTING.md` проекта. Если вы работаете с Roblox Luau, руководство по стилю Roblox предписывает `PascalCase` для инстансов и сервисов и `camelCase` для локальных переменных - учитывайте это различие, прежде чем слепо применять соглашения сообщества Lua.
Warning
Key takeaways
- Lua Language Server (sumneko.lua) - лучшее универсальное расширение Lua для VS Code: форматирование, диагностика, вывод типов и код-интеллект в одной установке.
- StyLua - лучший форматировщик для новых проектов и разработки Roblox Luau, обеспечивающий принципиальное единообразие в стиле Prettier с минимальной настройкой.
- LuaFormatter - настраиваемый устаревший вариант для существующих кодовых баз, которым нужен гранулярный контроль стиля, но он поддерживается хуже альтернатив.
- Фиксируйте конфигурацию форматировщика (.luarc.json или stylua.toml) в системе контроля версий, чтобы все участники автоматически получали одинаковое поведение форматирования.
- Добавьте проверку форматирования в CI с помощью StyLua --check, чтобы ловить неформатированные файлы до слияния независимо от редактора участников.
- Lua-форматировщик Aback Tools решает разовые задачи форматирования во вкладке браузера - без расширений, установок и загрузок на сервер.
- Никогда не запускайте обычный форматировщик на обфусцированном коде Lua; сначала восстановите читаемость с помощью Lua Deobfuscator Helper.