I wanna go to spaaaace!
I figured I’d start off with a couple of articles about the technology I currently use and depend on. It’s a nice way to give credit and attention to some of the amazing open source software out there and and also to the hard working people behind it. Hopefully it can also serve as a motivation for others to be inspired and try out new things.
The most important piece of software I use as a developer is the text editor. Up until about a year ago my main weapon of choice had been
Vim. A relationship spanning over a decade. However, last christmas I suddenly decided to see if the grass was greener on the other side and so I gave
Emacs a fair chance. More specifically, this turned out to be Spacemacs-powered
It all started when I stumbled on this YouTube video of a talk by Aaron Bieber about
Evil Mode for
Emacs. I bet there are plenty other videos like it out there, but what hit me was the fact that somebody with a long
Vim track record chose to jump ship in favor of something else:
At the time I watched the talk I had been a
Vim user for more than 10 years. I was very comfortable with/and extensively used several
Vim-defining features, and also having a respectable number of additional plugins installed.
Vim’s modal philosofy and
normal mode motions are awesome, and the editing efficiency you can achieve when grokking them is quite unique.1 Whatever was supposed to replace my
Vim-based setup had to rock pretty hard.
Emacs is not much different to
Vim when it comes to their default configuration being pretty lame. It does most definitely not rock. Having spent quite a bit of time installing plugins and changing configurations in
Vim I dreaded having to do the same with
Emacs just to avoid the suck. Luckily there are tools2 out there that let you bootstrap a configuration based on which languages and other parameters you choose.
Scaffolding a configuration is a one-time operation though. It leaves all the necessary continuous grooming of the configuration up to yourself. This might be the dream of some, but I’ve had my share of tinkering and prefer things to just work. After a brief stint with a bootstrapped configuration I soon discovered
Spacemacs. Not having gained much of an “attachment” to my auto-generated configuration I scrapped it all and flew off to space…
Configuration sneak peek
Spacemacs is a rather opinionated yet holistic plug and play configuration for
Emacs. There’s plenty of material out about what
Spacemacs is and isn’t, so I won’t dive into that. What I’d though I’d mention is that it comes with a pretty awesome extension interface and ecosystem. Plugins are managed by an abstraction called
layers, which basically are domain-specific bundles of dependencies, configurations, functions, and keyboard mappings. Popular layers are curated by the
Spacemacs community, while you can easily create your own personalized ones.
I currently don’t host my
dotfiles repository publicly, so here’s a snippet from the configuration layer list in my
I mostly use stock layers provided with the
Spacemacs distribution. I do have a few private layers though:
A couple of the killer apps you typically hear about when coming to
Org mode. I’ve become a heavy user of both of these amazing extensions. I have accumulated a bit of
elisp and configurations in order to make sense of my
Org Agenda, which is why I’ve placed it in a separate layer.
One of my most important
Vim plugins was
Ctrl-P, fuzzy-search for files. There are two main searching/completion frameworks for
Ivy. As opposed to
Ctrl-P these frameworks provide means for not only searching through files on disk, but all kinds of searching within
Emacs: documentation, contents of a buffer, commands, etc.
Helm is by far the most feature-full of the two, but many seem fed up by its bulkiness. I’ve recently switched to
Helm as I was experiencing some of the notorious performance issues. There are annoying quirks with
Ivy too though, yet none of which are performance related.
The batteries included in the
Spacemacs distribution is quite impressive, and there’s not been much I can say that I miss from
Vim. There are numerous layers for different programming languages, themes, tools and utilities, and even games. It’s obvious from the get-go that the developers have focused on discoverability and intuition. The keyboard bindings are based on mnemonic principles, and command searching using
Ivy as well as tools like
which-key allow discovering the vast number of features a lot simpler. I also realized that I remembered the keybindings a lot quicker for every one I learned. A few examples of bindings and prefixes are:
- Open command search using
- File related actions, e.g.
find-file (SPC f f)
- Search commands (there are some amazing tools and integrations here)
- All window related actions, e.g. delete window
SPC w d
I’m grateful for the excellent editor which is
Vim. The impact it and its predecessors have had on the editor space is enormous. For me though, the time was right to try out something new and
Emacs (with batteries) seems to have really clicked with me. I don’t expect the same to stand true for everybody else.
I do feel a need for stating the obvious though: Of course you don’t have to abolish
Vim entirely when choosing another editor. Contrary to popular belief, it’s not a matter of either
Emacs. Use whichever editor is suited for the task at hand. I still fire up
Vim on a regular basis. For instance, although I do use Tramp Mode occasionally when accessing remote servers, I often
ssh into it and fire up vim. I also periodically install and fire up editors like
Visual Studio Code just to acknowledge what I’m (or they) are missing out on. I’m never fully convinced though, for instance due to lack of terminal support4.
I hope to publish more details of my
Spacemacs setup in future posts, so stay tuned!
Whenever I try out other editors or IDEs the first thing I always do is figure out if it has a
Vimplugin or keybinding mode. If not, then it’s most likely an editor I won’t be using much…↩︎
I don’t like the
reactlayer being based off
Web modeinstead of
I do a significant bit of work while commuting and access a desktop computer through
Trampis not the way to go over unstable connections.↩︎