Впечатления от текстового редактора Zed

6 июня 2025

Zed — это набирающий популярность open-source текстовый редактор от бывших разработчиков Atom. Написан на языке Rust и активно использует возможности GPU, что обеспечивает высокую отзывчивость интерфейса. Zed поддерживает стандарты LSP и MCP, что делает его мощным инструментом для написания кода. Это в теории. Но как обстоят дела на самом деле?

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

Вот как выглядит Zed (кликабельно, JPEG 3072x1920, 493 Кб):

Текстовый редактор Zed

Я бы описал его таким образом. Представьте, что вы взяли Sublime Text со всеми его фичами, не исключая мультикурсоров. Добавили 99% фичей IntelliJ IDEA — нормальную интеграцию с Git’ом, хорошо работающие переход к определению функции и поиск всех мест ее использования, автокомплит, подсветку того, что не компилируется, и так далее. Все названное работает быстро. Редактор при этом открытый и бесплатный. Получается Zed.

Zed позволяет выбирать сочетания клавиш по вашему вкусу. Для любителей Vim предсмотрен режим совместимости. Сочетания клавиш по умолчанию похожи на сочетания из Sublime Text. Я со своей моторикой почувствовал себя, как дома.

Наиболее важные сочетания, в варианте для MacOS:

Command+Option+вверх/вниз    мультикурсоры
Command+Option+влево/вправо  переход между вкладками
Command+P                    переход к файлу по имени
Command+Shift+P              поиск действия по названию
Command+F                    поиск по файлу
Command+Shift+F              поиск по проекту
Control+G                    переход к строке по номеру
Option+Tab                   edit prediction, см ниже по тексту
Command+/                    (рас/за)комментировать фрагмент кода

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

Автодополнение по умолчанию повешено на сочетание Control+Space. У меня данное сочетание почему-то переключает раскладку, хотя обычно я пользуюсь CapsLock. Так или иначе, его пришлось повесить на другое сочетание. Для этого нажимаем Command+Shift+P и ищем файл настроек по слову «keymap».

В появившемся JSON-файле дописываем:

  {
    "context": "Editor",
    "bindings": {
      "alt-space": "editor::ShowCompletions"
    }
  }

Теперь сочетание Option+Space предлагает нам варианты автодополнения:

Работа автодополнения в редакторе Zed

Выбрав вариант из списка, мы продолжаем видеть аргументы и их типы. После заполнения аргумента можно перейти к следующему нажатием Tab.

Помимо автодополнения есть edit prediction, который пытается предсказывать большие отрывки вводимого кода. По умолчанию эта функция всегда включена. Когда в редакторе постоянно то появляется, то исчезает около пятнадцати строк кода, это создает большую нагрузку на глаза.

Давайте исправим. Нажимаем Command+Shift+P и ищем файл настроек по слову «settings». В найденном JSON-файле дописываем:

  "show_edit_predictions": false,

После проделанных изменений предсказание ввода можно вызвать вручную, нажатием Option+Tab.

Настройки хорошо документированы. Каждый раз, когда мне что-то не нравилось и хотелось подстроить под себя, решение находилось за пару минут. Не стану перечислять вообще все, что я поменял в конфигах, поскольку 1) информация со временем устареет, 2) ваши пожелания наверняка будут отличаться, а решение вы найдете и без моей помощи.

Чтобы Zed не подсвечивал половину кода красным, ему нужно немного помочь. Так при написании кода на Python нужно выбрать правильный venv в правом нижнем углу экрана. Вообще, в нижней части редактора находится много важных элементов управления. Например, там расположены кнопки, показывающие и скрывающие файловый менеджер, терминал, интерфейс к Git’у, и так далее.

А при разработке расширений для PostgreSQL на языке C в корне проекта нужно создать файл .clangd такого содержания:

CompileFlags:
  Add:
    - "-I/Users/eax/pginstall/include/postgresql/server"

В общем, решение будет разным в зависимости от того, на чем вы пишите.

Особого внимания заслуживает поддержка ИИ-ассистентов. Zed интегрируется со многими облачными LLM провайдерами, поддерживающими MCP. По умолчанию предлагается Claude от компании Anthropic. Всем пользователям Zed бесплатно доступны 50 запросов к Клоду в месяц. За 20 USD/мес получаете 500 запросов. Еще большее количество доступно через отдел продаж, или если купить API key напрямую у Anthropic.

Клоду можно как задавать вопросы о кодовой базе (режим Ask), так и попросить написать фрагмент кода (режим Write). Запросы составляются на естественном языке. В том числе, Клод неплохо говорит по-русски. Чтобы он лучше понимал контекст, есть возможность прикрепить к запросу релевантные файлы исходного кода. В режиме Write можно почитать diff на предлагаемые изменения, после чего принять их полностью, частично, или отклонить.

Вот как это примерно выглядит (кликабельно, JPEG 3072x1920, 719 Кб):

Пример вайбкодинга в Zed

Когда впервые видишь, как ИИ набирает за тебя кусок кода, то испытываешь неповторимую смесь восторга и сомнения в реальности происходящего.

LLM могут быть исключительно полезным инструментом, если пользоваться ими умеючи. Обычно LLM неплохо пишут документацию и тесты. Им хорошо даются разного рода рефакторинги. Задачи уровня «возьми вот эту функцию и построй гистограмму распределения возвращаемых ею значений на Matplotlib» также не вызывают затруднений. Написать пользовательскую функцию для PostgreSQL на языке C является задачей средней сложности. Обычно требуется несколько запросов, и результат я бы на прод не покатил. Сделать что-либо для OpenSCAD является нерешаемой задачей.

Субъективно, главная ценность ИИ-ассистента заключается в следующем. Вот ты пишешь код, и понимаешь, что перед тобой возникла скучная задача. Например, которую ты уже много раз решал в прошлом. В этом случае вместо того, чтобы прокрастинировать над проблемой, ты просто делегируешь ее LLM. Как результат, ты не выходишь из потока и фокусируешься на интересных задачах.

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

Лично я в итоге полностью перешел на Zed. Возможно, вам на него переходить не нужно. Например, VSCode, как я слышал, предоставляет собой плюс-минус то же самое. Но если, подобно мне, последние 5+ лет вы не особо следили за развитием текстовых редакторов, то попробовать Zed не лишено смысла.

Метки: , .


Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.