Switching to Emacs — 18 months in
This is a post about switching IDE to emacs, what's gone well and what's been a struggle so far.
I started using emacs approximately 18 months ago, switching over from VS Code. My main reason for switching was getting nervy about the dominance of VS Code (which I still think is an excellent IDE) and general fatigue around tooling enshittifaction, privacy invasion and AI integration.
What's gone well?:
- Much less mouse - I learned
vimkeybindings and have set up a tiling window manager (Amethyst/Sway), which have both been a productivity and comfort revelation - Treemacs and Projectile - I'm using emacs as an IDE and have a lot of projects - this has been a comforable way to manage them, even more so than in VS Code.
- No sore pinky - I remapped my Caps Key and with Evil mode my pinky is in good shape
- Packages and LSP - There have been packages and modes for most languages, frameworks and tools that I've needed (Angular, Containers, Python, Markdown) and at a basic level they've worked ok
What's been a struggle:
- Keybindings - Evil mode is relatively comfortable, but I still end up fat-fingering often and doing weird and unrecoverable (in an 'undo' rather than 'document loss' sense) things to the buffer. There can be an impedance mismatch with evil vs. native bindings and documentation which can be a pain for learning and tutorials.
- Lisp - Despite several starts I haven't made progress learning it yet, maybe because it's so different from what I'm used to (Python, C++). This makes it hard to customize and fully control my environment.
- Web Development - I have trouble with LSP freezes and crashes with Angular. The Angular LSP devs seem only interested in supporting the 'official' VS Code use-case which makes getting fixes difficult.
Some blasphemy:
- I haven't picked up
magit- I have a very simple git flow and am pretty used to it - using magit for it feels like slowing down - I haven't picked up Org Mode - I want most of my writing to be in Markdown, often required for collaboration with colleagues. I guess Markdown Mode covers a reasonable number of Org features. I'm too disorganised to have todo lists - maybe some day.
- Interactions are a bit slow - I haven't done any optimization but plan to eventually. That said, VS Code is snappy without needing to tinker and as far as I understand I'm limited to a single thread, which makes me think there is only so much optimization that can be done.
- I'm using Vim more - now that I'm more comfortable with Vim bindings I'm often using it for quick document edits or server work, rather than launching emacs.
What's next?
- Get better at navigation and using tooling - I'm still not using search, refactoring and code-base navigation tooling and bindings very well.
- Target evil to certain modes - In some modes (e.g. Info) the evil bindings are getting in the way, I should configure them to be active for a limited set of modes
- Learn some Emacs debugging, profiling and Lisp
To wrap up - my emacs journey has gone well so far and there are no regrets with the switch, especially since VS Code appears to be gradually enshittifying as expected. It's been a good bit of work getting to a basic comfort level and I feel like I still have a long way to go. Maybe I'll do another update at the 5 year mark.