greet.py
Emacs is an open source text editor that has been described as "timeless and
infinitely powerful." Even though Emacs was created in 1976 (!), it's still one
of the most popular text editors around, mainly because of how easy it is to
customize! You can make your Emacs look and behave exactly as you want it
to. Between its popularity and extensibility, if you see a cool feature in
another text editor that you want to steal emulate, someone in the Emacs
community has probably already done the dirty work for you.
Getting started is pretty easy in Emacs, although becoming a pro will take a bit
more work. Today, we'll just be introducing you to the basics. By the end of
this guide, you'll be able to open Emacs, create a new file called greet.py
,
write a function greet
, and run it from your terminal.
emacs
into your
terminal. It's pretty plain, so some people have created a nicer
version here. Click the huge download button and follow the
directions that pop up. After this, you should have Emacs in your
Applications folder. If you're having trouble, there's a more
detailed walkthrough on YouTube here.sudo
apt-get install emacs
into your terminal.greet.py
Let's first create and navigate to a directory called example
, using
the UNIX commands you learned in Lab 0:
mkdir ~/example
cd ~/example
Let's try opening Emacs from the command line.
emacs &
You need to add an ampersand (&
) after emacs
, so that your terminal will
still be responsive (as an exercise, try omitting the &
and press Ctrl-c
to
regain control of your terminal). A window like this should open up:
To create a new file, you have two options.
Option 1: use the keyboard shortcut C-x C-f
. That is:
Control
(Ctrl), hit the x
key.x
key.Control
, hit the f
key.A prompt will appear in the bottom area. This region is called the
minibuffer. Type in greet.py
and hit enter.
Option 2: go to the File
menu and click on Visit New File...
Type greet.py
into the minibuffer and hit enter.
The Emacs window should turn into a blank page — you're looking at the newly
created greet.py
file! In the future, whenever you want to open Emacs to edit a
file, you can type emacs greet.py &
into your terminal. If the file that you
want to edit doesn't exist yet, Emacs will create it for you. If you already
have Emacs open, you can just use the same C-x C-f
shortcut.
Now, let's write a simple program that greets you by name. Don't worry if you don't understand the program yet! We'll learn what each of these pieces mean in more depth in the next few weeks.
def greet(name):
print('Hey', name, ', how are you doing today?')
print(' - Python')
Emacs should now look something like this:
You'll notice that certain words are colored differently, like def
and
print
. Emacs looks at the .py
at the end of the file name and knows that you
want to write Python, so it will highlight special words for you. Syntax
highlighting makes programs much easier to read!
To save your program, use the keyboard shortcut C-x C-s
or navigate to the
File
menu and hit Save
. You'll know it worked if Emacs tells you "Wrote
/some/directories/greet.py" in the minibuffer.
Now exit Emacs, either using the shortcut C-x C-c
or finding File -> Quit
on the menu.
Let's actually make Python do some work! Make sure that you're in the example
directory, which contains our greet.py
file. Then, type this into your
terminal.
python3 -i greet.py
This command does the following:
python3
is the command that starts Python-i
is a flag that tells Python to start in interactive mode,
which allows you to type in Python commands from your terminalgreet.py
is the name of the Python file we want to loadThe three right angle brackets (>>>
) mean that you're inside the Python
interpreter. Now, you can get Python to greet you:
greet('Brian')
Python will then print out
Hey Brian, how are you doing today?
- Python
Of course, you probably want Python to greet you and not me. So if your name is John, you should also type:
greet('John')
and suddenly, Python knows how to greet you!
Hey John, how are you doing today?
- Python
Congratulations, you've edited your first file! This process of editing a file
and running it will feel more natural as the course progresses. To exit the
Python interpreter, you can type in exit()
or quit()
into the interpreter or
hit C-d
.
Everything you've learned so far is enough to get you through 61A. To get the most out of using Emacs, though, you should become more proficient with Emacs' keyboard shortcuts.
If you ever get the chance to watch a pro use Emacs, you'll notice that she never uses the mouse — everything she does is via shortcuts. Emacs has a wide variety of shortcuts that will help you do pretty much anything.
You might remember from above that C-x
means: while holding Control
, press
the x
key. Similarly, C-s
means: while holding Control
, press
s
. Together, the shortcut C-x C-s
means to do C-x
, then C-s
.
Meta
KeySome shortcuts involve the Meta
key, like the shortcut to copy the highlighted
region of text: M-w
. Most keyboards these days don't have an actual Meta
key, so we use the Alt
key instead. (If you're on a Mac, use Cmd
.) To
execute the copy command, hold Alt
and press w
.
M-x
One of the most common Meta
key shortcuts is M-x
. If you hit M-x
, the
minibuffer will prompt you for the name of a command. Try M-x doctor
or M-x
snake
!
As you've probably noticed, the shortcuts for Emacs are quite different from the
ones that you're used to. You'll find that Emacs shortcuts are actually pretty
common in the programming world. For example, try typing python3 -i greet.py
into your terminal, without hitting enter. What does M-b
do? It does the same
thing as it does in Emacs, which is go backward by a word! Try M-f
too.
If you'd like to enable things like C-c
and C-v
for copy and paste, you can
turn on CUA keys by finding it in the Options
menu. I'd recommend trying the
Emacs way, though!
Shortcut | Description |
---|---|
C-x C-s |
Save your file |
C-x C-f |
Open a file (or create a new file) |
C-/ |
Undo |
C-w |
Cut the highlighted region of text |
C-y |
Paste text |
M-w |
Copy the highlighted region of text |
C-g |
Cancel a command |
C-x C-c |
Exit emacs |
Emacs has a ton of informative "help" commands. You can get more information about any command or keyboard shortcut. The best part is that Emacs is self-documenting — there's no need to open up something else to get help, since it'll show up right inside Emacs!
C-h t
will start up the Emacs tutorial. Going through this is highly
recommended, as it will help you become more proficient with the various
movement keyboard shortcuts. It's a bit long though, so you might not be able
to finish it in one sitting.C-h f
will prompt you for the name of a function and return its docstring.C-h k
will prompt you for a keyboard shortcut and return its doctsring.Emacs...will be there when the icecaps melt and the cities drown, when humanity destroys itself in fire and zombies, when the roaches finally achieve sentience, take over, and begin using computers themselves - at which point its various Ctrl-Meta key-chords will seem not merely satisfyingly ergonomic for the typical arthropod, but also direct evidence for the universe's Intelligent Design by some six-legged, multi-jointed God. — Kieran Healy
Your very own Emacs legend is about to unfold! A world of dreams and adventures with Emacs awaits! Let's go! — Samuel Oak
C-h t
: it's good for you!