Niza Toshpulatov

March 15, 2025

From VSCode to NeoVim, Back to Helix: Wait, What?

As someone who has been working as a web developer and web designer for more than 5 years, I’ve tried many text editors for work and personal projects. Here is a list, just off the top of my head, in somewhat chronological order, where chronological refers to when I discovered the editor:

  • Brackets
  • Dreamweaver
  • Sublime Text
  • Atom
  • JetBrains IDEs
  • Eclipse
  • VSCode
  • Vim
  • NeoVim
  • Zed
  • BBEdit
  • TextMate
  • Emacs
  • Helix
  • Amp
  • Kakoune

Out of these, the ones highlighted in bold (VSCode, Vim, NeoVim, and Helix) are the ones I’ve used the most.

Brackets & Dreamweaver

When I had just started tinkering with HTML and CSS back when I was 16 or 17, I used Brackets. What a cute little editor it was. A year or two ago, I gave it another go, and while it was OK at the basic function of editing text, it wasn’t as useful as ones that support the Language Server Protocol (LSP). Adobe Dreamweaver came around the same time. I created my first website in that thing. It was quite an impactful moment—having a full website that I built myself. Fun times!

Sublime Text, Atom, Eclipse, and JetBrains IDEs

I’ve tried these during my early university years. I wrote a lot of C and Java code in those. Sometime later, I discovered VSCode and was pretty sure that I would never switch again. But the issue was that I had a relatively slow laptop back then, and I always hated the fact that it was built on top of Chrome, which is notoriously power-hungry. We also had an OS course at the university, and they encouraged us to use Vim for coding. But even before that course, I had experimented with Vim and even wrote an entire C project in it. No LSPs, CLI debugger only, pure Vim experience. I remember my teacher asking me: “Why?” Which just made me smile as though I had done something different and unique. But he was just confused, as he viewed this experience as conditioning myself to some kind of mental torture. But I loved it. Regardless, all of this is to say that I was disappointed with VSCode’s performance and was looking for alternatives.

NeoVim

My search spanned many years, actually. I gave NeoVim a real try in 2023, I think. I always had this itch that I needed to go back to Vim. But Vim, even with plugins, never matched the experience of VSCode. It just never felt like it had the “smarts” of VSCode. At the time, I didn’t know that “smarts” referred to LSPs. So I kept VSCoding… One day, I watched ThePrimeagen’s video about setting up NeoVim from scratch and got inspired. So I took a whole weekend to fully set up NeoVim. And it worked! Everything I needed: file tree (sidebar style), the smarts, fuzzy finder, global search and replace—I found a plugin for every feature and turned this simple text editor into a full-blown IDE.

With this barrier broken down, I had finally embraced NeoVim for what it is—a fully customizable text editor that promotes a DIY way of doing things. Nowadays, though, there are plenty of pre-configured distributions of NeoVim that have all the batteries included, so you don’t have to tinker with it yourself. While I like them for the fact that they expose NeoVim to a broader audience, I believe that the true beauty of the editor is in that DIY nature of it. So if I was so happy with NeoVim, why did I end up using Helix then? Well, there were multiple reasons.

The plugin fatigue

In general, I’m the type of person who likes to try new things. And not just visually different things, but functionally as well. I like to switch up my workflows and tools and relearn how to do things I do every day. It’s almost like a drug for me—learning new things. In my case, this mental exercise reaches certain extremes where it objectively decreases my performance and productivity. It’s getting less extreme as I age, though. Besides this chronic reason, I had issues with NeoVim itself.

At times, NeoVim starts falling apart for the very reason it’s great—the endless ecosystem of plugins. These plugins are developed by other people, and they either keep maintaining their projects or abandon them. You end up on this hunt for a perfect plugin that has just the right amount of GitHub stars and was recently updated, and the devs are great and listen to user feedback. Oh yeah, and they never release botched updates, and obviously, they do it for free and are ready to accept your feedback for the next release! This is eerily similar to NPM packages… And similar to my experience with NPM, I just got tired of broken updates and deprecated plugins. I wanted something fresh, something new. So I tried Emacs. Used the thing for a month or so, was pretty happy with it, but it was slow, like really slow. So I went back to NeoVim and kept looking.

Enter Helix

Helix popped up on my radar a year or so ago. I tried it, I liked it, but it didn’t have a file tree, so I ditched it. Helix still doesn’t have a file tree, but for more than 10 months, it has been my main editor, and I have no plans on switching from it. So why?

To keep it short, Helix is way faster than NeoVim. Even without plugins, NeoVim is slower at startup. For most of my career, I’ve been working on a Mac, but at my current job, I was given a Windows laptop. And oh boy, NeoVim was not responsive on that thing. I was basically forced to use Helix. At the time, I thought that this was a problem—the fact that I couldn’t use my NeoVim setup. But the more I used Helix, the more I started to realize that I actually prefer it over NeoVim. Its backward motions and sensible defaults just started clicking. In a week or so, I was editing at the same speed as I was in NeoVim, if not faster. But one problem remained—no file tree.

Discovering a CLI file explorer

I was aware that there are CLI tools that are competent file explorers, but I had never tried one. So I started exploring. I ended up with Yazi. Similar to Helix, it’s written in Rust and is extremely fast. It uses Vim-like shortcuts for actions, which makes it a nice pair to my post-modern modal editor. So my current workflow is to do all of my coding in Helix, and if I need to move, rename, delete, or create files or folders, I just open Yazi in a separate pane in my terminal. This workflow works surprisingly well, and I actually started to appreciate the fact that I have to have a good understanding of my project file structure to quickly operate within Helix. My weakness became my strength!

Wrap-up

I will keep an eye on NeoVim. I still love the editor, and I’m curious what they will bring with new updates. Perhaps when Helix opens its doors to plugins, I will also start getting package fatigue. But I’m not really worried about that, as I would be OK if they don’t release any new features ever—the editor is near complete for me.

Honorable mentions here are Amp and Kakoune—both have inspired Helix in some ways, aside from NeoVim. Amp is a very minimal one and relies on jump tags, which is an absolute killer feature that I should use more often within Helix. Kakoune is an odd one. It’s quirky and feels esoteric. I like its shell-profile-like config system, but I couldn’t do real work in it.

Anyways, I just wanted to share my editor-hopping journey and basically promote Helix. I think more people need to give the editor a try. It’s cross-platform, it’s always fast, and requires almost no configuration to get real work done. I like to think that Helix is so good that even Jon Blow would enjoy using it. But that man will never change his setup, why would he, right?

Have a great rest of your day, and see you in the next one! Although, considering how big of a hiatus it was since my last post, the next one might be more than a year away (hopefully not).

-Niza

About Niza Toshpulatov

Hi! I'm Niza, a web developer/designer, productivity enthusiast, and a tech nerd.