VSCode is a great IDE. It’s been my go-to for years whenever I need something more advanced than vanilla vim/helix/micro, and a big reason for that is how easy it is to customize and extend.
This post isn’t about VSCode though. As convenient as VSCode is, I feel like it doesn’t fit super well into my terminal-centric, keyboard-driven workflow. I’m sure there’s extensions out there that help remedy this but wouldn’t it just be more fun to learn a new editor anyway?
Emacs was the first alternative I tried, really just because I know some people are able to really get into it and turn it into something powerful.
I learn new tools best by finding a good starter config and making tweaks until I’m familiar enough where I could do it from scratch. I learned tiling window managers this way and am now currently using my own unique config, and it’s also how I got into Linux in the first place by starting with Ubuntu Gnome (back when Unity was still the default DE) and eventually finding my way to Arch. So to tackle Emacs I set myself up with a popular configuration framework called Doom Emacs.
It was great, but I also felt it was a little much. With all the complexity of Emacs I saw little reason to migrate from VSCode and realized I was looking for something simpler.
I had never really looked closely into the Vim ecosystem despite having used it as a basic text editor. After talking with a couple people on Mastodon I decided to check out Neovim.
If you’re interested in the differences between Vim and Neovim you’re probably better off having someone else explain them to you. But from what I understand, Neovim is just a fork of Vim that’s meant to be more maintainable and allow for more powerful plugins.
After looking into and trying a couple different starter configs for Neovim, I eventually settled on LunarVim. Now LunarVim isn’t so much a starter config. The project’s website describes it as an “IDE layer for Neovim with sane defaults”, and because LunarVim installs itself alongside your existing Neovim install and separates the user’s config from its own, I’d say that feels accurate.
There’s a couple reasons I settled on LunarVim.
- Much simpler config than other starter configs I looked at.
- Great defaults. Changes I made and plugins I added to other starter configs were already present here.
- Good documentation and examples.
- Overall, it just feels very noob-friendly.
I’m using it right now to write up this post and am loving it. It’s good practice for getting familiar with all the more advanced keybindings I was never making full use of before now. I haven’t gotten a chance to try it out for any serious coding yet, but what I see so far is making me look forward to it.
If you know of any must-have plugins that don’t already come with LunarVim, send them my way! My favorite I’ve found so far is Leap and already I don’t think I could ever use an editor without it.