Personal Log · 22d · discuss
There has always been that rivalry between these two editors. In fact, the closing question in my first successful job interview in the UK was: Do you use vi or emacs? The interviewer was a long time emacs user, but it wasn’t a problem that I used vim. In the really old times, when I was a DOS user, because that is what we had, I didn’t care much. I used DOS’ edit, or whatever was the editor of the IDE I used at the time. But I spent a lot of time writing documents for high school using WordStar, and this was useful because when I started university and I had to write code in Linux, there was an editor I knew how to use and it was installed in all the labs: joe. Of course there was vi (can’t remember if vim was always installed) and emacs, but those had a learning curve and joe’s keys were familiar to me with CTRL+K followed by another key. So I used joe for quite some time until I had to do some work on a remote machine using Telnet (this was before SSH), and joe wasn’t installed. But there was vi, and I had to learn it. Then from vi to vim wasn’t that much of a change with a lot of quality of life improvements (and plugins!), and I have been using it since then, even early on when in my first jobs that I had to use vim for Windows. Sure, I moved to neovim when it was usable enough, because it felt snappier and I liked some of the design decisions, but it was really the same evolutive branch. It felt home. I have never been into the vim vs emacs meme because, like many things, it is fun for a while but then starts to be tiresome. In fact, I was emacs curious for a while, and I tried it with my own configuration and using Doom emacs, but it never clicked for me. Now I know why, because I tried to use it how people use emacs, instead of taking with me all the accumulated experience using vim. In the context of total enshittification of the web and open source projects managed as a product (resulting in regressions or decisions that, in my point of view, make things worse), every new release of neovim was pure joy: always more, always better. But now I’m not using it, I’m writing this post in emacs. What happened? In order to fully understand my decision I think we need to look back to the early 2000s, when using open source (or, more specifically, free software) required effort and, more often than not, it meant going against the general flow. And it was OK, I really believed in both the technical merits and the ethical side of it. Evidently things are different now. Open source won, in a way, although in others we lose in the worst way (I recommend reading On Open Source and the Sustainability of the Commons). But I wasn’t afraid to do things differently back then for good reasons, and obviously I’m not going to start now. So, what does that have to do with me using emacs and leaving neovim? Enter AI (or better put: large language models, LLM in short), and vim is OK with AI contributions (which affects neovim by proxy, being a fork), and neovim is OK with them too. And both make me sad. I don’t want to make this post about why current LLMs are bad, but if you want to learn about it, I recommend reading Why not LLMs? There is a fork of vim before AI contributions started: vim classic, that may work for you, but for me it is hard to leave all the neovim niceties behind. Of course I didn’t want to be sad, but I also don’t want to quit what I love and change careers. And that’s how I got to emacs. Admittedly, on the second attempt, because I realised that the emacs way doesn’t quite work for me after so many years of using a modal editor like vim. On the second attempt I realised I was doing it wrong and started with evil mode, that converts emacs into a “better” vim. Suddenly it all made sense! I have been playing with it for roughly a month, but I was completely comfortable using emacs after a day of tinkering. I have been writing my own configuration and adding/changing things as I needed them. For example, I’ve used it to finish Outpost, and it was so weird how the editor disappeared and I was just coding. Maybe I wasn’t using that many plugins in neovim, but I’ve found a nice replacement for everything (some of it is built-in in emacs), and with evil-mode I’m even using the same key bindings via the leader key, which I believe was the main reason I failed to adapt to emacs before. Things are different, and feel different (generally in a new, good way). But I’m not sad anymore. It is probably not worth sharing here my favourite plugins, or what equivalences I have found. You can check my emacs configuration anyway. The future is still uncertain because there is no official policy in the GNU project yet, that emacs is part of. They are working on it, involving lawyers, but there is a human emacs initiative that looks promising. Even if the worst happens, emacs is very mature and Debian Trixie will be supported until 2030 (with emacs 30.1 that I’m using), and that makes me optimistic.