Emacs to the space!

In the world of so many IDEs and text editors, there are two, which always stand out, Emacs and VIM. We know about the world wars that happen between people using them. Never got a winner right? ūüėõ

emacs.png

Having used the likes of VIM, Atom, Sublime, Visual Studio Code, and the sweet IDEA products, I wanted to get back to the basics, and something which is very powerful and configurable. I decided to try Emacs after so much hype.

Why Emacs?
  • Text EditingEmacs does what a IDE should be best at – text processing. It‚Äôs very easy to manipulate text, paragraphs, words, handing¬†regex, search, find, replace text and content.
  • Robust &¬†Configurable – Everything in emacs is based on¬†configuration. It allows you to do almost everything using your custom configuration.¬†It has¬†Content-aware editing modes, including syntax coloring, for many file types.
  • Buffers/Scratch Buffers – This is the feature I love the most. When you edit a file in emacs, you’re not really editing the file itself, as it sits out on a disk somewhere. Instead, emacs makes a copy of the file, and stores the copy in a part of RAM memory called a¬†buffer. All the changes you make to the file are applied to the buffer. When you save the file, emacs writes the contents of the buffer to the disk.¬†It lets you quickly create new buffers without actually saving them to your disks, which is useful for creating¬†temporary stuff.
  • Lisp – Emacs Lisp is a powerful implementation of Lisp which helps writing user customizations and extensions.
  • Integration with External Tools – Emacs integrates well with tools and packages, which includes source version control, running make/rake/tests, spawning processes, and even running shell inside.
  • Pair Programming – Remote Session – Emacs enables you to easily pair program with your co-developers even remotely.
  • Kill Ring –¬†The¬†kill ring¬†is a list of blocks of text that were previously killed. In Emacs, if you kill text in one buffer, it moves to¬†the other, essentially bringing¬†back what you killed.
I started with configuring Emacs to the way I want, and saw that its going to be very painful setting up everything from scratch. Then I came across Spacemacs, after recommendation by our Chief Architect, Niranjan, and started exploring it.
Spacemacs is a customized version of Emacs, where you get so many things out of the box and don’t have to start from scratch.¬†Spacemacs can be used naturally by both Emacs and VIM¬†users — you can even mix the two editing styles. As Spacemacs says – The best editor is neither Emacs nor Vim, it’s Emacs and Vim!
spacemacs-ss
Advantages & Features of Spacemacs (according to http://spacemacs.org/)
  • Mnemonic –¬†Key bindings are organized using mnemonic prefixes like b for buffer, p for project, s for search, h for help etc
  • Discoverable –¬†Innovative real-time display of available key bindings. Simple query system to quickly find available layers, packages and more.
  • Consistent –¬†Similar functionalities have the same key binding everywhere thanks to a clearly defined set of conventions.
  • Crowd-Configured –¬†Community-driven configuration provides curated packages tuned by power users and bugs are fixed quickly.
Setting up Spacemacs
On OSX, if you are using Brew all you have to do is
$ brew tap d12frosted/emacs-plus
$ brew install emacs-plus
$ brew linkapps emacs-plus

Add osx in ~/.spacemacs file to

dotspacemacs-configuration-layers
It was a very steep curve for me¬†understanding the concepts and learning the way Emacs work, with your fingers dancing all over the place for executing shortcuts. But, eventually in a couple of weeks, I got comfortable and started understanding the Emacs way. In short, my fingers have¬†started learning to dance well. ūüôā
I tried creating a very simple cheatsheet for very basic operations which I use in day to day operations. (https://github.com/usr-local-ts/spacemacs-cheat-sheet)
In all, Spacemacs is really fun to work with and I recommend it to all the awesome programmers out there.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s