Skip to main content
  1. Posts/

Why I switched to Neovim from Emacs

·888 words·5 mins·
Neovim Technology
Joshua Blais
Author
Joshua Blais
Table of Contents

At the beginning of this year, I aimed to simplify many of my processes so that I could focus on the things that I actually wanted to do with a computer - namely build things efficiently and quickly. This included a move from Arch to Fedora, bringing back cli to the forefront in all that I do, and yes, switching out my beloved emacs for Neovim.

About six months into the change, I am not looking back, and here is why. I will preface this with the fact that people are probably asking “Why, isn’t emacs everything you wanted? You wrote a book in it for crying out loud!”

To which I would say “It was, almost.”

There were some minor annoyances with emacs that by themselves were not enough to push me away, but combined they were enough to give me wandering eyes. Neovim has added lua support in recent years, while previously I was still using vimscript, so this was enough to make me have another go. Let’s discuss.

I have always been a “vim user”
#

I never fully integrated into the emacs world in that I was originally a convert from Vim in the late 2010’s. I used evil for the whole time I was an emacs user, and very seldom used the native emacs commands. Vim keys are nearly synonymous in all cli apps, and that is why I never switched away from it, and I have always felt the movement, finding of position, and editing were just more intuitive. Don’t hate the playa.

I even wrote macros in emacs using the vim way of doing so, so I was never a purist.

Emacs is slow
#

Admittedly, emacs is not so resource hungry in the 32gb of RAM I have been running since 2021, but the fact is that in large code bases, I saw it hanging and freezing at unacceptable frequencies. This was the first thing that had me looking elsewhere. I understand native compilation may have solved some of these issues, but I do not know, someone post in the comments below if so.

Neovim is far faster, and combined with my scripts and navigation tools, it is way fasted to get to files and make changes in them, too.

Emacs tries to be everything to everyone
#

I want programs to do the things they are intended to do, and to do them well. Emacs tries to be everything to everyone, and it is good but not the best at various things. The addage of emacs is a great operating system, it just lacks a solid text editor is sadly true - and using it to listen to my music, read my newsfeeds, handle IRC, and do everything was a bit much for me - it was good at this, but not the best program for the job.

I wanted a terminal centric workflow and vterm ain’t it
#

The issue that I have with emacs is that it is really meant to be a GUI app, and getting it to work over a network (ie. ssh’ed into a server somewhere) is not that efficient. I saw a dev at a meetup simply ssh into his box at home and run his dev environment from the laptop with everything as he had left it at home, and this made me think. I also saw how much faster neovim is than emacs and this too, made me think.

Vterm is not a native terminal, and has it’s flaws (copy pasting, movement etc.) that have always been nagging points for me. Adding tmux back into my workflow made this so much better.

Hotkeys in my window manager work better
#

I have utilities for email, my newsfeed, tasks, etc, and they are quicker to get to than anything in emacs was. Not only this, these apps are easy to take anywhere (newsboat in termux on android for example). CLI apps are a game changer and I don’t see myself returning to anything else truly. I replaced magit with lazygit, emms with ncmpcpp, erc with weechat, and MU4e with Neomutt. All are bound to hotkeys in hyprland.

Replacing Org-mode
#

I will concede that replacing org-mode is really not so easy. One can create custom scripts and replicate the functionality, but it is a system that is very good. I have written various scripts to pull in TODOs from projects and allow me to clock in and out on them so I can keep track of what I am working on daily. I have deadlines set up in these TODOs, as well as creating deadlines in a monthly tracking file that resembles a bullet journal setup, but I do miss the agenda, I can’t lie.

Maybe one day I will come up with something that rivals org-mode. Until then, I will be over here with my lowly scripts.

Neovim development
#

There is a massive ecosystem surrounding neovim and the community is phenomenal. New plugins are coming out all the time, and there is really nothing

Conclusion
#

While this is not to knock emacs, I think that neovim has better met my needs as of late, and I will be sticking to it for the forseeable future. Tune in next week when I release my “switching from neovim to emacs” post!