Emacs
emacs is a text editor for Linux and macOS.
Starting Emacs
To enter Emacs, just type its name:
C-z
Suspend Emacs
C-x
C-c
Exit Emacs permanently
Global Description
C-<key>
Means hold the control, and press <key>
M-<key>
Means press the Esc once, and press <key>
NOTICE: This cheatsheet follows the above rules.
Motion
Backward
Forward
Entity to move over
C-b
C-f
Haracter
M-b
M-f
Word
C-p
C-n
Line
C-a
C-e
Line beginning(or end)
M-a
M-e
Sentence
M-{
M-}
Paragraph
C-x
[
C-x
]
Page
C-M-b
C-M-f
Sexp
C-M-a
C-M-e
Function
M-<
M->
Buffer beginning(or end)
Case Change
M-u
Uppercase word
M-l
Lowercase word
M-c
Capitalize word
C-x
C-u
Uppercase region
C-x
C-l
Lowercase region
Files
C-x
C-f
Read a file into Emacs
C-x
C-s
Save a file back to disk
C-x
s
Save all files
C-x
i
Insert contents of another file into this buffer
C-x
C-v
Replace this file with your file
C-x
C-w
Write buffer to a specified file
C-x
C-q
Toggle read-only status of buffer
Error Recovery
C-g
Abort partially typed or executing command
M-x
recover-session
Recover files lost by a system crash
C-x
u
C-_
C-/
Undo an unwanted change
M-x
revert-buffer
Restore a buffer to its original contents
C-l
Redraw garbaged screen
Transposing
C-t
Transpose characters
M-t
Transpose words
C-x
C-t
Transpose lines
C-M-t
Transpose sexps
C-v
Scroll to next screen
M-v
Scroll to previous screen
C-x
<
Scroll left
C-x
>
Scroll right
C-l
Scroll current line to center, top, bottom
Goto
M-g
g
Goto line
M-g
c
Goto char
M-m
Back to indentation
Marking
C-@
C-SPC
Uet mark here
C-x
C-x
Exchange point and mark
M-@
Set mark arg words away
M-h
Mark paragraph
C-x
C-p
Mark page
C-M-@
Mark sexp
C-M-h
Mark function
C-x
h
Mark entire buffer
Killing and Deleting
Backward
Forward
Entity to kill
DEL
C-d
Character (delete)
M-DEL
M-d
Word
M-0
C-k
C-k
Line (to end of)
C-x
DEL
M-k
Sentence
M--
C-M-k
C-M-k
Sexp
Killing
C-W
Kill region C-w
M-w
Copy region to kill ring
M-z
char
Kill through next occurrence of char
C-y
Yank back last thing killed
M-y
Replace last yank with previous kill
Getting Help
C-x
1
Remove help window
C-M-v
Scroll help window
C-h
a
Apropos: show commands matching a string
C-h
k
Describe the function a key runs
C-h
f
Describe a function
C-h
m
Get mode-specific information
The help system is simple. Type C-h
(or F1
) and follow the directions. If you are a first-time user, type C-h
t
for a tutorial.
###
When two commands are shown, the second is a similar command for a frame instead of a window.
C-x
5
1
C-x
1
Delete all other windows
C-x
5
2
C-x
2
Split window, above and below
C-x
5
0
C-x
0
Delete this window
C-x
3
Split window, side by side
C-M-v
Scroll other window
C-x
5
o
C-x
o
Switch cursor to another window
C-x
5
b
C-x
4
b
Select buffer in other window
C-x
5
C-o
C-x
4
C-o
Display buffer in other window
C-x
5
f
C-x
4
f
Find file in other window
C-x
5
r
C-x
4
r
Find file read-only in other window
C-x
5
d
C-x
4
d
Run Dired in other window
C-x
5
.
C-x
4
.
Find tag in other window
C-x
^
Grow window taller
C-x
{
Shrink window narrower
C-x
}
Grow window wider
TAB
Indent current line (mode-dependent)
C-M-\
Indent region (mode-dependent)
C-M-q
Indent sexp (mode-dependent)
C-x
TAB
Indent region rigidly arg columns
M-;
Indent for comment
C-o
Insert newline after point
C-M-o
Move rest of line vertically down
C-x
C-o
Delete blank lines around point
M-^
Join line with previous (with arg, next)
M-\
Delete all white space around point
M-SPC
Put exactly one space at point
M-q
Fill paragraph
C-x
f
Set fill column to arg
C-x
.
Set prefix each line starts with
M-o
Set face
Info
C-h
i
Enter the Info documentation reader
C-h
S
Find specified function or variable in Info
Moving within a node
SPC
Scroll forward
DEL
Scroll reverse
b
Beginning of node
Moving between nodes
n
Next node
p
Previous node
u
Move up
m
Select menu item by name
n
Select nth menu item by number (1–9)
f
Follow cross reference (return with l)
l
Return to last node you saw
d
Return to directory node
t
Go to top node of Info file
g
Go to any node by name
Other
h
Run Info tutorial
i
Look up a subject in the indices
s
Search nodes for regexp
q
Quit Info
Minibuffer
The following keys are defined in the minibuffer.
TAB
Complete as much as possible
SPC
Complete up to one word
RET
Complete and execute
?
Show possible completions
M-p
Fetch previous minibuffer input
M-n
Fetch later minibuffer input or default
M-r
Regexp search backward through history
M-s
Regexp search forward through history
C-g
Abort command
Type C-x
ESC
ESC
to edit and repeat the last command that used the minibuffer. Type F10
to activate menu bar items on text terminals.
M-.
Find a tag (a definition)
C-u
M-.
Find next occurrence of tag
M-x
visit-tags-table
Specify a new tags file
M-x
tags-search
Regexp search on all files in tags table
M-x
tags-query-replace
Run query-replace on all the files
M-,
Continue last tags search or query-replace
Rectangles
C-x
r
r
Copy rectangle to register
C-x
r
k
Kill rectangle
C-x
r
y
Yank rectangle
C-x
r
o
Open rectangle, shifting text right
C-x
r
c
Blank out rectangle
C-x
r
t
Prefix each line with a string
Keyboard Macros
C-x
(
Start defining a keyboard macro
C-x
)
End keyboard macro definition
C-x
e
Execute last-defined keyboard macro
C-u
C-x
(
Append to last keyboard macro
M-x
name-last-kbd-macro
Name last keyboard macro
M-x
insert-kbd-macro
Insert Lisp definition in buffer
Buffers
C-x
b
Select another buffer
C-x
C-b
List all buffers
C-x
k
Kill a buffer
Search
Regex (common)
.
(dot)
Any single character except a newline
*
Zero or more repeats
+
One or more repeats
?
Zero or one repeat
\
Quote special characters
\c
Quote regular expression special character c
\|
Alternative (“or”)
\(...\)
Grouping
\(:?...\)
Shy grouping
\(:NUM...\)
Explicit numbered grouping
\n
Same text as nth group
\b
At word break
\B
Not at word break
Regex (entry)
| Start | End | Entity |
|————-|———–|——–|
| ^
| $
| Line |
| \<
| \>
| Word |
| \_<
| \_>
| Symbol |
| \‘
| \’
| Buffer |
Regex (conflict)
These
Others
class
[...]
[^...]
Explicit set
\w
\W
Word-syntax character
\sc
\Sc
Character with syntax c
\cc
\Cc
Character with category c
Incremental Search
C-s
Search forward
C-r
Search backward
C-M-s
Regular expression search
C-M-r
Reverse regular expression search
M-p
Select previous search string
M-n
Select next later search string
RET
Exit incremental search
DEL
Undo effect of last character
C-g
Abort current search
Use C-s
or C-r
again to repeat the search in either direction. If Emacs is still searching, C-g
cancels only the part not matched.
Query Replace
M-%
Interactively replace a text string
M-x
regexp
Using regular expressions
SPC
/ y
Replace this one, go on to next
,
Replace this one, don’t move
DEL
/ n
Skip to next without replacing
!
Replace all remaining matches
^
Back up to the previous match
RET
Exit query-replace
C-r
Enter recursive edit (C-M-c to exit)
Misc
Shells
M-!
Execute a shell command
M-&
Execute a shell command asynchronously
M-
Run a shell command on the region
C-u
M-
Filter region through a shell command
M-x
shell
Start a shell in window shell
International Character Sets
C-x
RET
l
specify principal language
M-x
list-input-methods
show all input methods
C-\
enable or disable input method
C-x
RET
c
set coding system for next command
M-x
list-coding-systems
show all coding systems
M-x
prefer-coding-system
choose preferred coding system
Registers
C-x
r
s
Save region in register
C-x
r
i
Insert register contents into buffer
C-x
r
SPC
Save value of point in register
C-x
r
j
Jump to point saved in register
Miscellaneous
C-u
num
Numeric argument
M--
Negative argument
C-q
char
Quoted insert
Commands Dealing with Emacs Lisp
C-x
C-e
Eval sexp before point
C-M-x
Eval current defun
M-x
eval-region
Eval region
M-:
Read and eval minibuffer
M-x
load-library
Load a Lisp library from load-path
Simple Customization
M-x
customize
customize variables and faces
Making global key bindings in Emacs Lisp:
(global-set-key (kbd "C-c g") ’search-forward)
(global-set-key (kbd "M-#") ’query-replace-regexp)
Abbrevs
C-x
a
g
Add global abbrev
C-x
a
l
Add mode-local abbrev
C-x
a
i
g
Add global expansion for this abbrev
C-x
a
i
l
Add mode-local expansion for this abbrev
C-x
a
e
Explicitly expand abbrev
M-/
Expand previous word dynamically
Spelling Check
M-$
Check spelling of current word
M-x
ispell-region
Check spelling of all words in region
M-x
ispell-buffer
Check spelling of entire buffer
M-x
flyspell-mode
Toggle on-the-fly spell checking
Writing Commands
Syntax
(defun command-name (args)
"documentation" (interactive "template")
body)
Example
(defun this-line-to-top-of-window (line)
"Reposition current line to top of window.
With prefix argument LINE, put point on LINE."
(interactive "P")
(recenter (if (null line)
0
(prefix-numeric-value line))))
The interactive spec says how to read arguments interactively. Type C-h
f
interactive RET
for more details.