- PVSM.RU - https://www.pvsm.ru -
Великий — потому что сегодня это, пожалуй, лучший редактор кода для решения практически любых задач, от веб-разработки до системного программирования. Слоган компании в полной мере описывает, что из себя Zed представляет:
Zed — Your last next editor
Ужасный — потому что к нему придётся привыкать. Как когда-то вы привыкали к Markdown, Git или терминалу Linux.
Zed — это инструмент для серьёзных вещей, вряд ли подойдёт как первая среда программирования.
Для меня Zed оказался нужен по следующим причинам:
Не устраивало наличие 5+ редакторов под разные языки программирования
Требовалось иметь интеграцию с ИИ, чтобы тот мог вносить точечные изменения в код с автозапуском тестов и генерировать коммиты
Хотелось найти что-то полегковеснее условных PyCharm, Intellij IDEA и им подобных
Искал редактор, который без проблем сможет работать с WSL (в принципе, подходит большинство, но возвращаемся к вопросу о числе редакторов для разных проектов, так что нужно было “1 раз и чтобы навсегда”)
Я прошел через стадию отрицания при настройке (нет обычных кнопок Run и Debug, повсюду! Максимально непривычный интерфейс), но когда всё заработало, остался лишь вопрос, почему я не слышал о Zed раньше.
Только взгляните на то, сколько звёзд на GitHub набрали проекты:
Язык Rust (2010) [1] набрал ~118 000
Язык Go (2014) [2] набрал ~138 000
Редактор VSCode (2015) [3] набрал ~192 000
Редактор Zed (2021) [4] набрал ~90 000
В скобках указаны даты создания репозиториев. Важно отметить, что дата создания репозитория != дата появления редактора (разница в несколько лет уж точно), так что Zed - это безусловно чертовски быстро набравший популярность проект.
Статистика бралась при помощи ссылки
https://api.github.com/repos/{repo_owner}/{repo_name}
Плюсы
Скорость, причём ощутимая. Zed написан на Rust, а весь интерфейс рендерится напрямую видеокартой (GPU) на частоте вашего монитора. Никакого Electron, никаких подвисаний при вводе текста, никаких пауз на «Indexing…», как в тяжеловесных IDE от JetBrains.
Всё работает из коробки. В отличие от Neovim, где сборка идеального конфига отнимает дни и даже недели, в Zed поддержка Rust, Go, C/C++, TypeScript и др. встроена нативно. Вы просто открываете папку — и у вас уже работают LSP, автодополнение и отладчики.
Фокус на коде. Вы не найдете здесь громоздких панелей с сотней иконок. Интерфейс Zed минималистичен, а все настройки прозрачны и хранятся в простом settings.json.
Отсутствие системной папки. Лично для меня это было очень важно, т.к это позволяет работать с какими-то папками как с проектом, а потом в любой момент изменить выбор корневой папки проекта, не беспокоясь о .idea и ей подобных.
Современность. Интеграция с нейросетями (локальные, API ключи или ваш claude, cursor или что-либо ещё) встроены на уровне архитектуры. Есть возможность генерировать коммиты, писать инструкции для агентов в AGENT.md, ссылаться на конкретные строки кода или сообщений из терминала, автодополнения и многое-многое другое.
Минусы
Разработка на Java. Увы, но тут не поработать нормально с Gradle / Maven, а про Spring я вообще молчу
Очень непривычно. Да, для первого опыта в программировании точно не подойдёт, ибо нет большинства кнопок, понятных панелек и пр.
Слишком много подводных камней. Может быть этой статьи и достаточно, чтобы начать активно работать в редакторе, но на каждом шаге может возникнуть нюанс, с которым вам придётся разбираться самому, читать документацию [5]
В этой статье я расскажу, как настроить Zed для комфортной работы, пробросить его в WSL без ошибок сети и настроить сборку и отладку (на примере ассемблера NASM).
Приятного просмотра чтения!
Для этого понадобится перейти на Zed — Download [6] и скачать подходящий для вашей ОС файл.
Далее прокликайте всё, что будет предложено в установщике, а также войдите в zed через ваш GitHub-аккаунт.
После установки редактор будет выглядеть неуклюже: дерево файлов справа, кнопки будто не на своих местах. Чтобы установить привычный вид редактора, достаточно кликнуть на свой профиль в правом верхнем углу, навести на
Panel Layoutи выбратьClassicвместоAgentic. Вуаля!
После открытия, откройте настройки и пробегитесь глазами, возможно, какие-то тумблеры вам приглянутся. Из важных по своему мнению считаю только авто-сохранение, которое “из коробки” не работает - постоянно нажимать Ctrl + S не хочется. Чтобы сделать автосохранение, нужно:
Перейти в settings -> editor
Найти тумблер Auto Save Mode
Выбрать подходящий для вас. Рекомендую On Focus Change
Далее в статье:
Удобство пользования
WSL
NASM и прочие Assembler-ы
Автоматизация для Zed
task-иПоследний пункт нужен в ситуациях, когда запуск программы подразумевает работу с make-файлом или запуск какого-то набора команд в терминале (как для ассемблера целый
nasm -g main.asm -felf64 -o main.o && ld -o main main.o). Ctask-ами вы сможете настроить всё так, что понадобится только нажиматьAlt + Tдля запуска.
Zed подключает ваш ИИ, который вы указали в настройках, к панели гита, что позволяет теперь не заниматься придумыванием коммитов! Достаточно кликнуть на кнопку с карандашом (при наведении появится надпись Generate Commit Message), а ИИ придумает коммит за вас!
Чтобы настроить то, как должен выглядеть коммит:
Нажмите Ctrl + Shift + P
Введите zed: open settings file или zed: open project settings file (в зависимости от того, хотите вы сделать правила для текущего проекта или каждого) и нажмите Enter / кликните на выпадающий вариант
В открывшемся списке нужно внутрь json вставить следующее:
{
...,
"some-other-fields": "something",
"agent": {
"commit_message_instructions": "Тут будут ваши инструкции. Увы, но обязательно в одну строку и без прикрепления файлов :("
}
}
Либо вы можете создать файл AGENT.md / AGENTS.md / CLAUDE.md в корне проекта, а Zed сам поймёт, что этот файл надо скармливать ИИ. Но эти правила будут действовать уже не только для коммитов, но и для всех действий ИИ (но вы всегда можете уточнить всё внутри этого файла, мол, инструкции относятся ТОЛЬКО для коммитов)
Все мы привыкли к тем или иным средам разработки. Zed позволяет переехать бесшовно в вопросе горячих клавиш:
Нажмите Ctrl + Shift + P
Введите zed: toggle base keymap selector и нажмите на выпадающий ниже вариант
Далее выберите из списка тот редактор, к горячим клавишам которого вы привыкли Готово! Теперь все горячие клавиши выбранного вами редактора работают и в Zed!
Не знаю, насколько эти сочетания чисто Zed-овские, но в Zed они работают. Крайне рекомендую:
Ctrl + ~/J - открыть/закрыть терминал
Ctrl + Alt + R - открыть проводник в корне проекта
Ctrl + W- выделить слово. При последующих нажатиях блок растёт: строка, блок, ещё блок и так далее вплоть до всего файла целиком
Ctrl + Shift + / - переключиться в окно агента или обратно
Ctrl + Shift + E - открыть древо файлов (E - Explorer)
Ctrl + Shift + G - открыть гит-окно (G - Git)
Ctrl + / - закомментировать строку (используется по-моему практически во всех редакторах)
Ctrl + PageUp / PageDown (они же Ctrl + Fn + Up / Down на ноутбуках) - переход в файл правее/левее
Up- клавиша со стрелкой вверх
Down- клавиша со стрелкой внизЕсли добавить
Shift, то комбинация превращается из “перейти” в “переместить”
WSL (Windows Subsystem for Linux) - скорее всего лучший вариант для работы с Linux, если ваша основная ОС - Windows. Есть подробная документация Microsoft Learn [7] и проект microsoft/WSL [8] стал теперь open-source-ным.
Установить WSL просто: воспользуйтесь гайдом Установка WSL | Microsoft Learn [9], где от вас потребуется выполнить 1-2 команды в терминале.
Важно! Чтобы WSL выходил в сеть через ваш VPN, выполните следующее:
Нажмите клавишу win
Перейдите в WSL Settings
Заметьте, есть
WSL- откроется терминал, а естьWSL Settings- откроется окно с настройками
Перейдите в Networking и переключите тумблер Auto Proxy enabled Готово!
Нажмите Ctrl + Shift + P и введите wsl. Далее вам выпадет 2 варианта:
projects: open wsl - открыть любую папку вашего устройства, которая располагается внутри папки \wsl.localhost{your-distribution}, либо скачать другой дистрибутив, либо соединиться с SSH-сервером
projects: open folder in wsl - открыть абсолютно любую папку. Папка вне \wsl.localhost{your-distribution} будет “вмонтирована” при помощи пути /mnt/c
Обязательно попробуйте подключиться способом выше. К сожалению, скорее всего вы увидите ошибку Failed to connect: operation timed out. И правда в том, что Zed в момент подключения WSL должен попытаться разобраться с WSL и найти безголовый сервер (zed-remote-server) либо скачать его. Разумеется, в 1-й раз ему нужно скачать, и сделает он это через GitHub, взяв файл со страницы релизов. Хоть GitHub вроде как в РФ работает без каких-либо санкций, но скачать файл zed-remote-server-linux-x86_64.gz без vpn не получится (по крайней мере у меня не вышло). С vpn этот файл будет скачиваться минут 5-10, Zed просто упадёт с ошибкой таймаута через полминуты!
Так что скачать тот файл придётся вам!
В Zed нажмите Ctrl + Shift + P
Введите zed: about
Нажмите на Copy. В вашем буфере окажется что-то такое:
Zed 1.17.2
Commit: c8e44cfa7bda9b2e22c8d6934d78969352e7f61a
Version: 1.17.2+stable.349.c8e44cfa7bda9b2e22c8d6934d78969352e7f61a
Скопируйте себе куда-то именно последнюю строку (в моём случае это 1.17.2+stable.349.{name-of-last-commit})
Откройте в браузере страницу релизов: Releases · zed-industries/zed [10]
Найдите свою версию (например, v1.17.2)
В блоке Assets скачайте архив zed-remote-server-linux-x86_64.gz
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”!
Что ж, тут нельзя обойтись без линукса. На помощь приходит WSL. Зайдя в WSL, предварительно надо скачать пару вещей:
sudo apt update && sudo apt install -y build-essential gdb nasm
В случае, если вы не готовы, введите в терминал эти строки для компиляции:
nasm -g hello.asm -felf64 -o hello.o
ld -o hello hello.o
И введите ./hello для запуска скомпилированного файла.
Но вот ниже (раздел “Автоматизация для Zed task-и”) описана самая удобная автоматизация - task-и.
Чтобы не просто запускать команды в терминале и кодить в блокноте, а использовать редактор кода, нужен LSP - Language Server Protocol - протокол языкового сервера. В вашем редакторе это скорее всего реализуется каким-то своим расширением.
Скачайте расширение Assembly Language Server. Если вы заглянете на репозиторий расширения DevBlocky/zed-asm [11], то увидите, что расширение лишь перенаправляет вас в bergercookie/asm-lsp [12], где уже реализуется 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 создавался не как простой редактор, а как удобный, поэтому найти привычные кнопки Run и Debug у вас будет получаться редко (для python, например, они появятся только у строки if __name__ == "__main__":). Всё для того, чтобы пространство не было забито хламом, код и только код!
Обычно запуск программы / скрипта без кнопки Run предполагает ввод какой-то команды в терминал (для python это будет python3 fileName.py). Но ведь это можно автоматизировать!
Для этого:
Нажмите Ctrl + Shift + P
Введите zed: open tasks Далее вам будет представлен простой пример задачи. В ней исчерпывающая информация по атрибутам и структуре задания вашей задачи.
Можно использовать следующие переменные для задач:
$ZED_FILE— полный путь к текущему файлу
$ZED_FILENAME— имя файла (check_int.asm)
$ZED_STEM— имя файла без расширения (check_int)
$ZED_DIRNAME— папка текущего файла
Если вы пишете задачу для запуска текущего asm-файла на компиляторе nasm и ассемблере x86-64, то вот то, что себе сделал я:
[
{...},
{
"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"
},
]
Советую использовать запятые после последнего блока, чтобы при создании нового запятая уже была. Поломки конфигов - неприятная вещь
Ну и после запуска вы можете теперь просто кликать Alt + T, а Zed будет повторять ваш последний Run. Ну разве не чудо?)
Но тут раздел про автоматизацию 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 в комментариях
Автор: SergeyPugin19
Источник [13]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/nasm/457989
Ссылки в тексте:
[1] Язык Rust (2010): https://github.com/rust-lang/rust
[2] Язык Go (2014): https://github.com/golang/go
[3] Редактор VSCode (2015): https://github.com/microsoft/vscode
[4] Редактор Zed (2021): https://github.com/zed-industries/zed
[5] документацию: https://zed.dev/docs/
[6] Zed — Download: https://zed.dev/download
[7] Microsoft Learn: https://learn.microsoft.com/ru-ru/windows/wsl/
[8] microsoft/WSL: https://github.com/microsoft/WSL
[9] Установка WSL | Microsoft Learn: https://learn.microsoft.com/ru-ru/windows/wsl/install
[10] Releases · zed-industries/zed: https://github.com/zed-industries/zed/releases
[11] DevBlocky/zed-asm: https://github.com/DevBlocky/zed-asm
[12] bergercookie/asm-lsp: https://github.com/bergercookie/asm-lsp
[13] Источник: https://habr.com/ru/articles/1082090/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1082090
Нажмите здесь для печати.