Ten Days in the Zed Editor
Recently I'm playing with a new code editor, Zed. I used it for about ten days and here write a review to share my experiences with it. This review is based on the latest version (v0.186.9).
TL;DR
My feelings about Zed are mixed: as an editor, it's pretty good; as a (Python) code editor, it's pretty bad; as an AI code editor, it's reasonable. As of its current state (v0.186.9), it's hard for me to recommend it to colleagues due to its poor Python experience, but I think I'll keep an eye on it.
Update (@2025-05-19): After tuning LSP configurations, the Python experience is much better. See below.
Metadata
Zed is very actively maintained. Their commit activity shows that there are more than 200 commits almost every week. Their releases are also very frequent: one release every one or two business days. It's still pre-1.0, so they have the chance to make breaking changes, and the so-called "Stable Release" is almost nightly. Take a random example: this PR was submitted on May 13th, was merged on May 14th, and then a new release, v0.186.8, was published on the same day. It does sound a bit aggressive to me... Maybe after 1.0, the Stable version can be less aggressive?
They released their roadmap.
Zed as a Text Editor
It runs pretty smoothly, which is not surprising. It's one of the main selling points, so they have to do it well.
I really like their text-based configuration method.
- The auto-complete works amazingly well. Zed also checks the schema and quickly prompts.
- It also formats the configuration file automatically, so the configuration always looks clean. However, I wish it didn't remove the trailing comma.
- One missing point is that it doesn't sync settings. This has been discussed for a long time, but there's still no official solution.
It has built-in git support (announcement). Works as expected.
- I have an annoying issue: after it restarts, the git gutter doesn't work for certain files. I have to close the file and reopen it. I'm not sure if it's related to my specific setup.
- Currently, there is no conflict resolver. I really like the one in VSCode.
- I'm also using jj recently. There is no jj integration, but it's totally understandable—even VSCode doesn't have it.
It supports remote development, which is essential for work. The overall experience is pretty good.
- Read the section on settings before you proceed. I spent a lot of time figuring out why Ruff doesn't work, why I can't hide certain files from the project panel, etc., and it turns out the reason is that I should configure them in the server setting instead of the local setting.
- One issue is that I don't know how to open a file in the current window.
- Another issue is that I sometimes add multiple folders to the same workspace, but after it restarts, the extra folders are gone.
The key binding setting is very flexible. The format is similar to VSCode.
- Rant: project panel is
cmd-shift-e
, outline panelcmd-shift-b
, but why is the git panelctrl-shift-g
? - A note is that to use
cmd-b
in the terminal, you should send the escape string instead ofcmd-b
.
It has multibuffers, where multiple files are shown in the same buffer. Some usages include (a) git diff
, (b) multi-cursor over multiple files (demo), (c) changes from an AI agent, (d) all calls to the function.
It has built-in vim mode, and it's very well integrated with the editor.
- It also integrates a few popular vim plugins, e.g.,
vim-surround
,vim-textobj-entire
. I still missflash.nvim
. Zed hasvim-sneak
emulated (hidden deep in the docs), butvim-easymotion
,leap.nvim
, or my (current) favorite,flash.nvim
(tracking issue) are missing. - The search experience is quite similar to vim:
/xxx<enter>
. Now you need to usen/N
to find the next/previous occurrence. This is exactly how vim works, although I'm pretty used to using<enter>
to go to the next occurrence (which doesn't work anymore). - Off-topic: Among all editors with vim integration, VSCode has the best experience so far due to vscode-noevim. It runs a neovim instance so all neovim's plugins can run—no emulation needed! But recently I've seen a lot of this issue, which is very annoying... Though, Zed has a blog post on why it doesn't embed neovim.
- It also has a nice write-up on its plan to improve vim mode.
Some mini-features that I miss:
- Sticky scroll in the editor (here, here), notebook, and file tree (tracking issue).
- Minimap, which was released in v10.187.0-pre and will be in the stable release soon.
Zed as a (Python) Code Editor (IDE)
My main programming language for work is Python (I'm doing Machine Learning research), so here I focus on support for Python. But the result is disappointing...
The biggest issue is that the Python LSP is extremely slow (>5 seconds to see the auto-complete popup, tracking issue), making auto-complete unusable. I can't believe the speed of auto-complete for Python and Zed configuration is from the same editor...
- Changing
basedpyright.analysis.diagnosticMode
fromworkspace
toopenFilesOnly
mitigates it a little bit, but it's still too slow. - I tried to disable PyLSP, but it's still too slow.
- My hypothesis is that I have two (or more) LSP requests: one for the last edit and one for autocomplete. One of Zed or LSP is handling them sequentially—either the LSP can only give the autocomplete list after reanalysis is done, or Zed waits for the LSP's response for the edit before sending the autocomplete request. But I could be totally wrong—I haven't read a single line of Zed's code.
Update (@2025-05-19): It turns out that the reason why Python LSP is extremely slow is due to basedpyright: after turning off the auto import feature (basedpyright.analysis.autoImportCompletions=false
), the performance is much better and is now acceptable. I strongly suggest the extension to turn it off by default, as in Pylance.
Other features (inlay hints, type checking, go to definition) work pretty well.
- To make inlay hints work, use basedpyright as the Python LSP. I tried very hard to make it work with pyright, until I realized that pyright doesn't come with inlay hints. The one that works in VSCode is actually pylance, which is closed-source.
- To use basedpyright in Zed, I followed the guide here, but basically you just need to install the Zed extension, install the basedpyright binaries, and configure the path.
- There is also a discussion on the Python experience, and people are complaining about it.
- I really wish
astral-sh/ty
can finish soon. Meta also released Pyrefly a few days ago, which is also written in Rust and is IDE first. The community acts so fast that we now have an Zed extension, but I haven't tried it. - One missing feature is to attach icons for each auto-completion item (tracking issue).
Syntax highlighting works out of the box (thanks to tree-sitter), but semantic highlighting is not ready (tracking issue).
- Sometimes syntax highlighting is incorrect...
- The PR for semantic highlighting hasn't been merged, but I do see some sort of semantic highlighting (i.e.,
f"{x}"
and"{x}"
are different).
One missing feature is notebook support, which is on their roadmap but has low priority. However, this is important to me as I always have a notebook open for interactive data analysis and experiment management.
Zed as an AI Code Editor
It has Edit Prediction (I like the short demo), which is essentially the Cursor Tab feature.
- An issue that occurs for me is the conflict between tab for indentation and Edit Prediction. The document says that "Zed requires a modifier key to accept predictions when your cursor isn't at the right indentation level." However, my experience is different: I just want to add one level of indentation, while
<tab>
accepts all predictions... - To use the free 2000 Edit Predictions, you need to click to enroll in the Free plan.
- I'm super interested in this blog post—I also work for an AI company, but not a generative AI company.
The integration with model providers is ok, but it can still be improved.
- Integration includes internal model/completion providers, external completion providers (GitHub Copilot, Supermaven), local model providers (Ollama, LM Studio), and external model providers (OpenAI, Anthropic, Google, etc.) through BYOK.
- I tried the Ollama integration and found it a little disappointing. It doesn't stream text, so I have to wait until all output is generated.
- I tried local
Qwen2.5-Coder-7B
, but the result was miserable. The generated code is incomplete: it ends with... (other code remains the same)
. The output path is wrong, so Zed can't diff it and I have to manually copy over the generated code. - I also tried local
Qwen3-30B-A3B
, but it's very slow on my MBP.
- I tried local
Agentic editing and tool use are also supported.
- One issue is that the
<thinking>
token is not hidden (tracking issue). - I like that the user prompts are editable in Agent Panel. My suggestion is that we use a button to enter the edit mode instead of clicking the text, because sometimes I just want to copy it.
- Another issue is that the Agent Panel doesn't render MathJax, but I agree that's such a niche feature request...
I do like the feature of using LLMs to generate commit messages. I just don't like writing commit messages...
- One improvement would be to allow custom prompts (tracking issue).
As for data privacy, to my understanding, if we don't opt in, Zed does not retain any data ("Zed does not persistently store user content or use user content to evaluate and/or improve our AI features") for both Agent Panel and Edit Prediction, but third-party services for Agent Panel might do so (inferred from "Anthropic may not train models on Customer Content from paid Services.").
- I do appreciate that the default is opt-out.
- For comparison, both Cursor (in Privacy Mode) and Windsurf (in zero-data retention mode) have a zero-data retention policy that prevents third-party services from retaining data, if I understand it correctly. I wish Zed could also have a zero-data retention policy for the Agent Panel.
- For Edit Prediction, Zed itself doesn't retain any data (when not opted in), but Zed uses Baseten to serve the model, and it's not clear whether Baseten retains any data.
- Another improvement is to have an option to disable opt-in in project settings in case the user enables it by accident.
In terms of the quality of generated code, it's hard for me to evaluate and compare as I haven't used many AI code editors before, and during my evaluation, I was using GitHub Copilot as the service provider instead of Zed's own services... I only found GitHub Copilot mediocre. I also used Cursor for a little bit and was impressed by the Tab completion feature. Honestly, I feel like Zed's Edit Prediction is slightly slower and worse than Cursor Tab, but I say that with pretty low confidence.
Random Thoughts
As a programmer, I'm a heavy user of code editors. I've used (Neo)Vim, Emacs, Atom, VSCode, etc. When I first heard of Zed, I wasn't that interested. I kind of forgot what exactly I read, but all I remember is that it's an editor with Rope and it's written in Rust, both of which are buzzwords. I later found their blog post, How CRDTs make multiplayer text editing part of Zed's DNA, but given the prior art, the Rope science series, Zed's blog post didn't really impress me (but the animation is pretty cool!). When I first heard "Rust" and "Rope", I was thinking, isn't the Xi-editor doing the same thing?
I tried Zed on and off for a few sessions, each of which took only half an hour or so. The reason I didn't invest my time in it is that I have concerns about its future: What if the product goes unmaintained? It's hard to monetize a text editor. The market is competitive and there are many tough-to-beat free options, like the OG Vim/Emacs and modern options like VSCode. Moreover, it also competes with full IDEs like Visual Studio and JetBrains products. So before they joined the AI Code Editor army, I didn't see a good business model (B2B is just hard). Maybe they can commercialize the product with certain features (e.g., collaborative editing), but I'm not convinced. Until recently, they announced being the fastest AI code editor. I finally pulled the trigger, as this might be a viable business model (B2C). AI code editor is also a very competitive market (just to name a few: Cursor, Windsurf, OpenAI Codex, Claude Code, Augment Code, Fitten Code, Tabby, GitHub Copilot, Devin), but now Zed has its own strength: they understand the editor down to every line of code and every feature, and they have full control.
Regarding the future of AI code editors, I do have some thoughts, but they're pretty immature and I haven't investigated enough. It's possible that the problems have been studied intensively in the industry while I live in too small a bubble to see it. Perhaps I should revisit this later after using more AI code editors for longer to think more about the features, integrations (of AI/LSP/Editor), business model, research, etc.
I also read two more posts on others' experiences with Zed 12 after writing this post, so the opinions are my own.