My Code Editor Rollercoaster: From Emacs to Emacs, and Everything In-Between
Hey there! This is my story about how I started with Emacs back in the 90s, and after 25 years and a long detour to heavy IDEs and VIM, I ended up back with a fairly minimalist and customized Emacs.
The ’90s nostalgia. Ah, the ‘90s! My coding journey began with Clipper, Paradox, and Microsoft Access in the ’90s, long before Google could solve all our problems. I even dabbled with Perl and Emacs, which was like the geeky version of a teenage rebellion.
Eclipse and Java, the new kids on the block. Fast forward to the early 2000s, and I fully embraced Eclipse and Java. It felt like stepping into a sci-fi movie compared to my ’90s tools. I was happy, and the refactoring tools and code generation capabilities of Eclipse were top-notch.
The VIM chapter (or my “what was I thinking?” phase). So, around 2010, a buddy convinced me to try VIM (thanks, Taq!). Talk about a culture shock! There were a lot of cursing, coffee, and “How do I exit VIM, again?” moments. But then, BAM! Modal editing clicked, and I quickly became faster than ever. It just felt good to move chunks of text around with a few strokes. Macros were fantastic, and text objects are still the best concept for code editing ever.
Team Spacemacs (because Vimscript… Yikes!). Now, I need to confess: I jumped into the VI vs. Emacs flame war, and, spoiler alert, I switched sides! I wanted to automate stuff and make some of my editing patterns easy, but honestly, Vimscript was too painful. Enter Spacemacs — the best of both worlds. I had VIM keybindings and all the niceties I was used to, with a pretty decent language under the hood.
Doom Emacs: going deeper. Just when I thought I had it all figured out, Doom Emacs caught my eye. It was like the cooler, edgier sibling of Spacemacs. I was more and more into customizing and automating everything, and Doom was leaner, and I quickly found how to bend it to my will.
The big simplification (and turning my world upside down, again). A few months ago, I started playing around with other modal options like Meow because VIM modal has one, and just one, problem: you can’t see what you are affecting until you run the command. While fiddling with new alternatives, something hit me in the face: I was using just a fraction of all those fancy features. So, I did the unthinkable — I ditched modal editing after 15 years of building muscle memory and went back to basics with plain Emacs, handpicking only what I needed. All my speed editing code could be summarized in quick navigation, quick selection, and a couple of very specialized functions over my selection, like surrounding and commenting it.
My current setup: lean, mean, and super clean. My setup now? It’s like a custom-built race car (or maybe a lean bicycle with a couple of jet turbines strapped on it). I’ve got this neat text object selection with “thing-at-point” and Avy for moving around like a pro. Transient and Hydra take care of quick menus for the most common functions, and the regular “M-x” (execute-extended-command) with Consult and Prescient takes care of everything else.
Next, I’m planning on expanding my “things-at-point” selection with Treesit to get syntax-aware text objects, and then slowly organizing my init.el because it’s, of course, a mess.
This whole journey from plain Emacs in the ’90s to the heavyweights like Eclipse and back to a streamlined customized Emacs has been fun. And now I’m back to non-modal editing (with a twist). Who would’ve thought?
Never stop tweaking. Improving a workflow is a bit like gardening — it’s never really “done.” I’m always tweaking my setup, adding a little here, pruning a bit there. A couple of times I leveled the field and started again. But hey, who says you can’t teach an old dog new tricks?
Also, during that whole thing, I switched my keyboard from QWERTY to a kinda weird version of DVORAK (while using VIM. Bad idea, I know!) and, oh… yes, from a Software Engineer and Architect, I turned into a Data Scientist and Machine Learning Engineer midway. 🤷
So, there you have it — my code editor journey, with a side of joy and a few “what was I thinking?” moments. I hope it made you think about yours 😁
Disclaimer: This blog post was produced by a good mix between ChatGPT and a human. I provided GPT with a concise version of my story and asked for the post. After some tweaks to the tone and a couple of corrections, I had a reasonable first version. Then it was my turn to remove excessive analogies, fill in missing parts, add details, and tailor the text to my preferences. Then GPT took over again and proofread the text with my modifications. The final touch was back on me, adding links, and with GPT, creating images.