Leaving Neovim for Zed
Steve Simkins transitioned from Neovim to Zed, citing performance issues with larger codebases. Zed's out-of-the-box features and speed improved his productivity, while its Vim mode offers familiar keybindings.
Read original articleSteve Simkins shares his transition from Neovim to Zed, detailing his experiences with various text editors throughout his programming journey. Initially starting with Atom and later trying VSCode, Simkins found Neovim to be a significant productivity booster due to its speed and customization options. However, as he began working with larger codebases, Neovim's performance issues and the time spent on configuration led him to reconsider his choice. After hearing about Zed, he decided to give it another try and has since found it to be a reliable and efficient tool. Zed's out-of-the-box functionality, including seamless LSP integration, auto-completion, and Git features, impressed him, contrasting with the extensive setup required in Neovim. He appreciates Zed's speed and its built-in Vim mode, which allows for familiar keybindings and motions. While acknowledging that Zed is not a complete replacement for Neovim, especially for quick terminal edits, he believes it excels for longer coding sessions. Simkins encourages developers to explore different tools, as they may discover more efficient workflows.
- Simkins transitioned from Neovim to Zed due to performance issues with larger codebases.
- Zed offers out-of-the-box features like LSP integration and Git support, reducing setup time.
- The speed of Zed has significantly improved Simkins' productivity.
- Zed's Vim mode allows for familiar keybindings, enhancing the experience for former Neovim users.
- Simkins advocates for experimenting with different developer tools to find the best fit.
Related
My (Neo)Vim workflow
An experienced Vim user shares tips on optimizing the (Neo)Vim experience through Personalized Development Environment (PDE), covering search techniques, keybindings, plugins, movement enhancements, text manipulation, quickfix list, spell check, and status line customization.
Modern IDEs are magic. Why still use Vim, Emacs? (2020)
The enduring Vim vs. Emacs debate reflects users' resistance to change and preference for familiar tools. Vim's simplicity and customization attract efficiency-focused users, while some find switching to IDEs challenging. Personal preference determines the choice between traditional editors and modern IDEs.
Terminal Workspace with Batteries Included
Zellij is a workspace designed for developers and terminal enthusiasts, offering a simple yet powerful terminal multiplexer. It emphasizes customization, automation, collaboration, UX features, and a plugin system. Explore further on GitHub.
Just Use MSYS2 You Say?
Zed A. Shaw critiques the suitability of MSYS2 for beginner programmers on Windows, highlighting challenges with setup, package management, and usability. He advocates for simple, user-friendly environments over complex solutions.
Okay, I Like WezTerm
Alex Plescan shares his transition from iTerm 2 to WezTerm, highlighting its Lua-based configuration, hot reloading feature, and extensive customization options, making it a flexible terminal emulator for macOS users.
- Many users appreciate Zed's speed and out-of-the-box features, but express concerns about its stability and missing core functionalities.
- Several commenters highlight frustrations with Zed's focus on AI and collaboration features at the expense of basic editing capabilities.
- Users share their experiences with other editors like Vim, Neovim, and Sublime Text, often comparing their strengths and weaknesses.
- There is a notable interest in the potential of Zed, with many hoping for improvements and stability in future updates.
- Concerns about privacy and automatic updates in Zed are raised, indicating a desire for more user control over the editor's features.
I've never understood this. In over 30 years in the industry, I've not once held a job where my keyboard speed had a noticeable effect on my productivity. Even when I had to type one-handed for a month, my productivity was unchanged.
The average developer averages 10 lines of finished code per day. And even with a raw 10x that amount to account for variance, changes, debugging etc, you'd be at 12 lines PER HOUR. Being generous at a full 80 chars per line, you have a maximum of 1000 keypresses per hour, or an average of one every 3 seconds. Even doubling your typing speed or keyboard response time would have no discernible effect.
90% of software development happens in the mind. The small amount of time spent actually writing it out seems kinda silly to optimize for.
But as their focus has shifted to building Collaboration & AI features, and still haven’t yet nailed just being a good/great base editor, its become less useful to me.
I still have a lot of hope for Zed.
But for the time being, I’ve switched back to my old editor & IDE … and I’ll try Zed again at a much later date.
[2] I must say here too that Nano is actually an underappreciated gem. It supports a lot more features than people generally imagine: syntax hilighting, line numbering, auto-indent, multi buffers, mouse support, keyboard macros, … it's actually a decent simple code editor!
[3] https://kate-editor.org/post/2022/2022-08-24-kate-new-featur...
I find the Helix keybindings easier to learn because you see what text will be affected by any operation before you do it. And by using Helix I've found I've been able to pick up Vim keybindings as well so can use it on a server.
I think it would help if it didn't have such a jarring default colour scheme though.
At the same time it’s been pretty frustrating to use an editor that is spending so much time building AI integrations, REPLs, and so fourth when basic things like cut and paste and common Vim motions still have so many bugs.
I’d love to see them prioritize getting the basics solid first.
I think Zed is wonderful, and would perhaps go back to it after it matures a bit. For what’s its worth the friction going from Zed -> Neo vim was quite seamless, and I’d expect going the other way would as well.
This is true, but only if you're not using one of the ready made distributions. I didn't switch to NeoVim until I discovered LazyVim and this amazing guide https://lazyvim-ambitious-devs.phillips.codes/.
That changed everything. I just use LazyVim out of the box, as if it was a Jetbrains IDE. No config hassle, no issues with updates. It just works.
Regarding Zed:
It's a small niche they're trying to fill in a very competitive market. Currently they have the advantages of being the current cool thing. But that's not enough in the long run. If I would knew some killer feature, I'd go ahead and write it here. But that's the thing, I can't think of any. For simple, mainstream usage, VS Code is there. Ulimate IDE features: JetBrains IDEs. Ultimate productivity: LazyVim (or other NeoVim setups), ootb modal editing: Helix.
Till then, Sublime Text 4 is still the best non-terminal text editor I've ever used and I continue to daily drive it. Sure its paid and non-FOSS, but its incredibly performant on Linux and Windows and its LSP extension + Sublime Merge fill the gap left by VSCode for me. Well worth the price tag IMO.
At this point, it supports most of the VIM subset that I care about, and I have added a number of new motions and modes that do clever things based on the AST. I am kicking myself for not doing this sooner and I think I need to write up a blog post about it. It's surprisingly easy.
1. e.g. https://marketplace.visualstudio.com/items?itemName=DCsunset...
https://marketplace.visualstudio.com/items?itemName=asvetliakov.vscode-neovim
You get a real, actual VIM (no half-assed bindings), and all the bells and whistles that come with VSCode.> Every now and then I would update a plugin in Neovim and everything would break, and I would have to spend time fixing it instead of getting work done.
Would be a problem anywhere there is a plugin system. Just don't go around updating kitchen sink without having the ability to rollback. Full on version controlling 3rd party plugins could be annoying (unless you use a plugin manager specifically with that support e.g. straight.el or elpaca in Emacs), but simply taking a dumb snapshot of plugin directory may also do the trick.
However, it's not as ubiquitous on *nix systems as editors such as vi/vim. And for those of us who work with various infrastructures and deployment constraints, it's much easier to focus our efforts on an editor that is also ubiquitous. And vi/vim fits that mould.
In other words, while Zed is a vi-able alternative, I doubt most vi/vim users will switch to it exclusively.
I can't take seriously someone, who says that Apple's stuff runs smoother (unless we are talking about useless animations).
1. Zed downloads binaries without user input as soon as you open a file; think LSPs and linters. This is a hot topic and has been for a while.[0]
I would rather my editor break (or even better, fail gracefully and helpfully), than obscure what amounts to being a significant action that I believe warrants user involvement.
2. I can't tell what gets sent to Zed's servers.
I don't have time to audit all the code, but as an example, this PR, [Allow Al interactions to be proxied through Zed's server so you don't need an API key][1], has +3,628 -8,918 changes and even just by the title seems to suggest that using the Assistant feature may result in requests being sent to Zed's servers.
This is a dealbreaker for me because, not only is this not documented anywhere, it seems in contradiction to the EULA.
"User Content is transmitted from Your environment only if You collaborate with other Zed users by electing to share a project in the Editor. Once You share a project, Zed may transmit User Content consisting of file paths, file contents, and metadata regarding the code returned by language servers."[2] It doesn't mention if using the Assistant feature is part of the network based solution or that it's the same as "sharing a project," but I'm not an Editor-EULA lawyer.
Arguably, this is true is any open source project, though my stance is generally to be more alert to privacy concerns with software from newly-backed pre-profitable startups. I don't want to spend my rare editor-tweaking time on nonconfigurable privacy and security control workarounds.
Edit: As if on cue, another PR to seemingly default to sending data to zed.dev: https://github.com/zed-industries/zed/pull/16454
[0]: https://github.com/zed-industries/zed/issues/12589
[1]: https://github.com/zed-industries/zed/pull/7367
[2]: https://web.archive.org/web/20240718140959/https://zed.dev/e...
The issue for me was with the Docker LSP. I have a codebase where a Dockerfile is a Jinja Template. Zed’s syntax highlighting broke at the first curly braces. Both my Doom EMacs and LazyVim seem to have no problem with it. I couldn’t work beyond that point.
I have switched to Zed, but it sadly shares more in common with vscode than it does vim. I believe the ideal text editor would bring a small amount of GUI to the general idea of one of the popular nvim distros (especially telescope).
Supermaven still has some issues on Zed, but apart from that its been rock solid and ive fully switched from Neovim.
In my career, I have used text editors including vim which I still very much enjoy and both Eclipse and IntelliJ when I used to code in Java which I also enjoyed.
VSCode seems to me to be as slow than a full IDE - too slow to be a nice editor - while having less features and an inferior UI to a full IDE. I don’t get it. Is it because so many languages don’t have a good IDE so people have come to accept the subpar editor+plugin experience?
Pretty sure Gitsigns for neovim can do all mentioned (diffthis, blame line of file adnd obivously gutter symbols).
But if you need more you have Diffview and other plugins.
I tried emacs but found the same issue with plugins. It's just hard to keep up and organize them, so far lazyvim is the easiest for me but not "easy".
I'll have to try zed if it's foss. I do wish that some "standardized" plugins would just be integrated into the base application or a new application like Neovim from vim. I don't know the history, so I'm not sure how it came about, but it does feel like there is some stagnation with some of the gnu/linux stuff.
Years ago I saw a colleague operate as an absolute beast using VS Code with vim bindings and it was impressive to watch.
But I've never watched anyone code in vim/emacs etc and felt it's a more effective editor than vs code.
There is the option of using vscode but I'm one of those aliens who absolutely dislike that program.
I think everyone has their own personal list of gripes and wants for a text editor. Here's some issues that I think many people will immediately be struck by:
- Zed does not yet support EditorConfig. https://github.com/zed-industries/zed/issues/8534
- Zed does not yet support auto-detecting indentation in the current file. https://github.com/zed-industries/zed/issues/4681
- Zed does not yet support configuring indentation in the current file. (edit: clarified wording) https://github.com/zed-industries/zed/issues/4867
- The core editing experience is still less polished than Monaco. Example: Selecting a block of spaces and striking "delete" may lead to an uneven number of characters being deleted. It seems to interact poorly with indentation.
- No settings UI (yet?).
As a Linux (and specifically NixOS) user, there's also a few other problems that I would love to have solved:
- Zed can't be configured to not auto-update, which can simply never work on immutable distros or e.g. inside of Flatpak. It just tries and fails, wasting bandwidth. https://github.com/zed-industries/zed/issues/9224
- Zed can't re-use all already-installed language servers yet, so some language servers can't be used on platforms where the auto-download feature can not work. https://github.com/zed-industries/zed/issues/4978
- Zed doesn't really integrate well with direnv. VSCode is in the same boat, but Vim is not. https://github.com/zed-industries/zed/issues/4977
Overall Zed has been very nice. It definitely feels like it's still pre 1.0, but it is a very strong pre 1.0 to me. I am a bit weary on the focus on collaboration and AI features so soon, but I do realize that people actually like these features, so hopefully it's not a sign that the core editing experience is going to be neglected.
I remember initially it was only for Mac, which... is just not good enough for me.
Anyhow, I reinstalled it and it is really good. Github, Copilot were integrated in no time... I really appreciate that and it is very clean and easy to use.
Which part exactly would exhaust you? These editors are fast to close/open even is there not already running (also you could just leave it open h, and you get the benefit of not blocking the current terminal session, so that's the convenience that beats neovim. Another one is that you can have editor's window size independent of the terminal size
These kind of editors switching is like repairing that old covertible triumph from 1950 on the garage, interesting for some, not really something I care about.
That said I actually been using Cursor more in my testing of AI code because they just have better AI (with regard to how they add things into the context, I use both with sonnet). Also the UI integration is more comprehensive.
i would say this as a mid-level dev in a team spread across geographies, however: when using a workflow that should work for all, it is more important to have a tool that works for all rather than the "best" one.
unfortunately, neither (neo)vim nor zed seem to be in a place where an entire team could easily adopt to its workflow. the latter probably needs a while to marinate and become suitable for most.
E.g. (mine) https://github.com/tom-pollak/dotfiles/tree/master/nvim
Why would you do that? I keep my plugins pinned at whatever old version I happened to use first...
Related
My (Neo)Vim workflow
An experienced Vim user shares tips on optimizing the (Neo)Vim experience through Personalized Development Environment (PDE), covering search techniques, keybindings, plugins, movement enhancements, text manipulation, quickfix list, spell check, and status line customization.
Modern IDEs are magic. Why still use Vim, Emacs? (2020)
The enduring Vim vs. Emacs debate reflects users' resistance to change and preference for familiar tools. Vim's simplicity and customization attract efficiency-focused users, while some find switching to IDEs challenging. Personal preference determines the choice between traditional editors and modern IDEs.
Terminal Workspace with Batteries Included
Zellij is a workspace designed for developers and terminal enthusiasts, offering a simple yet powerful terminal multiplexer. It emphasizes customization, automation, collaboration, UX features, and a plugin system. Explore further on GitHub.
Just Use MSYS2 You Say?
Zed A. Shaw critiques the suitability of MSYS2 for beginner programmers on Windows, highlighting challenges with setup, package management, and usability. He advocates for simple, user-friendly environments over complex solutions.
Okay, I Like WezTerm
Alex Plescan shares his transition from iTerm 2 to WezTerm, highlighting its Lua-based configuration, hot reloading feature, and extensive customization options, making it a flexible terminal emulator for macOS users.