The 3 Stages of Beauty in Emacs (from a 17 year old’s perspective)
Tags: emacs, eshell
Published: 2017-04-27 15:58:41

---
title: The 3 Stages of Beauty in Emacs (from a 17 year old’s perspective)
published: true
description: A status update on my 1-year relationship with Emacs and what I've learned along the way.
tags: Emacs, Eshell
cover_image: http://i.imgur.com/7ll1xSn.png
---

In a mostly overlooked corner of my school lies an antiquated yet working Apple II, in full glory. I decided one day to login only to find some odd IDE running on the terminal - I soon found out it was an Emacs instance. I’d heard this name before. Where was it? Oh yea! In the Social Network!

![alt text](http://i.imgur.com/9mJoLIz.gif "Time to Break out Emacs and modify that perl script!")

Circa 6 months ago when I was about to make this switch, Atom was my IDE of choice. It was decent and it got the job done, so what else could I want? When I heard about Emacs, I did some research and found that there seemed to be a rivalry between Emacs power-users and the more mainstream Vim-ers. 

In the spirit of teenage rebellion, I cast away Ol’ Reliable Atom and shunned the mainstream Vim in favor for Emacs, my new idol to learn and utilize completely. I used [this textbook](https://www.masteringemacs.org "Mastering Emacs: by Mickey Peterson") to pick up some commands as well as the [official GNU Emacs manual](https://www.gnu.org/software/emacs/manual/ "The GNU manual at www.gnu.org") and the uber-helpful [Emacswiki](https://www.emacswiki.org/emacs "Emacswiki homepage"). And so began my 3-stage journey of learning this command-line based editor completely from scratch. 

## *Stage 1*: This SUCKS. Do people seriously use this?

The absolute first thing I had to learn with Emacs is how to move around. How do you move the cursor Forward? Backward? Up? Down? What the hell.`C-x f` for forward? `C-x b` for backward? It’s neat that the letters match up with the word, but how could anything possibly be more intuitive than the arrows? Or pointing and clicking?! This can’t disrupt my workflow: I haven’t even been able to start working because of how complicated this is! 

Navigation in Emacs as newbie was probably the steepest part of the Emacs learning curve, so if anyone is out there learning or may have given up — keep practicing, it gets better I promise. 

Just kidding, it gets even harder before it gets any easier. I learned about the all-important key-bindings, often by accidentally clicking some key while trying to navigate. Whoops, accidentally clicked `C-s` — oh wait, what’s Iterative-Search? That’s kinda neat. I learned how to open and save files, how to switch buffers, and how to shut down Emacs (believe it or not it took me a while to figure this one out, I would just shut down my Terminal app)

## *Stage 2*: God Bless Eshell

I saw an instant jump in productivity when I discovered Eshell. (Check out [this website](https://www.masteringemacs.org/article/complete-guide-mastering-eshell "Mastering Eshell subsite in the Mastering Emacs textbook website") for a general overview) Possessing a shell in an alternate buffer meant I could quickly hop around from working and writing code to testing it and modifying file structure. With a fully functional Shell at my side, I bypassed the tedious task of coding in an IDE, switching to my Terminal to run it, and switching back to modify code. When I became comfortable with Eshell, I began to notice that my productivity in Emacs was rising.

## *Stage 3*: Hey, That’s Kinda Neat!

Emacs has some really cool features that boosted my productivity as well, so I’ll give them a special shoutout.

#### Macros

[Macros](https://www.emacswiki.org/emacs/KeyboardMacros "Emacswiki description of Macros") allow you to chain a number of commands into one command. For example, if for a block of code you want to delete the first and last five characters of every other line, you can string together these commands and make it a macro, allowing you to complete such a task within a matter of seconds.

#### Key-Binding Customization

Emacs allows you to bind new commands to characters for the entire system. For example, I found [this helpful Stackoverflow answer](http://stackoverflow.com/questions/7733668/command-to-clear-shell-while-using-emacs-shell "Stackoverflow answer for clearing screen in Eshell") and followed the second answer to create a key binding that allows me to easily clear my Eshell screen! Key-Bindings are written in Emacs’ native language [Lisp, so if you know the language](https://www.gnu.org/software/emacs/manual/eintr.html "GNU official guide to working in Emacs Lisp") you can create your own bindings to customize and improve your workflow!

#### Splitting Windows

Believe it or not, this feature took me some time to discover, but Emacs’ ability to split windows cleanly meant I could switch between and work on different files at a much faster pace than ever before. No longer was I stuck in the (now frustrating) process of switching tabs or windows. My workflow now looked something like this:

![alt text](http://i.imgur.com/o3NYwej.png "A sample workflow with split windows")

## In Conclusion

I’d still say I’m a novice when it comes to Emacs. There are some power-users out there that use Emacs’ immense capabilities to its fullest extent, and I’m nowhere close to them. That being said, I’ve been using Emacs for about a year now and I hope that my experience outlined here could prove valuable to anybody thinking about switching or learning this environment. I often find myself using Emacs navigation commands in Google Docs and Gmail and all sorts of places (amazingly, they work!) so it’s safe to say that I’m not leaving Emacs anytime soon.


I may have made some factual errors here and there, so please comment if you spotted something!
Know any other cool features that I didn’t mention? Please comment those too! Thanks!