Friction Log Published: September 7, 2024

Zed AI Friction Log

Taking a look at Zed AI.

Zed AI Review

Zed is a relatively new code editor and they've recently released their built-in AI capabilities called Zed AI.This is my review of friction points in Zed after using it for a few days.

A few caveats

  • I think the core Zed editing experience is top-notch. It's really well done
  • This is a friction log for the Zed AI features. At the time of writing this Zed AI has only been out for ~3 weeks. It's still early!
  • For some features like the Slash Command: Workflow the Zed team is actively soliciting feedback.

So if you are reading this after Sept 7, assume that some of these pieces have likely changed.

Strengths / Stuff I really like

  • Zed feels really fast. And that shows up in everything. Scrolling, navigation, text search, symbol search. All of Zed just feels fast and it is very refreshing.
  • Built in prompt storage is great! I currently use Raycast snippets to cover this in Cursor but I like having it built in.
  • Each context in Zed is it's own tab.
    • This allows you to cycle through them like any other tab in your IDE, assuming you are focused on the context panel
    • Contexts are saved and you can easily search through all of them. The implementation of this feels great.
  • Customizable Slash Commands - I haven't done this yet, but I love that you can create your own commands from day one. I would love to spend some time here eventually.
  • Fetch Slash command is really nice. It fetches super fast, directly into markdown, and then you can easily toggle to preview the content was grabbed correctly.

Friction Points

The friction points are categorized as

  • Dealbreaker: I would not switch to Zed unless this was smoothed over in some way
  • Major: Not essential, but definitely something that would be on my personal wishlist to change.
  • Minor: An annoyance.

Dealbreakers

Zed currently does not have a "AI Fix in Chat" button
In Cursor this just inserts the relevant error message into the sidebar chat and runs the chat. It's a simple operation but it's surprisingly powerful. The reason this missing feature is a dealbreaker for me is beacuse it makes Typescript so much easier to use. For any type error you can use "AI Fix in Chat" and it fixes 80-90% of them.

Screenshot of Cursors Implementation:

Cursor AI Fix in Chat

Inline Assist: No way to reference other files
In Zed you cannot reference other files or context from within the Inline Assist. This is just a fundamental way I work with Cursor. I think 80% of my Cursor requests are from Inline and the other 20% are Chat. Zed not having references in Inline Assist means my primary way of interacting with the AI loses a lot of power.

Major

Zed's context pane does not have a "copy code" button
When you generate code via the assistant there just isn't a great way to insert it into the editor right now. Currently there are three options:

  1. Use Slash Command: Workflow to generate Steps and then use the Transform button within the step to apply the change.
    • I believe this is the recommended approach. But so far most Transformations fail for me. The example below is an extremely simply one and it didn't work.
  2. Use CMD+< to insert the code into the editor. This is my preferred right now but it's a bit taxing. It doesn't feel completely terrible if you are comfortable flipping back and forth between the editor using keyboard shortcuts. The steps to do it are:
    1. Make sure your cursor is at the correct location in the editor
    2. Switch to the context pane and select the code you want to insert
    3. Use the insert command (and hope you didn't accidentally move the cursor in the editor)
  3. Use the good-ole mouse to select and copy the relevant code.
    • This works with no issue! But if I'm already using my mouse I'd rather there be a button the copy the code out of the code fence instead of having to manually select it.

Screenshot of simple Step Transformation failing and no copy button. The provided code was correct, but the step resolution repeatedly failed.

Screenshot of simple Step Transformation failing and no copy button

Zed does not have an action for "Create new context and insert selected into chat"
In Cursor there is a short cut for creating a new chat and inserting the selected into it. I love that workflow because I can just move on to the next thing without having to manually clear the chat. I have this set to the CMD+L shortcut so it takes me just two steps:

  1. Select relevant code
  2. CMD+L

Right now in Zed to recreate the same action I have to:

  1. Switch focus to context pane CMD+?
  2. Create new context CMD+N
  3. Switch focus back to editor CMD+?
  4. Select relevant code
  5. Insert into editor CMD+>

So what takes me 2 actions in Cursor takes 5 in Zed. Which maybe it doesn't seem like a lot, but I do this constantly throughout the day.

Minor

No visual feedback when the Fetch slash command is used
I love how Slash Command: Fetch works. I just wish it gave a visual confirmation that it succesfully fetched the content. It implicitly does because the UI changes. But as a new user I wasn't sure if that's a good or bad UI change.

Wish List

I think that if Zed had these features it would improve my experience.

Faster navigation within the Context Panel
It's really cool that the context panel is all text. I think a missing ingredient here is some way to quickly navigated between the meaningful chunks in the context panel. I would like to be able to:

  • Jump up and down slash commands
  • Jump up and down messages
  • Jump to code fences
  • In a code-fence, one command to select the code (pending there being a better way to insert or copy code blocks)

Maybe this is different if you use Vim keybinds though....


Copyright © 2024