Skip to content

Настройка VS Code

This content is not available in your language yet.

Официальное расширение Modular превращает VS Code в полноценную среду для Mojo: автодополнение, подсказки по документации, переход к определению, форматирование, запуск файла и отладчик на базе LLDB.

  • подсветка синтаксиса .mojo;
  • автодополнение кода;
  • диагностика ошибок с быстрыми исправлениями;
  • переход к символу и документация во всплывающей подсказке;
  • форматирование кода;
  • запуск и отладка файла прямо из редактора;
  • полноценная работа языкового сервера внутри блоков кода в докстрингах — редкая возможность, которой нет почти нигде.
  1. Поставьте расширение Mojo 🔥 (modular-mojotools.vscode-mojo) — издатель Modular.

  2. Поставьте расширение Python (ms-python.python).

    Формально оно не обязательно, но именно через него расширение Mojo находит окружение с установленным SDK. Без него в строке состояния появится предложение его установить.

  3. Откройте папку проекта — ту, где лежат pyproject.toml и .venv.

    На Windows открывать нужно командой code . из терминала Ubuntu, а не через «Файл → Открыть папку». Подробнее — в главе Установка на Windows через WSL.

  4. Откройте любой файл .mojo.

    В строке состояния внизу слева появится статус SDK: либо сведения о найденном окружении, либо кликабельное сообщение, что SDK не найден.

Это главный источник недоразумений, поэтому разберём порядок поиска. Расширение выбирает окружение так, сверху вниз:

  1. Настройка mojo.sdk.path. Если она задана — используется только она, без всякого автоопределения.

  2. SDK монорепозитория — папка .derived/ в открытой рабочей области. Это вариант для тех, кто собирает Mojo из исходников; обычному читателю он не встретится.

  3. Окружение Python, найденное через расширение Python. Именно так находятся установки через uv и pixi.

Если автоопределение промахнулось, порядок действий такой:

  1. Выполните команду Python: Select Interpreter (Ctrl + Shift + P) и выберите интерпретатор из .venv вашего проекта.

    Расширение Python иногда по умолчанию цепляется за глобальное окружение, даже когда в проекте есть своё — это самая частая причина «SDK не найден».

  2. Если не помогло — укажите путь явно. Создайте в проекте файл .vscode/settings.json:

    .vscode/settings.json
    {
    "mojo.sdk.path": "/home/вашеимя/projects/hello-mojo/.venv"
    }
  3. После правки настроек выполните команду Refresh SDK Detection или Restart the Extension.

Самый быстрый способ — стрелка вниз рядом с кнопкой ▶️ в правом верхнем углу открытого файла .mojo: там есть Run Mojo File и Debug Mojo File.

Для постоянной конфигурации создайте .vscode/launch.json. Расширение предлагает готовые шаблоны; вот тот, что нужен в 90% случаев:

.vscode/launch.json
{
"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.preferWorkspaceEnvtrueПредпочитать окружение, найденное в рабочей области (.venv, .pixi/envs/*), а не глобальное
mojo.lsp.includeDirsне заданоДополнительные каталоги для поиска импортируемых модулей
mojo.lsp.suppress.diagnostics.in.docstringfalseНе показывать ошибки в примерах кода внутри докстрингов
mojo.formatting.argsне заданоАргументы форматировщика, по одному элементу массива на аргумент
mojo.run.focusOnTerminalAfterLaunchfalseПереводить фокус в терминал после запуска файла
mojo.onSettingsChangedpromptЧто делать, когда изменение настройки требует перезапуска расширения

Расширение регистрируется как форматировщик для Mojo, поэтому включается это стандартными настройками VS Code:

.vscode/settings.json
{
"[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. Если всё готово — переходите к первой программе.

Примеры проверены на Mojo 1.0.0

Тексты курса — CC BY-NC-SA 4.0, код примеров — Apache 2.0