Switching to Zed
Thorsten Ball, a great developer, wrote a blog about why he switched form Vim to Zed. Well he is biased because he worked at Zed, but he made some good points. The question that I want to answer in this blog post is: What do I need in a editor.
My goal is to not become a good but become a great developer. To write very good code, very fast. My tool, my hammer, for this task is the editor. Since starting my journey in computer science I used Vim and NeoVim. First because it was cool. But also because I started in Cyber Security and there you have a lot of different machines to work with and they all have one tool in common to look at and edit files: VIM.
Since then I have tried to use other editor. I also had to use other editors at work (damn you Java, JetBrains good IDE though). Not one of them came close the level of control and the speed I was able to create with Vim.
Recently I am wondering whether I need that many features/plugins in my editor:
- Treesitter
- LSP
- Telescope (a fuzzy finder)
- Blink (Autocompletion)
- Mason (LSP installation and management)
- Snippets
- Harpoon (quick file switching)
- Colorscheme
- Oil (directory editing)
- Undotree
- Surround
- Formatting
I envy the people like Mitchell Hashimoto that just use a fuzzy finder and Vim and are more productive than me no problem. Mitchell is going hard on AI though and this is something I am trying to do (in the right way) as well. AI and LLM are changing what an editor has to do for me in some sense. But it is just a better auto complete that can write complete features if you are capable of structuring your code right.
All things said there are features I miss in my NeoVim workflow:
- Good Git integration (Yes,
tpopemade fugitive not what I am looking for) - Debugging (skill issue yes but still)
- Graphical representation of certain files and formats
- Per project config out of the box
- Multicursors
And there is always the downside of endless configuration that will lure me into not being productive but instead write my own NeoVim plugin to have a colorscheme that I never needed and that nobody will every use 🥲 (but if you like it, leave a star please :D).
Thats where Zed steps in
And there comes Zed, now available for all platforms and I wonder: Would I be able to use a GUI editor? I have heard many arguments that editing is a task that is best done in a GUI (Graphical User Interface). I understand the point: different font sizes, rendering of Markdown and other formats, etc… . I always just told myself that editing, the raw editing, writing code, writing Markdown is best done in the terminal where text, only text, raw text is the first class citizen. And now I don’t know any more.
What I need in an editor:
- buffer grep
- project grep
- file find
- vim motions
- file tree editing
- lsp
- completion
- the editor must be fast
Thats it, I can work. Lsp and completions is an optional but is very welcome, pure vim is a hustle to actually work with.
Zed ticks these boxes and has some advantages over NeoVim:
Platform support: Zed as of recently supports all major platforms. With NeoVim you basically only have WSL on windows and last time I checked (at least one year ago) it wasn’t that you could totally live in WSL it is just like a better Linux VM in Windows but some Windows specifics are still Windows only and the performance is just better on the Linux file system.
Config: Zed with minor tweaks (about 300 lines of json) has a state that I want to work with. And boy project settings are a thing that I never knew I would like that much. Especially with the state of frontend tooling in the JS/TS system it is nice to have a per project config file that I can check-in to my VCS. I hate to say it, and yes this is a skill issue, but LSP and formatting is way easier to configure in Zed than in NeoVim. VsCode also has an edge there.
Graphics: They are a first class citizen. By accident I opened an PNG in Zed
and fell out of my chair because I did not see <89>PNG^M…
Collaboration: Zed has a great built-in collaboration feature that is stable and was the first selling point of Zed back when AI wasn’t a thing.
AI-Integration: Zed has out-off-the-box AI integration. Do I miss this in NeoVim? No! But it is cool. Yes!
I am switching to Zed! Will I stay with Zed let’s see. But it is the first editor since Vim that makes me feel welcome.