Skip to content

Yoyo Code
MatyΓ‘Ε‘ Racek's blog


Early feedback on Zed editor

I finally got a chance to try Zed editor, which I've been following closely for quite a while, but couldn't try out because I mainly use Windows (that's coming to an end, though)).

Here's my initial feedback. From my experience, getting feedback from new users early in their journey can be super valuable, so I made a bunch of notes in the first few days. I want Zed to succeed, so if any Zed developers read this, I hope you find it useful.

This is pretty rough as I mostly just dumped my thoughts along the way as I was trying to use the editor. Here's the list in rough order of time:

First impressions πŸ”—

  • Intellij base keymap doesn't match my keymap in IntelliJ

    • there's lots of conflicts
      • e.g. shift enter in multibuffer
      • alt enter in multibuffer to open the file
    • ctrl + b not working (go to definition, declaration and usage)
    • ctrl + q closes the whole editor (quick doc in IntelliJ)
      • not such a catastrophic loss as when you accidentally close IntelliJ, though, because it loads much faster
    • alt + 1 as open/close left dock not working like in IntelliJ?
      • but ctrl b works.. weird
    • ctrl + alt + left doesn't work because I'm in gnome (edit: I turned this off in Gnome later)
    • missing alt left/right for switching tabs
    • ...and more
  • speed is pretty addictive

    • startup speed means I'm opening this for a lot more editing tasks (on my Windows machine, I'd use Notepad++ instead of IntelliJ)
    • I don't remember visibly dropped frame, or being blocked from input
      • that's huge compared to IntelliJ - even if some task is slow, the UI stays responsive
    • typing feels faster
    • that said, I'm running it on faster machine than my Windows one, so I'll do more apples to apples comparison later
  • I really like multibuffer when searching. IntelliJ search UI is cool, but editing all the occurrences is not straightforward. Multibuffer is a really good UX for that IMO.

  • missing "override ide shortcuts" setting in terminal (IntelliJ feature that allow you to use stuff like ctrl-left/right or ctrl+c/v stuff in terminal window)

  • edit prediction (with zeta) is superfast, which is really cool

    • sometimes a bit distracting
    • here it tried to add tab at the beginning of the line, which moves the whole line during editing, which can be distracting
    • I want to try subtle mode.
      • Either way, I think it's extremely important to avoid the "copilot delay" for that case. I want AI prediction to be immediate when I actually ask for it. And copilot latency is killing me when you make it opt-in.
      • ok, I tried, and it's very fast, that's great (showing the completion when I want is superfast)
  • it'll probably take me some time to adjust all my habits

  • looking up action by its shortcut doesn't find anything, that'd be nice, when I want to know the name of an action I just triggered by accident

  • using native dialog for saving a file feels a bit weird (IntelliJ has its own UI for it)

  • missing scratch files and scratch buffers (IntelliJ feature)

    • not sure if we have something similar here?
    • edit: ctrl+n looks like what I want.
  • ctrl + wheel to zoom? but ctrl and minus/plus works.. seems fine to me

  • collab stuff

    • very snappy - we tried IntelliJ, and it was more laggy and our edits would sometimes conflict in weird ways
      • low latency is extremely good for this
      • that said, I don't work with many people now, and we didn't do much editing together yet
    • close to figma, that's great, I wanted something similar since forever
      • a bit confusing when people attach/detach from following...less clear than figma (figma has more colorized framing)
      • coworker can't follow me when I search?
      • coworker also can't see if I trigger edit prediction dialog..
      • it feels a bit unclear where am I actually (like, where's the file where I'm at now).
        • this is different from figma, because there's only one server which is the source of truth, while Zed can have multiple people with different versions of the same project opened at the same time
      • similarly, it's a question - can people follow me to a different project? different window? unclear to me atm. Edit: found it, there's a button to share a project in a call.
      • it'd help a lot to give people a simple link to open a web UI, that'd be amazing for people who otherwise use different editors and I just want to show them something.
  • edit prediction is super cool

    • it jumps through this doc and fixes typos
  • missing "format selection" - I use this a lot in IntelliJ

    • edit: I found it, but it formats the whole file, that's not great
  • aside on low power

    • I would like to give my tools some budget (in watts)
    • I noticed zed doing some work on idle, it shouldn't IMO (pls don't replicate intellij annoyances)
      • this is one of the most important things for travel
  • web UI would be a killer feature

    • I want people to send them an invitation link and let them follow me there
    • this would be a super cool for onboarding new people
  • some interop with other editors would help a ton

    • my previous company used 5 different editors
    • if people want to call around code, I think Zed is the best choice and should be the default choice
      • especially compared to screen sharing
      • at that point, just inviting to web UI is perfect
    • people will never switch all at once, or ever
    • interop could be something to bridge that gap
      • I think interop could also mean a collab plugin for IntelliJ
        • attracting user base of other editors from inside, like ReSharper did with VS
  • it's so easy to join call, that I'm not sure if I didn't just expose my project right now?

    • I guess I didn't?
    • joining a call in channels should probably have a bit more friction I guess.
  • shift shift doesn't search through files

    • IntelliJ does that (they added it only recently, though)
    • ctrl+shift+n is specialized for files (matches IntelliJ) so that's fine I guess
  • found out you can do easy scratch buffers with ctrl n (and zed even remembers them if you kill it)

    • it would be nice to be able to close them and then go back to them
    • intellij has a list of scratches saved somewhere (in tmp I think)
  • I miss git log and diff

    • those are very good in intellij, I do all Git stuff through IntelliJ, so I miss this a lot.
    • IntelliJ has some nice QOL features, like
      • undo commit
      • actually understandable rebase options
        • visual git log helps a lot in understanding the current state during rebasing, too
      • I also like how easy is to do selective commit on individual hunks.

Resource usage πŸ”—

  • 700 mb RAM for 3 opened projects

    • kindof a lot but like 10x smaller than intellij :D
    • also a ton of it is node processes :/
    • later edit: Currently 1.6GB whenever I open Zed, that's a bit too much
      • it's slightly bigger project,but when I open smaller project, the RAM usage doesn't come down.
      • It consumes around 7GB of RAM when I have it opened in WebStorm and PHPStorm :/
  • disk write total 1GB - that seems kindof a lot? (from typing this blog post)

  • btw why is there a network activity when I'm typing? that's kinda weird

    • also bad on low power
    • please don't send stuff when on battery
    • even if I have metrics disabled, it still sends during typing.. like what?
      • if I turn off edit prediction, it looks better
      • never mind, I misunderstood that edit prediction does use remote model
        • it's so fast I thought it's local
    • btw. I think telemetry in EU is supposed to be disabled by default, careful
  • lot of disk write operations during writing (even when not saving), that's weird

  • btw why is node running even on a project that doesn't use JS like this one??

    • edit: json language server..
      • 40MB RAM to view a JSON file? Can't wait till all the JS tool become rewritten to some native language
    • at least Zed kills it when I close the JSON file

Misc UX πŸ”—

  • tabs should act on press (both Chrome and IntelliJ do that, feels faster)
  • how to switch between tabs left and right? alt left/right in intellij
    • edit: found it and remapped it
  • open application menu doesn't have a shortcut
  • I don't know how to switch to editor with a keyboard from various places

Some time later: πŸ”—

Keymap: πŸ”—

Adjusting the keymap to match my IntelliJ setup was kind of a pain.

I was a bit torn on whether I should port my keymap from IntelliJ or just embrace the defaults to experience the editor "as intended" by its devs, but after a while I decided to port my IntelliJ setup, because it's just so ingrained in my muscle memory that I wasn't able to work properly without it.

It was a bit confusing at times - sometimes you add a shortcut, which doesn't work, so I assume it's overridden by something else, but I can't find that "something else" anywhere in the default keymap. It looks like there's some keymap below that. Or maybe I misunderstood the keymap system?

In the end I just copied the whole default keymap to my keymap and edited that. It's nice to have all shortcuts visible such that I can search for key bindings that I want to erase or override. Hmm.. now I'm thinking that maybe if I erase something from this file, then it's just replaced by the same thing taken from the base keymap? Which means that I should instead set base keymap as null? BUt doing that turns off shift-shift shortcut, and I can't find where it's defined. I don't know, this was all a bit confusing.

Refactoring shortcuts πŸ”—

One thing I miss a ton are shortcuts for refactorings - especially extract/inline variable/function. I use these a ton during editing, and having to open a menu and manually finding out the right one completely annihilates the saved effort I otherwise get from it. As I understand it, this is a bit challenging because these come from LSP.

Focusing editor πŸ”—

Switching between project view, terminal and editor seems to work weirdly in a way that I don't understand. IntelliJ has this useful feature where esc anywhere always goes back to the editor. Zed doesn't have that, but Zed doesn't even have some FocusEditor action that I could bind (at least I haven't found one), so I often get into a situation where I'm focused on left panel or bottom panel, but I don't know how to focus editor (with a keyboard, to be clear).

Edit on save πŸ”—

All those edits on save are super annoying, I hate when editors do this by default. Imagine you open a foreign project you don't control, try to commit a single line edit, and the editor just reformats the whole file by some arbitrary standard (like JS standard, which nobody agrees on).

One of my first real world experiences with Zed was trying to revert all the edits I commited by accident, because they were outside the viewport. All that accompanied by constantly bumping into shortcuts being different from what I'm used to for this kind of stuff. That was pretty frustrating.

I can't imagine anybody would want this as a default for all projects. Formatting is never consistent in languages like JavaScript or C++. The probability that the editor does something the user didn't want is pretty high.

For trimming trailing new lines, I couldn't even find a way to disable it, so I had to save the file in IntelliJ instead and switch back to Zed after that.

Closing thoughts πŸ”—

I'm slowly getting used to it, I love the speed, but it's really tough. I'm an IntelliJ power user, and it's hard to adjust all the habits.

Overall, the editor feels good, even though it's not there, yet. Some features are missing, which is understandable. A tool like this has massive surface area, and it takes time to build that all.

A bigger problem is let's say some onboarding or UX in general. There's a bunch of little hiccups - sometimes a feature is not clear, shortcut is missing, or it works only sometimes and rules for how it works are not obvious. Sometimes it's just a bug.

The onboarding specifically was pretty rough for me, it felt like non-stop bumping into something unexpected. Trying to convert the editor into something I could use was a ton of effort, and I feel like Zed could make it somehow easier.

For the start, IntelliJ base keymap should really match IntelliJ. I'm not sure why it doesn't, I had to remap so many bindings manually. I mostly use default IntelliJ keymap, so I don't think this is an issue with my keybinds. It would be even better if it could just import IntelliJ settings (IntelliJ can export them).

For other things, maybe some kind of wizard with questions for common configurations that don't have obvious defaults or that are somewhat opinionated:

  • Do you want to run actions on save?
  • Are you okay with completions showing by default or want less noise?
  • Do you want ligatures?
    • (btw I couldn't find how to turn them off, seems like the setting for it doesn't work)

Otherwise, you just bump into these unexpectedly and then have to hunt around the internet on how to fix it.

All in all, I like the editor, and I'll keep experimenting with it. It feels good and I want to give it a fair chance.

I want Zed to succeed πŸ”—

I have high hopes for Zed. I really wish for them to succeed, because I want to migrate to something more snappy.

I want smart editor, that's why I pay for JetBrains products. I love IntelliJ's powerful capabilities, but resource usage has always been a big issue. It seems like no matter how powerful computer I get, IntelliJ still doesn't have enough. All my RAM upgrades from 4GB to 32GB were motivated by IntelliJ.

Zed is the first editor where I feel like my needs are largely aligned with the project goals - smart editor where performance is an explicit, primary design goal. Editor like this is a massive project, and as an industry, we might not have too many shots at building a good one, so I hope this one makes it.

I also share the vision on collaboration. We've been stuck in the slow git and PR based workflow for very long time and I just want something better and more integrated. Everytime I use Figma, I think to myself why can't we have this seamless experience, too? Watching Zed developers echoing the same sentiment in various interviews fills me with hope that we might finally get something better soon.