I’ve been a VIM user for a long time, but as I mentioned before I
finally wasn’t satisfied with the quality of VIM language and its
limitations on basic editing features that I needed even though I
could correctly setup and use it for my specific needs using various
plugins and manual configuration.
I’m a bit perfectionist about how I work and regularly read and measure
how I do, and I’m willing to improve no matter what I’ve been used to.
To get something you never had, you have to do something you never did.
Let’s get started!
Emacs With Better Defaults
I wasn’t interested in going bare-minium with Emacs, so I started to look for config/distribution with default settings that I can both learn from and not heavily customized to change or add things to it.
I come across https://github.com/ianpan870102/yay-evil-emacs, a lightweight Emacs config with better defaults that are good enough to get you started to use Emacs as your daily gear. Also, this Emacs config starts up super fast with an average init time of 0.7 seconds.
To me, the main selling point was the exceptional out-of-box configuration. The layer system makes adding packages almost no-brainers. And plus, I didn’t need to give up my Vim keybindings! Yay! Evil Emacs truly made me start liking Emacs and wanted to explore more aspects of Emacs.
If you’re new to Emacs, packages are like plugins that can extend your tool functionality or make it easier/faster to work with (Shortcuts, etc.). Here I’m going to list the packages I use:
- use-package — Plugin manager that is both faster and easier to work with.
- evil — Plugin VI layer for Emacs that gives you best of both worlds.
- emojify — Emacs extension to display emojis.
- ivy— a generic completion mechanism for Emacs.
- counsel—a collection of Ivy-enhanced versions of common Emacs commands.
- swiper — an Ivy-enhanced alternative to isearch.
- vterm — fully-fledged terminal emulator inside GNU Emacs based on libvterm
- org-mode — document editing, formatting, and organizing mode, designed for notes, planning, and authoring
- magit — the most usable git interface.
That’s basically it. I also have some manual configuration to make this setup fit my needs that you can find in the image caption.
I have to say I’m pretty happy with my decision, and I haven’t opened a terminal or VIM for weeks, although it was easier for me to switch from VIM to Emacs than probably someone from TextMate. There are a couple of downsides in emacs if you’re entirely new:
- Steep learning curve. You should spend a couple of weeks learning emacs to be productive using it.
- Awkward keyboard shortcuts, especially for Mac users, use ctrl and alt keys for every shortcut. But you get used to it with time.
- Keep in mind that Emacs is single-threaded; a buggy plugin can freeze your emacs process.
I learned emacs to use a text editor like I’m playing piano as musical instruments for musicians; text editors are the same tools for developers.