Настройка VS Code
This content is not available in your language yet.
Официальное расширение Modular превращает VS Code в полноценную среду для Mojo: автодополнение, подсказки по документации, переход к определению, форматирование, запуск файла и отладчик на базе LLDB.
Что умеет расширение
Заголовок раздела «Что умеет расширение»- подсветка синтаксиса
.mojo; - автодополнение кода;
- диагностика ошибок с быстрыми исправлениями;
- переход к символу и документация во всплывающей подсказке;
- форматирование кода;
- запуск и отладка файла прямо из редактора;
- полноценная работа языкового сервера внутри блоков кода в докстрингах — редкая возможность, которой нет почти нигде.
Установка
Заголовок раздела «Установка»-
Поставьте расширение Mojo 🔥 (
modular-mojotools.vscode-mojo) — издатель Modular. -
Поставьте расширение Python (
ms-python.python).Формально оно не обязательно, но именно через него расширение Mojo находит окружение с установленным SDK. Без него в строке состояния появится предложение его установить.
-
Откройте папку проекта — ту, где лежат
pyproject.tomlи.venv.На Windows открывать нужно командой
code .из терминала Ubuntu, а не через «Файл → Открыть папку». Подробнее — в главе Установка на Windows через WSL. -
Откройте любой файл
.mojo.В строке состояния внизу слева появится статус SDK: либо сведения о найденном окружении, либо кликабельное сообщение, что SDK не найден.
Как расширение находит SDK
Заголовок раздела «Как расширение находит SDK»Это главный источник недоразумений, поэтому разберём порядок поиска. Расширение выбирает окружение так, сверху вниз:
-
Настройка
mojo.sdk.path. Если она задана — используется только она, без всякого автоопределения. -
SDK монорепозитория — папка
.derived/в открытой рабочей области. Это вариант для тех, кто собирает Mojo из исходников; обычному читателю он не встретится. -
Окружение Python, найденное через расширение Python. Именно так находятся установки через
uvиpixi.
Если автоопределение промахнулось, порядок действий такой:
-
Выполните команду Python: Select Interpreter (Ctrl + Shift + P) и выберите интерпретатор из
.venvвашего проекта.Расширение Python иногда по умолчанию цепляется за глобальное окружение, даже когда в проекте есть своё — это самая частая причина «SDK не найден».
-
Если не помогло — укажите путь явно. Создайте в проекте файл
.vscode/settings.json:.vscode/settings.json {"mojo.sdk.path": "/home/вашеимя/projects/hello-mojo/.venv"} -
После правки настроек выполните команду Refresh SDK Detection или Restart the Extension.
Запуск и отладка
Заголовок раздела «Запуск и отладка»Самый быстрый способ — стрелка вниз рядом с кнопкой ▶️ в правом верхнем
углу открытого файла .mojo: там есть Run Mojo File и
Debug Mojo File.
Для постоянной конфигурации создайте .vscode/launch.json. Расширение
предлагает готовые шаблоны; вот тот, что нужен в 90% случаев:
{ "version": "0.2.0", "configurations": [ { "type": "mojo-lldb", "request": "launch", "name": "Mojo: отладить текущий файл", "mojoFile": "${file}", "args": [], "env": [], "cwd": "${workspaceFolder}", "runInTerminal": false } ]}Полезные поля конфигурации:
| Поле | Что делает |
|---|---|
mojoFile | Файл .mojo, который нужно собрать и запустить под отладчиком. Имеет приоритет над program |
program | Путь к уже собранному исполняемому файлу — если хотите отлаживать результат mojo build |
args | Аргументы командной строки программы |
buildArgs | Аргументы сборки, когда используется mojoFile |
env | Дополнительные переменные окружения, массив строк вида ИМЯ=значение |
cwd | Рабочая директория программы |
stopOnEntry | Остановиться сразу на первой инструкции |
runInTerminal | Запускать во встроенном терминале — нужно, если программа читает ввод пользователя |
Отладчик — это LLDB, поставляемый вместе с Mojo. Работают точки останова,
пошаговое выполнение, просмотр значений переменных, стек вызовов и консоль
отладчика. Есть и отдельный тип конфигурации mojo-cuda-gdb — для отладки
кода, исполняющегося на GPU NVIDIA.
Чтобы подключиться к уже запущенному процессу, используйте команду
Attach to Process или конфигурацию с "request": "attach" и указанием
pid либо program.
Полезные команды
Заголовок раздела «Полезные команды»Все они вызываются через Ctrl + Shift + P:
| Команда | Зачем |
|---|---|
Mojo: Run Mojo File | Собрать и запустить текущий файл |
Mojo: Debug Mojo File | То же, но под отладчиком |
Mojo: Debug Mojo File in Terminal | Отладка с полноценным терминалом |
Mojo: Configure Build and Run Args | Задать аргументы сборки и запуска |
Mojo: Refresh SDK Detection | Перечитать окружение после смены интерпретатора |
Mojo: Restart the Extension | Первое, что стоит попробовать, когда «всё сломалось» |
Mojo: Restart the Mojo LSP Server | Перезапустить только языковой сервер |
Mojo: Attach to Process | Подключиться к запущенному процессу |
Настройки
Заголовок раздела «Настройки»| Настройка | По умолчанию | Что делает |
|---|---|---|
mojo.sdk.path | пусто | Абсолютный путь к окружению с SDK. Отменяет автоопределение |
mojo.preferWorkspaceEnv | true | Предпочитать окружение, найденное в рабочей области (.venv, .pixi/envs/*), а не глобальное |
mojo.lsp.includeDirs | не задано | Дополнительные каталоги для поиска импортируемых модулей |
mojo.lsp.suppress.diagnostics.in.docstring | false | Не показывать ошибки в примерах кода внутри докстрингов |
mojo.formatting.args | не задано | Аргументы форматировщика, по одному элементу массива на аргумент |
mojo.run.focusOnTerminalAfterLaunch | false | Переводить фокус в терминал после запуска файла |
mojo.onSettingsChanged | prompt | Что делать, когда изменение настройки требует перезапуска расширения |
Форматирование при сохранении
Заголовок раздела «Форматирование при сохранении»Расширение регистрируется как форматировщик для Mojo, поэтому включается это стандартными настройками VS Code:
{ "[mojo]": { "editor.defaultFormatter": "modular-mojotools.vscode-mojo", "editor.formatOnSave": true }}Когда что-то не работает
Заголовок раздела «Когда что-то не работает»Mojo SDK not found
Расширение не нашло окружение с компилятором. Чаще всего расширение Python выбрало глобальный интерпретатор вместо проектного.
По порядку: Python: Select Interpreter → выбрать .venv проекта →
Mojo: Refresh SDK Detection. Если не помогло — прописать
mojo.sdk.path абсолютным путём и перезапустить расширение.
Автодополнение молчит, ошибки не подсвечиваются, хотя файл открыт
Языковой сервер не запустился или упал. Такое случается после обновления SDK или переключения окружения.
Команда Mojo: Restart the Mojo LSP Server. Если не помогает — Mojo: Restart the Extension. Логи смотрите в панели «Вывод», выбрав в списке канал Mojo.
Импорт своего модуля подчёркнут красным, но программа компилируется
Языковой сервер не знает, где искать модуль: его каталог не входит в список путей поиска.
Добавьте каталог в mojo.lsp.includeDirs в настройках рабочей области.
🎯 Проверь себя
Почему расширению Mojo нужно расширение Python?
Через него расширение Mojo узнаёт, какое виртуальное окружение выбрано
в проекте, — а компилятор Mojo лежит именно внутри окружения, созданного
uv или pixi. Без этого источника остаётся только ручная настройка
mojo.sdk.path.
Куда указывать mojo.sdk.path при установке через uv?
На папку .venv проекта, абсолютным путём. Именно она содержит
bin/mojo и lib/python*/site-packages/modular/. Подстановки вроде
${workspaceFolder} не поддерживаются.
Программа под отладчиком ждёт input(), но ничего ввести нельзя. Что поменять?
Добавить в конфигурацию отладки "runInTerminal": true — тогда
программа запустится во встроенном терминале и сможет читать ввод.
Что дальше
Заголовок раздела «Что дальше»Если работаете не на своей машине — настроим удалённую разработку: SSH, контейнеры и Codespaces. Если всё готово — переходите к первой программе.
Тексты курса — CC BY-NC-SA 4.0, код примеров — Apache 2.0