В статье появились обновления. Отмечены UPD, чтобы в случае, если вы уже читали эту статью, вам было удобно сделать Ctrl+F и пройтись по обновлениям.

Zed: Великий и ужасный

Великий — потому что сегодня это, пожалуй, лучший редактор кода для решения практически любых задач, от веб-разработки до системного программирования (доказательство будет представлено ниже, в разделе Плюсы). Слоган компании в полной мере описывает, что из себя Zed представляет:

Zed — Your last next editor

Ужасный — потому что к нему придётся привыкать. Как когда-то вы привыкали к Markdown, Git или терминалу Linux.

Zed — это инструмент для серьёзных вещей, вряд ли подойдёт как первая среда программирования.

Для меня Zed оказался нужен по следующим причинам:

  • Не устраивало наличие 5+ редакторов под разные языки программирования

  • Требовалось иметь интеграцию с ИИ, чтобы тот мог вносить точечные изменения в код с автозапуском тестов и генерировать коммиты

  • Хотелось найти что-то полегковеснее условных PyCharm, IntelliJ IDEA и им подобных

  • Искал редактор, который без проблем сможет работать с WSL (в принципе, подходит большинство, но возвращаемся к вопросу о числе редакторов для разных проектов, так что нужно было “1 раз и чтобы навсегда”)

Я прошел через стадию отрицания при настройке (нет привычных кнопок Run и Debug повсюду, максимально непривычный интерфейс), но когда всё заработало, остался лишь вопрос, почему я не слышал о Zed раньше.

Стоит ли браться за освоение нового редактора?

Только взгляните на то, сколько звёзд на GitHub набрали проекты:

В скобках указаны даты создания репозиториев. Важно отметить, что дата создания репозитория != дата появления редактора (разница в несколько лет уж точно), так что Zed - это безусловно чертовски быстро набравший популярность проект.

Статистика бралась при помощи ссылки https://api.github.com/repos/{repo_owner}/{repo_name}

Плюсы

UPD: добавил по просьбе из комментариев реальные доказательства в пользу Zed

Скорость, которую чувствуешь физически (и почему VS Code тяжелый)

Большинство популярных редакторов (VS Code, Cursor, Atom) построены на базе Electron. Electron — это буквально упакованный браузер Chromium и Node.js. Открывая VS Code, вы запускаете тяжелый браузер, который строит DOM-дерево интерфейса, применяет CSS и постоянно гоняет сборщик мусора JavaScript. Из-за этого потребление памяти стартует от 600 МБ и может разрастись аж до 1.5 ГБ, а про задержку ввода - она составляет ощутимые 30–60 мс, в то время как в Zed она не превышает 8 мс!

Zed устроен иначе:

  • Нативный Rust + GPU (фреймворк GPUI): Zed не рисует веб-страницы. Каждый символ и курсор отрисовываются напрямую видеокартой на частоте монитора. Задержка отклика — менее 8 мс, как уже было сказано ранее.

  • Изоляция LSP от интерфейса: Базовый Zed весит всего ~140 МБ. Если языковой сервер (например, тяжелый анализ Python или C++) начнет тормозить или зависнет на сборке мусора — сам редактор не затормозит ни на миллисекунду, медленнее станет только показ ошибки, но печать текста и скролл останутся на той же скорости.

LSP - Language Server Protocol. Вместо тяжелых встроенных монолитных компиляторов и анализаторов Zed использует LSP (Language Server Protocol). Анализ кода, поиск ошибок и форматирование происходят в отдельных процессах, не нагружая сам интерфейс редактора, а для запуска и сборки используются легковесные Tasks (о чём будет сказано ниже в разделе “Автоматизация Zed: task-и”). Это позволяет сильно уменьшить нагрузку на систему и сделать редактор более отзывчивым.

  • Безопасность расширений (WASM-песочница): В отличие от VS Code, где расширения имеют полный доступ к системе и могут значительно влиять на производительность редактора, в Zed все плагины изолированы внутри безопасного рантайма WebAssembly (Wasmtime). Они физически не способны вызвать микрофризы интерфейса или украсть данные.

Всё работает из коробки:

В отличие от Neovim, где сборка идеального конфига отнимает дни и даже недели, в Zed поддержка Rust, Go, C/C++, TypeScript и др. встроена нативно. Вы просто открываете папку — и у вас уже работают LSP, автодополнение и отладчики.

Фокус на коде:

Вы не найдете здесь громоздких панелей с сотней иконок. Интерфейс Zed минималистичен, а все настройки прозрачны и хранятся в простом settings.json.

Отсутствие системной папки:

Лично для меня это было очень важно, т.к это позволяет работать с какими-то папками как с проектом, а потом в любой момент изменить выбор корневой папки проекта, не беспокоясь о .idea и ей подобных. Но тем не менее, если ваши настройки специфичны для какого-то конкретного проекта, то их можно сохранить отдельно в папке .zed. Сам плюс в том, что по умолчанию папки нет.

Мне лично всего лишь для одного проекта понадобилось использовать системную папку, причём интересно, что я создал сразу две! Та, что была на более глубоком уровне, имела настройки, которые должны были задействоваться только для родительской папки. Zed не покорчился, а предсказуемо обработал эти настройки.

Современность.

Интеграция с нейросетями (локальные, API ключи или ваш claude, cursor или что-либо ещё) встроены на уровне архитектуры. Есть возможность генерировать коммиты, писать инструкции для агентов в AGENT.md / AGENTS.md / CLAUDE.md / .rules и др. (весь список есть в документации на этой странице), ссылаться на конкретные строки кода или сообщений из терминала, автодополнения и многое-многое другое.

Автодополнения - это не то, к чему вы привыкли. Речь идёт о том, что специальная нейросеть от Zed анализирует ваш код и предлагает автодополнения, учитывая ваши последние действия. Изменили название переменной? Zed AI предложит поправить её название в другом месте. Написали комментарий? Zed AI предложит похожий для следующей строки. Лично для меня это оказалось одним из главных вау-эффектов! Но это всё может закончиться: на 1 GitHub-аккаунт даётся 2000 комплитов (т.е. учитываются только те автодополнения, которыми вы воспользовались) в месяц, т.е. ~66 в день, если вы без выходных и без праздников сидите и кодите. Этого с вероятностью 99% будет достаточно, но в крайнем случае вместо покупки какой-то подписки на Zed AI всегда можно установить свою модель. Как это сделать в данной статье озвучено не будет. Приятная новость - это единственное в Zed, что является платным. И то с оговоркой, что 1) упереться в лимит практически невозможно 2) сброс каждый месяц 3) можно обойти, установив свою модель.

Минусы

  1. Разработка на Java. Увы, но тут не поработать нормально с Gradle / Maven, а про Spring я вообще молчу

  2. Очень непривычно. Да, для первого опыта в программировании точно не подойдёт, ибо нет большинства кнопок, понятных панелек и пр.

  3. Слишком много подводных камней. Может быть этой статьи и достаточно, чтобы начать активно работать в редакторе, но на каждом шаге может возникнуть нюанс, с которым вам придётся разбираться самому и лезть в документацию

В этой статье я расскажу, как настроить Zed для комфортной работы, пробросить его в WSL без ошибок сети и настроить сборку и отладку (на примере ассемблера NASM).

Приятного просмотра чтения!

Getting started

Для этого понадобится перейти на Zed — Download и скачать подходящий для вашей ОС файл.

Далее прокликайте всё, что будет предложено в установщике, а также войдите в zed через ваш GitHub-аккаунт.

После установки редактор будет выглядеть неуклюже: дерево файлов справа, кнопки будто не на своих местах. Чтобы установить привычный вид редактора, достаточно кликнуть на свой профиль в правом верхнем углу, навести на Panel Layout и выбрать Classic вместо Agentic. Вуаля!

После открытия, откройте настройки и пробегитесь глазами, возможно, какие-то тумблеры вам приглянутся. Из важных по своему мнению считаю только авто-сохранение, которое “из коробки” не работает - постоянно нажимать Ctrl + S не хочется. Чтобы сделать автосохранение, нужно:

  1. Перейти в settings -> editor

  2. Найти тумблер Auto Save Mode

  3. Выбрать подходящий для вас. Рекомендую On Focus Change

Далее в статье:

  • Удобство пользования

  • WSL

  • NASM и прочие Assembler-ы

  • Тонкости в Zed

  • Автоматизация Zed task-и

Последний пункт нужен в ситуациях, когда запуск программы подразумевает работу с make-файлом или запуск какого-то набора команд в терминале (как для ассемблера целый nasm -g main.asm -felf64 -o main.o && ld -o main main.o). C task-ами вы сможете настроить всё так, что понадобится только нажимать Alt + T для запуска.

Удобство пользования

Коммиты

Zed подключает ваш ИИ, который вы указали в настройках, к панели гита, что позволяет теперь не заниматься придумыванием коммитов! Достаточно кликнуть на кнопку с карандашом (при наведении появится надпись Generate Commit Message), а ИИ придумает коммит за вас!

Чтобы настроить то, как должен выглядеть коммит:

  1. Нажмите Ctrl + Shift + P

  2. Введите zed: open settings file или zed: open project settings file (в зависимости от того, хотите вы сделать правила для текущего проекта или каждого) и нажмите Enter / кликните на выпадающий вариант

  3. В открывшемся списке нужно внутрь json вставить следующее:

    {
    	...,
    	"some-other-fields": "something",
    	"agent": {
        "commit_message_instructions": "Тут будут ваши инструкции. Увы, но обязательно в одну строку и без прикрепления файлов :("
    	}
    }
    

Либо вы можете создать файл AGENT.md / AGENTS.md / CLAUDE.md в корне проекта, а Zed сам поймёт, что этот файл надо скармливать ИИ. Но эти правила будут действовать уже не только для коммитов, но и для всех действий ИИ (но вы всегда можете уточнить всё внутри этого файла, мол, инструкции относятся ТОЛЬКО для коммитов)

Горячие клавиши

Те, что вы ещё не забыли

Все мы привыкли к тем или иным средам разработки. Zed позволяет переехать бесшовно в вопросе горячих клавиш:

  1. Нажмите Ctrl + Shift + P

  2. Введите zed: toggle base keymap selector и нажмите на выпадающий ниже вариант

  3. Далее выберите из списка тот редактор, к горячим клавишам которого вы привыкли Готово! Теперь все горячие клавиши выбранного вами редактора работают и в Zed!

Те, что вы ещё не знали

Не знаю, насколько эти сочетания чисто Zed-овские, но в Zed они работают. Крайне рекомендую:

  • Ctrl + ~/J - открыть/закрыть терминал

  • Ctrl + Alt + R - открыть проводник в корне проекта (работает только при фокусе на окне древа файлов, так что предварительно нужно выполнить следующее сочетание)

  • Ctrl + Shift + E - открыть древо файлов (E - Explorer)

  • Ctrl + Shift + G - открыть гит-окно (G - Git)

  • Ctrl + / - закомментировать строку (используется по-моему практически во всех редакторах)

  • Ctrl + PageUp / PageDown (они же Ctrl + Fn + Up / Down на ноутбуках) - переход в файл правее/левее

  • Ctrl + B - открыть/закрыть панель (та, что может быть и гит-окном, и древом файлов, и др.)

  • Ctrl + Alt + B - открыть/закрыть панель с ИИ

  • Ctrl + Alt + J - открыть/закрыть панель с чатами ИИ

  • Ctrl + Shift + . - добавить выделенный блок в чат с ИИ

  • Up - клавиша со стрелкой вверх

  • Down - клавиша со стрелкой вниз

Если добавить Shift, то комбинация превращается из “перейти” в “переместить”

Также при работе с Markdown для переключения в режим чтения используйте Ctrl + Shift + V.

WSL

WSL (Windows Subsystem for Linux) - скорее всего лучший вариант для работы с Linux, если ваша основная ОС - Windows. Есть подробная документация Microsoft Learn и проект microsoft/WSL стал теперь open-source-ным.

Установить WSL просто: воспользуйтесь гайдом Установка WSL | Microsoft Learn, где от вас потребуется выполнить 1-2 команды в терминале.

VPN in WSL

Важно! Чтобы WSL выходил в сеть через ваш VPN, выполните следующее:

  1. Нажмите клавишу win

  2. Перейдите в WSL Settings

    Заметьте, есть WSL - откроется терминал, а есть WSL Settings - откроется окно с настройками

  3. Перейдите в Networking и переключите тумблер Auto Proxy enabled Готово!

Подключение WSL к Zed

UPD: уточнение

Подключение WSL к Zed вовсе не обязательно, если речь идёт только о том, чтобы запускать какие-то процессы в WSL. Всегда можно создать task-и, в которых вместо обычной линуксовой команды lala --arg 'something' "something2" можно использовать wsl bash -c \"lala --arg 'something' 'something2'\".

Подключить WSL к Zed - это просто

  1. Нажмите Ctrl + Shift + P и введите wsl. Далее вам выпадет два варианта:

  2. projects: open wsl — открыть любую папку вашего устройства, которая располагается внутри папки \\wsl.localhost\{your-distribution}, либо скачать другой дистрибутив, либо соединиться со SSH-сервером.

  3. projects: open folder in wsl — открыть абсолютно любую папку. Папка вне \\wsl.localhost\{your-distribution} будет «вмонтирована» при помощи пути /mnt/c.

Но не всё так просто…

Обязательно попробуйте подключиться способом выше. К сожалению, скорее всего вы увидите ошибку Failed to connect: operation timed out. И правда в том, что Zed в момент подключения к WSL должен попытаться разобраться с дистрибутивом и найти безголовый сервер (zed-remote-server) либо скачать его. Разумеется, в первый раз ему нужно его скачать, и сделает он это через GitHub, взяв файл со страницы релизов. Хоть GitHub в РФ работает без каких-либо санкций, но скачать файл zed-remote-server-linux-x86_64.gz без vpn не получится (по крайней мере у меня не вышло). С vpn этот файл будет скачиваться минут 5-10, Zed просто упадёт с ошибкой таймаута через полминуты!

Так что скачать тот файл придётся вам!

Ваши гиги за шаги

Узнайте точную версию Zed

  1. В Zed нажмите Ctrl + Shift + P

  2. Введите zed: about

  3. Нажмите на Copy. В вашем буфере окажется что-то такое:

    Zed 1.17.2
    Commit: c8e44cfa7bda9b2e22c8d6934d78969352e7f61a
    Version: 1.17.2+stable.349.c8e44cfa7bda9b2e22c8d6934d78969352e7f61a
    
  4. Скопируйте себе куда-то именно последнюю строку (в моём случае это 1.17.2+stable.349.{name-of-last-commit})

Скачайте сервер

  1. Откройте в браузере страницу релизов: Releases · zed-industries/zed

  2. Найдите свою версию (например, v1.17.2)

  3. В блоке Assets скачайте архив zed-remote-server-linux-x86_64.gz

Перемещение архива в кэш Windows и запуск сервера внутри WSL

Zed сначала проверяет наличие архива на диске C:\, и только если не найдёт его, пойдёт в GitHub скачивать. Тут-то мы его и словим!

Откройте терминал Ubuntu и выполните команды:

# 1. Создаем служебную директорию
mkdir -p ~/.zed_server && cd ~/.zed_server

# 2. Копируем архив из загрузок Windows
cp {your_path}/zed-remote-server-linux-x86_64.gz ~/.zed_server/

# 3. Распаковываем
gzip -d -f zed-remote-server-linux-x86_64.gz

# Ниже везде замените `{tmp}` на ту самую строку `1.17.2+stable.349.{name-of-last-commit}`, которую я просил скопировать

# 4. Переименовываем под точную версию
mv zed-remote-server-linux-x86_64 zed-remote-server-stable-{tmp}

# 5. Выдаем права на исполнение бинарника, чтобы Linux разрешил запуск
chmod +x zed-remote-server-stable-{tmp}

Готово! Осталось повторить всё из раздела “Подключение WSL к Zed”!

NASM и прочие Assembler-ы

Что ж, тут нельзя обойтись без линукса. На помощь приходит WSL. Зайдя в WSL, предварительно надо скачать пару вещей:

sudo apt update && sudo apt install -y build-essential nasm

Запуск программ

В случае, если вы не готовы, введите в терминал эти строки для компиляции (на примере файла hello.asm):

nasm -g hello.asm -felf64 -o hello.o
ld -o hello hello.o

И введите ./hello для запуска скомпилированного файла.

Но вот ниже в разделе “Автоматизация Zed task-и” описана невероятно удобная автоматизация - task-и.

А чтобы не просто запускать команды в терминале и кодить в как в блокноте, а использовать подсвтеку кода, нужен специальный LSP. Практически во всех редакторах это реализуется каким-то расширением. Zed тоже не исключение.

Так, в Zed практически для всех ассемблеров справляется расширение Assembly Language Server. Чтобы его установить:

  1. Нажмите на Ctrl+Shift+P и выберите zed: extensions.

  2. Далее найдите Assembly Language Server и установите.

  3. Перезапустите Zed. Готово! Теперь подсветка кода работает.

Если вы заглянете на репозиторий расширения DevBlocky/zed-asm, то увидите, что расширение лишь перенаправляет вас в bergercookie/asm-lsp, где уже реализуется 1) подсветка кода 2) подсветка ошибок / предупреждений.

Чтобы всё заработало, нужно создать файл .asm-lsp.toml:

[default_config]
assembler = "nasm"
instruction_set = "x86/x86-64"

[default_config.opts]
compiler = "nasm"
compile_flags_txt = ["-f elf64"]
default_diagnostics = false

Файл должен находиться в корне проекта, иначе его Zed не найдёт

Автоматизация Zed: task-и

Zed создавался не как простой редактор, а как удобный, поэтому найти привычные кнопки Run и Debug у вас будет получаться редко (для python, например, они появятся только у строки if __name__ == "__main__":). Всё для того, чтобы пространство не было забито хламом, код и только код!

Run

Обычно запуск программы / скрипта без кнопки Run предполагает ввод какой-то команды в терминал (для python это будет python3 fileName.py). Но ведь это можно автоматизировать!

Для этого:

  1. Нажмите Ctrl + Shift + P

  2. Введите zed: open tasks Далее вам будет представлен простой пример задачи. В ней исчерпывающая информация по атрибутам и структуре задания вашей задачи.

Можно использовать следующие переменные для задач:

  • $ZED_FILE — полный путь к текущему файлу

  • $ZED_FILENAME — имя файла (check_int.asm)

  • $ZED_STEM — имя файла без расширения (check_int)

  • $ZED_DIRNAME — папка текущего файла

Если вы пишете задачу для запуска текущего asm-файла на компиляторе nasm и ассемблере x86-64, то вот то, что себе сделал я - создал внутри папки, в которой буду работать с NASM, папку .zed и в нём файл tasks.json со следующим содержимым:

[
  {
    "label": "Run Current ASM",
    "command": "nasm -f elf64 -g \"$ZED_FILENAME\" -o \"$ZED_STEM.o\" && ld -o \"$ZED_STEM\" \"$ZED_STEM.o\" && ./\"$ZED_STEM\"",
    "cwd": "$ZED_DIRNAME",
    "save": "current",
    "use_new_terminal": false,
    "allow_concurrent_runs": false,
    "reveal": "always"
  },
]

Очень удобно, что такие файлы, как settings.json и tasks.json вместе с родительской папкой .zed можно перемещать в любую часть проекта. Помогает разделять настройки и задачи. Советую использовать запятые после последнего блока, чтобы при создании нового запятая уже была. Поломки конфигов - неприятная вещь

Ну и после запуска вы можете теперь просто кликать Alt + T, а Zed будет повторять ваш последний Run. Ну разве не чудо?)

Debug

Но тут раздел про автоматизацию Zed ещё не закончен! Оказывается, что есть возможность и кнопку debug заменить. Только вот теперь вместо zed: open tasks введите zed: open debug tasks.

Всё для того же ассемблера из примера выше вот пример задачи:

[
  {...},
  {
    "label": "Debug Current ASM",
    "adapter": "CodeLLDB", // Можете выбрать любой другой
    "request": "launch",
    "program": "$ZED_DIRNAME/$ZED_STEM",
    "cwd": "$ZED_DIRNAME",
    "stopOnEntry": true,
    "build": {
      "command": "sh",
      "args": [
        "-c",
        "nasm -f elf64 -g \"$ZED_FILENAME\" -o \"$ZED_STEM.o\" && ld -g \"$ZED_STEM.o\" -o \"$ZED_STEM\""
      ]
    }
  }
]

Тонкие фишки Zed

UPD: добавлен этот раздел

Поработав в Zed чуть подольше, я нашел несколько неочевидных возможностей, которые выводят удобство на совершенно другой уровень.

Чаты с ИИ

Удобство работы

Как я уже говорил, есть несколько сочетаний клавиш:

  • Ctrl + B - открыть/закрыть панель (та, что может быть и гит-окном, и древом файлов, и др.)

  • Ctrl + Alt + B - открыть/закрыть панель с ИИ

  • Ctrl + Alt + J - открыть/закрыть панель с чатами ИИ

  • Ctrl + Shift + . - добавить выделенный блок в чат с ИИ Они становятся особо полезны, поскольку экран не резиновый)

Также для работы с самими чатами можно:

  • для вставки перевода на новую строку использовать Shift + Enter, Enter для отправки

  • для прикрепления файла ввести @ и вводите имя, пока не найдёте нужное (тогда при помощи стрелочек выберете нужный файл и нажмите Enter). Если же файл уже виден в дереве файлов, то быстрее может оказаться перетащить его оттуда в окно чата

Архитектура для взрослых, или как опыт набивания шишек превращается в результат

Если заглянуть под капот агента Zed, выясняется любопытная архитектурная деталь: Zed хранит сессии и историю диалогов не в виде россыпи разрозненных файлов .md в проекте, а в локальной базе данных SQLite (в папке данных редактора, например %LOCALAPPDATA%\Zed\db\0-stable на Windows, ~/.local/share/zed/db на Linux и ~/Library/Application Support/Zed/db на macOS; а сами треды агента сжаты с помощью zstd в базе threads/threads.db).

Разработчики Zed выбрали SQLite по нескольким фундаментальным причинам:

  • Скорость старта и работы: Если у вас со временем накопится несколько сотен тредов с длинными сообщениями, чтение и парсинг сотен отдельных .md файлов с диска при каждом старте затормозит редактор. База данных SQLite с B-Tree индексами позволяет мгновенно поднимать списки тредов и подгружать только то, что нужно прямо сейчас.

  • Соблюдение ACID: Когда ИИ генерирует ответ потоком или выполняет правки файлов через встроенные инструменты, внезапное падение питания или закрытие приложения могло бы легко повредить незаписанный текстовый файл. Благодаря транзакциям в SQLite состояние либо записывается целиком, либо аккуратно откатывается без повреждения целостности хранилища.

  • Связь с состоянием проекта: Сессия агента — это не просто текст. Она тесно связана с контекстом: снапшотами состояния проекта, историей чекпоинтов отката изменений, привязанными каталогами и рабочими деревьями (Git Worktrees), позицией скролла и выданными разрешениями песочницы терминала. Держать такие метаданные и реляционные связи в плоских текстовых файлах было бы крайне неудобно и ненадежно.

Если вам всё же нужно экспортировать чат, то перевод в Markdown делается в один клик (ладно, клик + сочетанием Ctrl + C). Достаточно кликнуть правой кнопкой мыши по сообщению, нажать на иконку файла в панели агента или кликнуть на три точки и выбрать Open Thread as Markdown (или через палитру: agent: open active thread as markdown). Редактор откроет весь диалог красивым .md файлом в новой вкладке. Далее просто нажмите Ctrl + S и сохраните файл куда вам удобно.

А вишенка на торте - в том же меню из 3-х точек есть удивительное Regenerate Thread Title!

Форматирование

По умолчанию Zed использует Prettier для форматирования кода. И как мне кажется, работать с ним практически невозможно - такую строгость даже вообразить сложно. Взгляните, что произойдёт с форматированием обычной строки JavaScript:

// Было
document.querySelectorAll('.role-section').forEach(s => s.classList.remove('active'));

// Стало
document
      .querySelectorAll(".role-section")
      .forEach((s) => s.classList.remove("active"));

Чтобы таких вот инцидентов не было, я рекомендую в settings.json вставить эту строку: "formatter": "language_server", (можно в самый верх, чтобы было заметно). Так ваш formatter станет менее строгим и более универсальным (для каждого языка подтянется свой, а не один на всё-всё-всё).

Python: как убрать строгую типизацию и/или сэкономить ~300 МБ оперативки

По умолчанию Zed использует сервер basedpyright. Он работает отлично, но по умолчанию использует строгую типизацию, а сам съедает около 400 МБ памяти.

В случае, если вы всё-таки хотите оставить этот LSP, но хотите отключить строгую типизацию, вы можете добавить в settings.json следующий фрагмент:

"lsp": {
  "basedpyright": {
    "settings": {
      "basedpyright": {
        "analysis": {
          "typeCheckingMode": "off"
        }
      }
    }
  }
},

Если же вы хотите попробовать что-то полегковеснее, то есть LSP ruff (±25 МБ) без строгой типизации и pyright (±130 МБ) со строгой. Так что вот как воспользоваться ими:

Установить просто: добавьте в settings.json следующий фрагмент:

"languages": {
  "Python": {
    "language_servers": [
      "pyright", // либо "ruff"
    ]
  }
},

Готово!

Если вы изменили языковые серверы

Чтобы изменения в работе LSP вступили в силу, не забудьте перезапустить Zed. А чтобы посмотреть потребление памяти, например, LSP для python, откройте любой файл .py, найдите в нижней строке значок молнии и нажмите на него. После этого вы увидите потребление памяти в нижней строке каждым LSP + откроются дополнительные возможности, включающие просмотр логов, перезагрузку всех серверов и т.п.

На этом у меня всё, спасибо за внимание! Буду рад услышать ваше мнение о статье и/или о Zed в комментариях