In high school, I was given a Sun 3/60 workstation and given instructions to set everything up and learn how to use vi. “You’ll never find a better editor” my boss told me. In retrospect, I think you’ll never find a better editing concept, and that’s modal editing.
Developers spend far more time reading than they do typing. Breaking reading and writing (or inserting) into two discrete modes seems natural after you take a moment to get used to it. Once you’re used to it, there’s no going back and that’s what always kept me from trying emacs.
Why Even Try Emacs?
Emacs has several advantages over vim including…
- A cleaner, easier to update code base
- Amazing customization options
- Beautiful lisp syntax
Now for all those advantages it is hampered by a finger-breaking, chorded input
methodology. Sure you can
CTRL (and really I should remap it to
ESCAPE) but it still lacks modal
Enter evil mode
This provides most of the vi shortcuts you are used to and modes. For many people, this is a good place to stop. They already know the key combinations, they have modal editing, and they have all the advantages of emacs.
If you want to take it a step further, spacemacs may be for you. Spacemacs is
built around a leader key (
SPC) that starts commands in normal mode. Commands
are built from easy to remember, consistent mnemonics like
b for buffer,
f for file, etc. Typically repeating the key brings up the most
SPC b bgives a helm buffer dialog to choose which buffer you want to edit
SPC f fgives a helm file dialog to choose which file you want to edit
Don’t know a command? That’s OK, spacemacs is discoverable. Type
SPC and a
list of the most common commands comes up. Type another character and the most
common commands for that section come up. If you want to learn, all you have to
do is read.
Spacemacs is huge (especially with the options I chose) and slow to start up. Optimally I would like to run emacs in daemon mode, use it for session management, and spawn all my terminals from inside it. I haven’t gotten there yet though.
Also I have encountered at least one
that required me to change my
init.el to get things to work.
I’m currently using spacemacs and enjoying it. This is how I got here:
- vi - I’ll run nvi if I’m feeling nostalgic.
- vim - Know it, loved it, helped children in Uganda.
- neovim - Appreciated the cleaner code, taught me to love terminals in my text editor.