This is a reference card that is unlike other ReferenceCards in that it will not fit on a conveneniently sized card. Instead it tries to tell you everything about doing things in Emacs.

open

emacs& RET or click a graphical icon

emacs -nw RET start in terminal, not in a windowing system

C-h C-a information about Emacs

M-x emacs-version show version in echo area

M-x emacs-uptime show time since started

exit

C-x C-c save buffers and quit

C-u C-x C-c force save buffers and quit

C-] recursive edit (see “recursive edit” below)

M-x kill-emacs force quit

cancel

C-g a command

C-M-c recursive edit (see “recursive edit” below)

C-[ C-c same as previous

recursive edit

C-] exit recursive edit

C-M-c cancel recursive edit

C-[ C-c same as previous

M-x top-level cancel all

customize

C-x C-f ~/.emacs RET Emacs initialization file

M-x emacs-init-time run time of loading user init file

M-x customize main menu

M-x customize-variable variable

M-x customize-apropos search

M-x customize-mode mode

M-x global-set-key define key binding (see “key” below)

M-x local-set-key define key binding for current buffer

M-x normal-mode reread settings in file local variables

M-x display-time show clock, system load and email flag in mode line

M-x display-time-mode turn off

M-x display-time-world show times around the world

M-x display-battery-mode show system power

M-x size-indication-mode show size in mode line

M-x column-number-mode show column number in mode line

M-x toggle-indicate-empty-lines show end of file in fringe

M-x ruler-mode add a ruler to the current buffer’s window

M-x menu-bar-mode toggle existence of drop-down menu

M-x tool-bar-mode toggle existence of clickable tool bar

M-x scroll-bar-mode toggle scroll bar

M-x toggle-scroll-bar toggle scroll bar in current frame

M-x blink-cursor-mode toggle blinking of cursor

M-x normal-erase-is-backspace-mode fix delete and backspace keys

menu

M-` text interaction with drop-down menu

F10 same as previous

M-x menu-bar-mode toggle existence of drop-down menu

M-x tool-bar-mode toggle existence of clickable tool bar

help

C-h ? menu

C-h C-h menu

SPC scroll down menu

DEL scroll up menu

q close menu

C-h t tutorial

C-h r Emacs info manual (see “info” below)

C-h F Emacs FAQ

C-h c <KEY> what is command for KEY

C-h k <KEY> describe command for KEY

C-h w <COMMAND> RET where is key binding for COMMAND

C-h m show current modes

C-h b show current key bindings

C-x C-h list bindings starting with C-x (see “key” below)

C-c C-h list bindings starting with C-c (see “key” below)

C-h a list commands matching search

C-u C-h a list commands and functions matching search

C-h f <FUNCTION> RET describe FUNCTION

M-x M-p C-h f RET describe last command executed with M-x

C-h v <VARIABLE> RET describe and show values for VARIABLE

M-x apropos-variable list user variable matching search

C-u M-x apropos-variable list all variables matching search

M-x apropos-value list user variables with values matching search

C-u M-x apropos-value list all variables with values matching search

C-u M-x apropos-documentation list all with values matching search

TAB forward to cross-reference link

S-TAB backward cross-reference link

M-TAB same as previous

C-M-i same as previous

C-[ C-i same as previous

RET follow cross-reference

C-c C-c follow cross-reference

C-c C-b go back

q quit

info help

C-h i open directory of manuals

C-h r open Emacs manual

C-h S find description of symbol in manual

q close

t table of contents (menu)

d back to directory

m <ENTRY> visit menu ENTRY in table of contents

TAB forward to cross-reference link

S-TAB backward cross-reference link

M-TAB same as previous

C-M-i same as previous

C-[ C-i same as previous

RET follow link

l back to last visited page

r forward to last visited page

C-v scroll down

SPC scroll down

M-v scroll up

DEL scroll up

b scroll up

n next node

p previous node

i search current manual’s index

i RET go to index node

M-x info-apropos search all indices

s <PATTERN> search forward for regular expression PATTERN

S <PATTERN> case-insensitive search for regular expression PATTERN

C-s <SEARCH> forward to SEARCH (see “search” below)

C-r <SEARCH> reverse to SEARCH

M-n make a duplicate buffer in other window (see “window” below)

M-x clone-buffer same as previous

c kill current node name as copy

w same as previous

M-0 c kill current node name as Lisp expression

M-0 w same as previous

minibuffer

M-p previous input

M-n recent input

TAB complete name of buffer, file, symbol (see “completion” below)

C-i same as previous

M-r <REGEXP> RET search previous input backward with REGEXP

M-s <REGEXP> RET search for previous input forward with REGEXP

M-r RET search previous input backward again

M-s RET search for previous input again

C-h e show recently echoed messages

C-g exit

completion

TAB complete name of buffer, file, function, variable, …

SPC completion, unless a file

C-q SPC insert space without completion

? list completions

M-v go to “completions” buffer

<right> next completion

<left> previous completion

RET select completion

ESC ESC ESC exit back to minibuffer

C-[ C-[ C-[ same as previous

mode

C-h m help with current (see “help” above)

M-x text-mode for writing

M-x fundamental-mode a simple default

M-x normal-mode change back to what Emacs thought it was

M-x customize-mode customize current (see “customize” above)

M-x add-file-local-variable-prop-line RET mode RET add to top of file

file

C-x C-f open

C-x C-f new

C-x C-f .. <file> RET open in parent directory

C-x C-f / <file> RET open from root directory

C-x C-f *.c RET open all C sources in current directory

M-x make-directory RET RET including parent directories

C-x C-v close current and open another

C-x C-s save

C-x C-w RET save even if buffer is unchanged

C-u M-~ C-x C-s same as previous (see M-~ below)

C-x s prompt to save any buffer that has been modified

C-u C-x s save any buffer that has been modified with no questions

C-x C-f M-p RET open previously saved or opened

C-x C-w <PATH> RET save current to PATH

C-x C-w <DIRECTORY> RET save to DIRECTORY using file or buffer name

M-~ mark buffer as unmodified

C-u M-~ mark buffer as modified

C-x C-q toggle as read only

C-x C-f archive.tar RET list contents of archive

C-x C-f file.gz RET open compressed Gzip

C-x C-f file.zip RET list contents of ZIP

M-x rename-file RET <FILE> RET <NEW> rename current

M-x rename-file RET RET <NAME> RET rename current to NAME

M-x rename-file RET RET <NAME> RET rename current to NAME

M-x delete-file RET <NAME> RET delete NAME

M-x view-file (see “read only” below)

M-x find-file-literally open in basic mode with no conversions

<insert> toggle between overwrite mode and insert mode

M-x overwrite-mode same as previous

M-x binary-overwrite-mode edit as literal bytes

C-x d M-p RET R rename previously saved or opened

C-x i insert other into current buffer

M-x write-region save region (see “region” below)

C-x h M-x write-region save buffer once to alternate

M-x append-to-file save region to other (see “region” below)

M-x set-visited-file-name set buffer to alternate

M-x set-file-modes set permissions of current

M-x find-file-at-point open name at point

M-x revert-buffer restore buffer from disk

C-x C-v RET same as previous

C-x C-f M-n RET same as previous

C-x C-f M-n ~ RET open backup

C-u C-x C-s save and make it the next backup

C-0 C-x C-s save without making a backup

C-u C-u C-x C-s backup previous then save

C-u C-u C-u C-x C-s backup previous, save, make it the next backup

M-x recover-file recover auto-save data after a crash

M-x recover-session recover using auto-save data

M-x size-indication-mode show size in mode line

M-x auto-revert-mode update with changes on disk

M-x global-auto-revert-mode update with changes for any buffer

M-x auto-revert-tail-mode update end of buffer with changes on disk

M-x highlight-changes-mode use color overlays for tracking edits

M-x add-name-to-file make link

M-x make-symbolic-link make symbolic link

M-x unix-sync flush changes in file system to disk

buffer

M-< beginning

M-> end

M-5 M-< go to half way

M-1 M-< go to 10 percent

M-9 M-< go to 90 percent

C-u C-SPC go back (see “mark” below)

C-x h mark

M-> M-< same as previous

C-x k <BUFFER> RET kill BUFFER

C-x k RET kill current

M-x kill-some-buffers ask to kill each and all

M-x clean-buffer-list automatically kill old buffers

M-x customize-group RET midnight RET schedule daily cleanup

C-x b RET switch to last buffer

C-x b <BUFFER> RET switch to BUFFER or make new BUFFER

C-x 4 b switch to a buffer in other window (see “window” below)

C-x 4 C-o show a buffer in other window (see “window” below)

C-x 4 0 kill current and close window (see “window” below)

C-u M-x quit-window same as previous

C-x C-b list all (see “buffer menu” below) in other window

M-x buffer-menu list in current window

M-x buffer-menu-other-window list in other window and select it

M-x bury-buffer avoid switching to current buffer and switch to last

M-x unbury-buffer undo last bury

C-x b M-p M-p RET switch to previously switched buffer

C-x C-<right> bury buffer and switch to next buffer

C-x C-<left> switch to previously buried buffer

C-x C-s save current contents to file on disk

M-x rename-buffer RET <NAME> rename current to NAME

M-x rename-uniquely remove “<X>” suffix from buffer name if possible

M-x revert-buffer restore contents with file on disk (see “undo” below)

C-x C-v RET same as previous

M-x insert-buffer copy all of another to point in current

M-x append-to-buffer copy region to other (see “region” below)

M-x copy-to-buffer overwrite BUFFER with region (see “region” below)

M-x enable-command RET erase-buffer RET permanently enable

M-x erase-buffer delete everything (see “delete” below)

M-x clone-indirect-buffer open an indirect buffer based on current

C-x 4 c open an indirect buffer but in another window

C-h f car RET C-x o M-x clone-buffer RET C-h f cdr RET compare two functions

M-x highlight-compare-buffers show differences with color

read only

C-x C-r <FILE> RET open FILE as read only

C-x C-q toggle write status

M-x view-mode view mode for current buffer

M-x view-buffer RET RET view mode for other buffer

M-x view-file <FILE> RET open FILE in view mode

M-x view-buffer RET <BUFFER> RET view mode for BUFFER

SPC scroll down

DEL scroll up

h view mode help

q turn off view mode

M-x normal-mode turn off view mode

window

C-v scroll down

M-v scroll up

C-1 C-v scroll down one line

M-1 M-v scroll up one line

C-M-v scroll other window down

C-[ C-v same as previous

M-< beginning of buffer

M-> end of buffer

M-x beginning-of-buffer-other-window beginning of other buffer

M-x end-of-buffer-other-window end of other buffer

M-r move to first column of center line in display

M-0 M-r move to first column of first displayed line

M-- M-r move to first column of last displayed line

M-4 M-r move to first column of fourth displayed line

C-u - 3 M-r move to first column of third to last displayed line

C-x 2 split vertically in two

C-x o switch between windows

C-x 4 b switch to a buffer in other window

C-x 4 C-o show a buffer in other window

C-x 0 close current

C-x 1 close all others leaving current

ESC ESC ESC same as previous

C-x 4 C-f open file in other

C-x 4 f open file in other

C-x - shrink to fit text

C-x + equalize window heights

C-x 4 C-h list all commands starting with C-x 4

C-x ^ enlarge window by 1 line

C-u 5 C-x ^ enlarge window 5 lines

M-- 5 C-x ^ shrink window 5 lines

C-x 3 split horizontally

C-u 5 C-x } enlarge window 5 columns wider

C-5 C-x { shrink window 5 columns narrower

C-x < scroll horizontally right

C-x > scroll horizontally left

M-x toggle-truncate-lines change if long lines fold or are truncated

M-x compare-windows compare buffers starting at point of both

C-x z continue comparing

z continue comparing more (see “diff” below)

M-x highlight-compare-buffers use color to show all differences

buffer menu

C-x C-b list

M-x buffer-menu list in current window

M-x buffer-menu-other-window list in other window and select it

C-u C-x C-b list only buffers associated with files

SPC move down

n move down

C-n move down

p move up

C-p move up

% toggle current as read only (see “read only” above)

? show modes for current

g update list

M-x auto-revert-mode automatically update list every 5 seconds

T toggle list to buffers associated with files

C-o view current in other window (see “window” above)

RET view current in this window

e go to current in this window

f go to current in this window

1 go to current in only 1 window

2 go to current in only 1 window

V open current buffer in View mode (see “read only” above)

b bury current (see “buffer” above)

m mark current and move down

C-d mark to delete current and move up

d mark to delete current and move down

k mark to delete current and move down

C-k mark to delete current and move down

x execute marks

M-2 M-x Buffer-menu-sort sort by name

M-3 M-x Buffer-menu-sort sort by size (ascending)

M-4 M-x Buffer-menu-sort sort by mode

M-5 M-x Buffer-menu-sort sort by file name

M-x Buffer-menu-sort sort by display time

q quit

redisplay

C-l with line at center of window

C-0 C-l with current line at top of window

C-- C-l with current line at bottom of window

M-- C-l same as previous

C-u -1 C-l same as previous

C-M-l try to make the top of the current function visible in the window

C-[ C-l same as previous

C-M-l C-M-l with current line at top of window

command

M-x execute

ESC x M-x

C-[ x M-x

M-x execute-extended-command M-x

M-x M-p previously executed

M-n next

M-x TAB complete name of command (see “completion” above)

M-x ? list completions in other window

M-x forward TAB list completions starting with “forward”

M-x *line TAB list completions containing “line”

M-x M-r <REGEXP> search backward

M-x M-s <REGEXP> search for previously executed

C-h l show recently typed keys

C-h e show recently echoed messages

C-x z repeat last

C-x M-ESC edit and re-evaluate last as Emacs Lisp

C-x ESC ESC same as previous

C-x C-[ C-[ same as previous

C-x M-: same as previous

M-x disable-command ask before running

M-x enable-command run without asking

M-x command-history show recently run commands

x execute command at line in history

iterative command

C-u repeat next command 4 times

M-- next command once in opposite direction

C-- next command once in opposite direction

C-u 8 repeat next command 8 times

M-8 repeat next command 8 times

C-8 repeat next command 8 times

C-u 8 C-u repeat next command 8 times

C-8 repeat next command 8 times

C-u 13 repeat next command 13 times

M-1 M-3 repeat next command 13 times

M-1 3 repeat next command 13 times

C-1 C-3 repeat next command 13 times

C-1 3 repeat next command 13 times

C-u 13 C-u 1 insert 13 ones

M-- 3 repeat next command 3 times in opposite direction

C-- 3 repeat next command 3 times in opposite direction

C-u -3 repeat next command 3 times in opposite direction

C-u C-u repeat next command 16 times

C-u C-u C-u repeat next command 64 times

C-u 369 C-u 0 insert 369 zeros

M-3 M-6 M-9 C-u 0 insert 369 zeros

M-3 6 9 C-u 0 insert 369 zeros

non-iterative command

C-u toggle behavior of next command

M-- toggle behavior of next command with negative value

macro

C-x ( start recording

F3 same as previous

C-x ) finish recording

F4 same as previous

C-x e finish recording and run what was just recorded

C-x e run last again

C-x e e run last twice

M-3 C-x e run last 3 times

C-0 C-x e run last infinite times until error

M-0 C-x e same as previous

C-x C-k r go to each line in region and run last iteratively

C-x C-k C-i insert counter and increment

C-x C-k C-c set counter

F3 F3 RET F4 F4 F4 F4 insert numbers 0 through 3 one-per-line

C-x ( C-x C-k C-i RET C-x e e e same as previous

F3 C-u 2 F3 RET F4 F4 F4 F4 insert evens 0 through 6 one-per-line

C-x ( C-2 C-x C-k C-i RET C-x e e e same as previous

C-x ( C-2 C-x C-k C-i RET C-x e e e same as previous

C-x C-k C-c 1 RET F3 F3 RET F4 F4 F4 F4 insert numbers 1 through 3

C-x C-k C-c 1 RET C-x ( C-x C-k C-i RET C-x e e e same as previous

C-a C-SPC C-3 C-n C-x r N same as previous (see “rectangle” below)

C-S-DEL F3 C-y C-9 F4 duplicate line 9 times

C-S-DEL C-x ( C-y C-9 C-x e duplicate line 10 times

C-u C-x e run last and append more commands

C-u F3 same as previous

C-x C-k C-d delete current macro from ring

C-x C-k C-p switch to previous macro in ring

C-x C-k C-n switch to next macro in ring

C-x C-k e C-x e edit current

C-x C-k C-e same as previous

C-x C-k n <NAME> give current NAME

M-x <NAME> run NAME

C-x C-k b 1 bind current to C-x C-k 1

C-x C-k b A bind current to C-x C-k A

C-x C-k b C-c 1 bind current to C-c 1

C-x C-k b C-c a bind current to C-c a

M-x <NAME> run NAME

C-x C-k e M-x <NAME> edit NAME

C-x C-k e C-h l make recently typed keys and edit

C-x C-k l same as previous

C-c C-q <KEY> insert key in editor

^X insert C-x in editor

<<COMMAND>> insert M-x COMMAND in editor

3 * R E T insert 3 newlines in editor

3 * ^ M same as previous

3 * <<newline>> same as previous

3 * L F D same as previous

C-a ;; delete line in editor

C-a REM same as previous

C-a C-k same as previous

C-a ;;; comment line in editor

C-c C-c save edits

C-x C-f ~/.emacs RET M-x insert-kbd-macro RET <NAME> RET save NAME

C-x C-f ~/.emacs RET M-x insert-kbd-macro RET RET save last

C-x C-k SPC run one step at a time

SPC run current command

y same as previous

TAB run current and consecutive similar commands

f skip command

n skip and delete from macro

d same as previous

DEL same as previous

C-k skip current and delete rest of macro

q quit

C-g same as previous

I insert one key

i insert series of keys

R replace current key

r replace current key with series of keys

A append to end of macro

a append after current key

key

C-h l show recently typed keys

M-x global-set-key set for all buffers

M-x global-unset-key remove binding for all buffers

M-x local-set-key define binding for current buffer

M-x local-unset-key remove binding for current buffer

C-q insert next character literally

C-q TAB insert literal tab character

C-q C-j insert literal newline

C-q C-m insert literal carriage return

C-q C-l insert literal form feed (page delimiter)

C-x @ c modify next key with Control

C-x @ m modify next key with Meta

C-x @ S modify next key with Shift

C-x @ h modify next key with Hyper

C-x @ s modify next key with Super

C-x @ a modify next key with Alt

C-x @ C-h list bindings starting with C-x @

C-x @ c C-x @ m modify next key with Control and Meta

C-x @ c C-x @ m C-x @ h modify with Control, Meta and Hyper

C-x C-h list bindings starting with C-x

C-c C-h list bindings starting with C-c

C-x 4 C-h list bindings starting with C-x 4

C-x 5 C-h list bindings starting with C-x 5

C-x 8 C-h list bindings starting with C-x 8

C-h 4 C-h list bindings starting with C-h 4

C-x ESC C-h list bindings starting with C-x M-

C-x C-[ C-h same as previous

M-: (describe-bindings "\e") RET list bindings starting with ESC

M-x global-unset-key ESC C-h ESC C-h same as previous

ESC ESC C-h list bindings starting with M-ESC

C-[ C-[ C-h same as previous

M-g C-h list bindings starting with M-g

M-o C-h list bindings starting with M-o

undo

C-x u undo, repeat to further undo

C-_ undo, repeat to further undo

C-/ undo, repeat to further undo

C-/ C-g C-/ undo, then redo

C-/ C-/ C-g C-/ C-/ undo, undo, then redo, redo

M-x revert-buffer restore buffer with file on disk

C-x C-v RET same as previous

M-x buffer-disable-undo turn off for current buffer

M-x buffer-enable-undo turn on for current buffer

search

C-s <MATCH> forward to end of MATCH

C-r <MATCH> reverse to front of MATCH

C-h k C-s help

C-s C-h m same as previous

C-s C-h b show key bindings

C-r C-s <MATCH> forward to end of MATCH

C-s C-r <MATCH> reverse to front of MATCH

C-s <MATCH> C-s forward to end of second MATCH

C-r <MATCH> C-r reverse to front of second MATCH

DEL if not at first match, go to previous match

DEL if at first match, delete character from search string

C-M-w always delete character from search string

C-[ C-w same as previous

C-s <MATCH> C-s C-r forward to start of second MATCH

C-r <MATCH> C-r C-s reverse to end of second MATCH

C-s <MATCH> C-s C-s DEL forward to end of second MATCH

C-r <MATCH> C-r C-r DEL reverse to start of second MATCH

RET finish search

C-g cancel search if current search is successful

C-g undo search to last successful search

C-s C-j search for newline

C-s C-q C-m search for carriage return

C-s C-M-y search for current character

C-s C-[ C-y same as previous

C-s C-M-y C-M-y search for next two characters

C-s C-M-y C-M-y DEL search for current character

C-s C-w search for rest of current word

C-s C-w C-w search for next two words

C-s C-w C-w DEL search for rest of current word

C-s M-s C-e search for rest of current line

C-s M-s C-e DEL undo search for rest of current line

C-s C-y search for last killed text (see “kill” below)

C-s M-y search for second to last killed text (see “kill” below)

C-s M-p show previous search

C-s M-n show oldest stored search

C-s M-TAB <BEGINNING> complete for BEGINNING of stored searches

C-s C-M-i same as previous

C-s C-[ C-i same as previous

C-s C-s resume last search backward

C-r C-r resume last search forward

M-e edit search

M-r toggle regular expression search (see “regular expression” below)

M-c toggle case-sensitivity of search

M-s w toggle word-based search

M-% search, query, and replace (see “replace” below)

C-s <SEARCH> M-% <REPLACE> interactive query SEARCH and REPLACE

C-u M-% query replace by word

M-x isearch-toggle-case-fold change case-sensitivity of all searches

non-interactive search

C-s RET forward case-sensitive

C-r RET backward case-sensitive

M-x word-search-forward ignoring punctuation and whitespace

M-x word-search-backward ignoring punctuation and whitespace

regular expression

C-M-s search forward

C-[ C-s same as previous

C-u C-s same as previous

C-s M-r same as previous

C-M-r search reverse

C-[ C-r same as previous

M-r toggle off regular expression syntax

C-M-s C-s repeat last regular expression forward

C-M-r C-s repeat last regular expression backward

C-r suspend replacement and editing buffer (see “recursive edit” above)

C-M-c resume query and replace

C-[ C-c same as previous

C-M-% regular expression replace

C-M-s <SEARCH> M-% <REPLACE> interactive query replace (see “replace” below)

M-x occur show matches in buffer (see “occur” below)

M-s o same as previous

M-s o same as previous

M-x how-many count matches after point

M-x count-matches same as previous

M-x flush-lines delete matching lines to end of buffer

M-x keep-lines keep matching lines delete the rest to end of buffer

M-s h r highlight all matches in buffer

M-s h l highlight all lines matching

M-s h p highlight phrase

M-s h u un-highlight

replace

M-% search, query, and replace

C-M-% search regular expression, query, and replace

C-[ C-% same as previous

M-% RET resume last

C-M-% RET resume last as regular expression

C-s <SEARCH> M-% <REPLACE> interactive

C-M-s <SEARCH> M-% <REPLACE> interactive with regular expression

y replace one and go to next

SPC same as previous

, replace but don’t move

n skip

DEL same as previous

^ previous

! replace all

e edit replacement

C-r suspend to edit buffer (see “recursive edit” above)

C-w delete match and suspend to edit buffer

C-M-c finish edit and resume

C-[ C-c same as previous

RET stop

q stop

C-x d *.c RET Q int RET long replace “long” for “int” in .c files

delete

C-d current character

C-u C-d next 4 characters

C-u 8 C-d next 8 characters

C-u C-u C-d next 16 characters

DEL character backwards (backspace)

M-- C-d same as previous

C-u C-u C-u DEL previous 64 characters

C-5 DEL previous 5 characters

M-1 0 DEL previous 5 characters

M-x delete-region region

M-x enable-command RET erase-buffer RET permanently enable

M-x erase-buffer entire buffer

M-x flush-lines RET RET all lines including current to end of buffer

kill (cut)

C-SPC C-f C-w character (see “character” below)

C-1 C-d same as previous

C-1 DEL character backwards

C-- C-d same as previous

M-d word (see “word” below)

C-k to end of line (see “line” below)

C-0 C-k beginning of line

C-S-DEL entire line

C-1 C-k line including newline

M-- C-k to beginning of previous line

C-u C-k next 4 lines

M-k sentence (see “sentence” below)

C-w region (see “region” below)

M-w region but don’t delete (copy)

M-d word (see “word” below)

C-DEL word backwards

M-DEL word backwards

C-M-k sexp (see “sexp” below)

C-[ C-k same as previous

C-M-DEL sexp backwards

C-[ C-DEL same as previous

C-x DEL sentence backwards (see “sentence” below)

M-x kill-paragraph paragraph (see “paragraph” below)

M-x backward-kill-paragraph paragraph backwards (see “paragraph” below)

C-M-w append to next

C-[ C-w same as previous

C-M-w C-w region appending to previous

C-M-w M-w region appending to previous, but don’t delete (copy)

C-M-w C-k line appending to previous

C-M-w M-d word appending to previous

C-M-w M-k sentence appending to previous

C-M-w M-x kill-paragraph paragraph appending to previous

C-M-w C-M-k sexp appending to previous

C-M-w C-M-DEL sexp backward appending to previous

M-z delete everything to a character

M-1 M-z same as previous

M-- M-z delete everything to a character backwards

C-u -1 M-z same as previous

C-u 3 M-z delete everything to 3rd occurrence of a character

yank (paste)

C-y the last kill sequence

C-y the last kill sequence

C-y M-y the 2nd to last kill sequence

C-2 C-y same as previous

C-w C-y M-y replace region with last kill

C-u C-y the last kill sequence with point at beginning

mark

C-SPC set at current point

C-@ set at current point

C-x C-x toggle between current point and mark

C-u C-SPC move to last set mark in current buffer

C-u C-@ move to last set mark in current buffer

C-x C-SPC move to last set mark in any buffer

C-x C-@ move to last set mark in any buffer

C-x h buffer

M-> M-< same as previous

M-@ word

M-h paragraph

M-x mark-end-of-sentence sentence

C-M-h function

C-[ C-h same as previous

C-x C-p page separated by form feed

C-M-@ sexp (see “sexp” below)

C-[ C-@ same as previous

C-M-SPC sexp

C-[ C-SPC same as previous

region

C-SPC set end-point of region (see “mark” above)

C-@ set end-point of region

C-w kill (see “kill” above)

M-w kill but don’t delete (copy)

M-= count lines, words and characters

M-x enable-command RET narrow-to-region RET permanently enable

C-x n n narrow

C-x n w widen

M-x delete-region delete

M-x write-region RET <FILE> save to FILE

M-x append-to-buffer RET <BUFFER> copy to point in BUFFER

M-x append-to-file RET <FILE> save to end of FILE

M-x copy-to-buffer RET <BUFFER> RET copy and overwrite BUFFER

text register

C-x r s a store region to “a” key

C-u C-x r s a kill region to “a” key

C-x r i a insert region stored to “a” key

C-x r r a store rectangle to “a” key (see “rectangle” below)

point register

C-x r SPC a store current to “a” key

C-x r j a move to point to “a” key

window register

C-x r w a store configuration of windows in frame

C-x r j a restore window configurations

number register

C-u 1 C-x r n a store 1 to “a” key

C-u 1 C-x r + a add 1 to number to “a” key

C-x r i a insert number to “a” key

bookmark register

C-x r m RET save default

C-x r m <NAME> RET save as NAME

C-x r b RET move to default

C-x r b <NAME> RET move to NAME

C-x r l list

M-x bookmark-save save all to file

whitespace

SPC insert space

TAB indent or insert tab (see “indent” below)

C-q TAB insert literal tab character

C-q C-l insert page separator

C-q 0 RET insert null

M-SPC remove all whitespace at point except one space

M-\ remove all whitespace around point

C-u M-\ remove whitespace before point

C-SPC M-m C-w remove whitespace after point

M-x delete-trailing-whitespace remove at end of all lines in buffer

C-a C-0 C-M-\ remove leading for all lines in region

C-x h C-0 C-M-\ remove all leading in lines buffer

M-x whitespace-mode display whitespace visually

M-x whitespace-toggle-options configure Whitespace Mode

indent

TAB line with mode-specific rules

C-i same as previous

C-u TAB line and (for supported modes) expression on subsequent lines

C-u C-i same as previous

M-m go to indentation at beginning of line

M-o M-s center line

C-M-\ region with mode-specific rules

C-[ C-\ same as previous

C-x h C-M-\ C-u C-SPC buffer

C-x h C-M-\ C-u C-SPC buffer

M-h C-M-\ C-u C-SPC paragraph

C-M-h C-M-\ C-u C-SPC defun

C-x C-p C-M-\ C-u C-SPC page

C-M-SPC C-M-\ C-u C-SPC sexp

C-u C-M-\ region to 4 columns

C-SPC C-a C-u C-M-\ line to 4 columns

C-x h C-u C-M-\ buffer to 4 columns

C-x TAB region by one column more

C-SPC C-a C-x TAB line by one column more

C-a SPC same as previous

C-u C-x TAB region by 4 columns more

C-u 8 C-x TAB region by 8 columns more

C-u - 2 C-x TAB region by 2 columns less

C-x h C-u C-x TAB insert 4 columns for all lines in buffer

C-x h C-0 C-M-\ remove from all in lines buffer

M-x tabify convert spaces in region to tabs

M-x untabify convert tabs in region to spaces

M-x set-variable RET indent-tabs-mode RET nil RET always insert spaces

M-i indent to tab stop

M-x edit-tab-stops configure stops

: insert a stop

SPC remove a stop

C-c C-c save stops

M-^ remove and merge line with previous

C-a C-u M-x indent-to indent line to 4th column

newline

RET one

C-m one

C-j one and indent

C-o one below current and indent

M-x reindent-then-newline-and-indent indent current and indent next

C-q C-j literal newline

C-q C-m insert literal carriage return

C-M-o keep text following point at same column

C-[ C-o same as previous

C-u 3 RET three

C-u 3 C-m three

C-u 3 C-j three and indent

C-u 3 C-o three below current and indent

C-u C-M-o move text following point at same column without fill prefix

line

C-n next

C-p previous

C-a beginning

M-g g go to

M-g M-g go to

C-u M-g g in last buffer go to

C-u M-g M-g in last buffer go to

C-e end

C-k kill to end

C-0 C-k kill to beginning

C-a C-k kill from beginning to end

C-S-DEL kill from beginning to end including newline

C-a C-k C-k same as previous

C-1 C-k kill to end including newline

C-u C-k kill next 4

C-2 C-k kill next 2

M-- C-k kill to beginning of previous

M-^ merge current line with previous

C-u M-^ merge next line with current

C-n M-^ same as previous

C-o insert new after current and indent (see “newline” above)

C-M-o keep text following point at same column (see “newline” above)

C-[ C-o same as previous

C-x C-o when not empty line, remove all empty lines below current

C-x C-o when only empty line, remove all empty lines

C-x C-o when empty, remove all but one empty lines

M-= count lines in region

C-x l count lines in page

C-x h M-= C-u C-SPC count lines in buffer

C-SPC M-> C-x C-x M-= count lines from point forward

M-> C-x C-x M-= same as previous

M-x what-line display number

C-x C-t transpose with previous

C-0 C-x C-t swap with line of mark (see “mark” above)

M-x sort-lines alphabetically (see “sort” below)

M-x reverse-region reverse order in region

M-x occur show lines matches in buffer (see “occur” below)

M-x how-many count matches

M-x flush-lines delete matches to end of buffer

M-x flush-lines RET RET delete all lines after point

M-x keep-lines keep matches to end of buffer, delete the rest

C-SPC C-SPC C-2 C-SPC M-x keep-lines keep matches in region, delete rest

C-a C-SPC C-e C-x n n narrow

C-x RET f unix RET change file to UNIX style line endings

C-x RET f dos RET change file to DOS

C-x RET f dos RET change file to Mac

C-x RET f utf-8 RET change file to UTF-8

M-x line-number-mode show line number in mode line

M-x toggle-truncate-lines change if long lines fold or are truncated

M-x toggle-word-wrap change if long lines are wrapped at word boundary

character

C-f forward

C-b backward

C-d delete (see “delete” above)

C-1 C-d kill (see “kill” above)

C-t transpose

C-x = information of current

C-u C-x = list properties of current in Help buffer

M-x describe-char same as previous

M-x goto-char RET <N> RET visit Nth character in buffer

M-x list-characters-sets list names of charsets

C-q 0 RET insert null

C-q SPC insert space

C-q 40 RET insert space using octal value 40

M-x set-variable RET read-quoted-char-radix 16 use hex for C-q

C-q 20 RET insert space using hex value 20

M-x set-variable RET read-quoted-char-radix 10 use decimal for C-q

C-q 32 RET insert space using decimal value 32

C-u 8 C-q 0 RET insert 8 null characters

C-u 8 C-u 0 RET insert 8 zeros

word

M-f forward

M-<right> same as previous

C-<right> same as previous

M-b backward

M-<left> same as previous

C-<left> same as previous

M-d kill forward

C-DEL kill backward

M-DEL kill backward

M-t transpose

M-@ mark

C-u 100 M-@ mark next 100

M-- 3 M-@ mark previous 3

M-< M-x how-many RET \w+ RET count for buffer

C-x h M-= same as previous

M-x modify-syntax-entry RET - w RET make hyphens word character

M-x modify-syntax-entry RET _ w RET make underscores a word character

capitalization

M-l lowercase next word

M-- M-l lowercase previous word

C-u M-l lowercase next 4 words

M-u uppercase next word

M-- M-u uppercase previous word

C-u 2 M-l uppercase next 2

M-c capitalize next

M-- M-c capitalize previous

C-u 2 M-c capitalize next 2

M-x enable-command RET downcase-region RET permanently enable

C-x C-l lowercase region

M-x enable-command RET upcase-region RET permanently enable

C-x C-u uppercase region

M-x capitalize-region capitalize region

sentence

M-a beginning

M-e end

M-x mark-end-of-sentence mark

M-k kill forwards to end

C-x DEL kill backwards to beginning

M-x transpose-sentences transpose

M-x repunctuate-sentences fix spaces forward with query and replace

paragraph

M-} forward

M-{ backward

M-h mark

M-q fill

C-u M-q fill and full justify

M-x fill-region fill all in region

M-x fill-region-as-paragraph fill all region together as one

M-x fill-individual-paragraphs fill region as separate

C-x f RET set fill column to current point

C-x f 72 RET set fill column to 72

C-u 72 C-x f same as previous

M-x backward-kill-paragraph kill to beginning

M-x kill-paragraph kill to end

M-{ M-x kill-paragraph kill entire

M-h C-w kill entire

M-h M-w kill entire but don’t delete (copy)

M-x transpose-paragraphs transpose

M-o M-S center

M-x set-justification-left justify region to the left

M-x set-justification-right justify region to the right

M-x set-justification-full justify region to full width

M-x set-justification-center justify region to the center

M-x set-justification-none unjustify region

M-x sort-paragraphs alphabetically

C-u M-x sort-paragraphs in reverse

M-x paragraph-indent-text-mode expect leading space rather than empty lines

M-x auto-fill-mode automatically fill at the end of the line

M-x refill-mode automatically fill entire paragraph after each edit

M-x use-hard-newlines distinguish intentional newlines from filling

C-x TAB increase left margin of region by one column

C-u C-x TAB increase left margin of region by 4 columns

C-u 8 C-x TAB increase left margin of region by 8 columns

C-u - 2 C-x TAB decrease left margin of region by 2 columns less

M-x increase-left-margin add 4 columns to current paragraph

M-x decrease-left-margin remove 4 columns to current paragraph

C-x . set text to beginning of line as fill prefix

C-M-\ add the fill prefix in region

C-[ C-\ same as previous

M-m C-x . set indentation as fill prefix

C-a C-x . reset fill prefix

page

C-q C-l insert separator

C-x ] forward

C-x [ backward

C-x l count lines

C-x C-p mark

C-x n p narrow

C-x n w widen

M-x sort-pages alphabetically

M-x what-page display number

sexp (parenthetical expressions)

M-( insert opening and closing parentheses

M-) reindent current and start new line past closing parenthesis

C-M-f move to the next

C-[ C-f same as previous

C-M-<right> same as previous

C-M-b move backward

C-[ C-b same as previous

C-M-<left> same as previous

C-M-d move down into the expression

C-[ C-d same as previous

C-M-<down> same as previous

C-M-u move up from current and to beginning of outside

C-[ C-u same as previous

C-M-<up> same as previous

M-x up-list move up from current and to end of outside

M-- C-M-u same as previous

C-M-k kill

C-[ C-k same as previous

C-M-DEL kill backward

C-[ C-DEL same as previous

C-M-@ mark

C-[ C-@ same as previous

C-M-t transpose

C-[ C-t same as previous

M-x check-parens match all open and closed parentheses in buffer

function

C-M-a go to beginning

C-[ C-a same as previous

C-M-e go to end

C-[ C-e same as previous

C-M-h mark current

C-[ C-h same as previous

C-M-h C-M-\ C-u C-SPC indent current

C-M-x evaluate current (see “emacs lisp” below)

C-[ C-x same as previous

C-x n d narrow

C-x n w widen

comment

M-; new

M-; indent

C-u M-; kill current

C- M-; kill current

C-SPC set end point of region

M-x comment-region region

M-x uncomment-region remove comment characters in region

C-x C-x M-; region, or uncomment if already

C-x ; set to start at point

M-- C-x ; kill on this line

C-u C-x ; insert and align or just align to column on previous line

M-j if within one, continue on next line and indent

C-M-j same as previous

C-[ C-j same as previous

M-x comment-box surround region

M-^ merge current line with previous

C-u M-^ merge next line with current

C-n M-^ same as previous

occur

M-x occur list matching lines for regular expression

M-s o same as previous

C-x n n M-x occur show matches in region (see “region” above)

C-u 3 M-x occur show matches with 3 lines of context

C-u - 3 M-x occur show matches with 3 lines before match

? help

h same as previous

RET go to current match

C-c C-c same as previous

o same as previous

C-o show current match in other window

n next match

p previous match

g update list of matching lines

c keep Occur buffer around by cloning

r keep Occur buffer around by renaming

q quit

z quit and kill buffer

e edit buffer from Occur buffer

transpose

C-t characters (see “character” above)

M-- C-t previous with its previous

C-u 3 C-t forward 3 characters

C-u C-t forward 4 characters

M-- 3 C-t backward 3 characters

C-u C-t backward 4 characters

M-t words (see “word” above)

C-x C-t lines (see “line” above)

M-x transpose-paragraphs paragraphs (see “paragraph” above)

M-x transpose-sentences sentences (see “sentence” above)

C-M-t parenthetical expressions (see “sexp” above)

column

M-0 M-x move-to-column move to first column

M-x move-to-column move to second column

M-7 M-x move-to-column move to column 8

M-x column-number-mode show column number in mode line

M-x enable-command RET set-goal-column RET permanently enable

M-r move to beginning of center line of window (see “window” above)

C-x C-n set column for line motion commands

C-u C-x C-n unset goal column for line motion commands

M-x ruler-mode add a ruler to the current buffer’s window

rectangle

C-x r M-w copy rectangle as kill

C-x r d delete, no kill

C-x r k kill

C-x r y yank

C-x r c convert to whitespace

C-x r o insert whitespace

C-x r t <STRING> replace each line with STRING

M-x string-insert-rectangle insert STRING at each line

M-x delete-whitespace-rectangle remove leading whitespace

M-x delete-whitespace-rectangle remove leading whitespace

C-x r r a store to register “a”

C-x r N number region starting at 1

C-u C-x r N 10 RET %03d SPC RET number region starting with 010

table

M-x table-insert insert

M-x table-recognize-table activate mode at point

M-x table-unrecognize-table deactivate mode at point

TAB forward cell

S-TAB backward cell

C-u M-x table-recognize-table inactivate table at point

C-u 3 M-x table-insert-column insert 3 columns

C-u 3 M-x table-delete-column delete 3 columns

C-u 3 M-x table-insert-row insert 3 rows

C-u 3 M-x table-delete-row delete 3 rows

C-> widen column at point

C-< narrow column at point

C-} heighten row at point

C-{ shorten row at point

C-: justify text in cell

C-| split cell

C-c C-c * merge cell

M-x table-sequence insert sequence of characters or numbers

M-x table-capture RET C-q C-i RET C-q C-j RET RET RET convert tab delimited region

M-x table-generate-source convert to HTML or LaTeX

M-x table-recognize activate mode for all

M-x table-unrecognize deactivate mode for all

delimited text

M-x delimit-columns-customize change settings

M-x delimit-columns-rectangle format rectangle (see “rectangle” above)

M-x delimit-columns-region format region

align

C-u M-x align by guessing separator

M-x align-current on entire “section”

M-x align-regexp based on regular expression

C-u M-x align-regexp ask for grouping, number of spaces and repeating

sort

M-x sort-lines lines alphabetically in region

C-u M-x sort-lines in reverse

C-3 M-x sort-fields region alphabetically by 3rd word in each line

M-x sort-numeric-fields region numerically by 3rd number in each line

M-x sort-columns lines alphabetically for column between point and mark

C-u M-x sort-columns in reverse

M-x sort-paragraphs paragraphs alphabetically (see “paragraph” above)

C-u M-x sort-paragraphs in reverse

M-x sort-pages pages alphabetically (see “page” above)

M-x sort-regexp-fields records alphabetically by key in region

directory (folder)

M-x cd change working

M-x make-directory RET <PATH> RET make PATH including any missing parents

M-x delete-directory RET <NAME> RET delete NAME

M-x copy-directory RET <NAME> RET delete NAME

M-x rename-file RET RET <NAME> RET rename current to NAME

C-x d RET list current

C-x C-f RET same as previous

C-x 4 d RET list current in other window (see “window” above)

C-x d .. RET list parent

C-x C-f .. RET same as previous

C-x C-d RET ^ same as previous

C-x C-d RET C-x C-j same as previous

C-x d <PATH> RET list PATH

C-x C-f <PATH> RET same as previous

? help

? show recent errors

M-x dired-jump RET RET go to listing of current file

> go to next

< go to previous

n next file

p next file

j move to file in listing

g reread the listing

s toggle sort by date

^ list parent

M-x dired-jump list parent

C-u s edit the command switches for the file list command

M-x auto-revert-mode automatically update list every 5 seconds

C-s search listings (see “search” above)

RET open file or directory

f same as previous

e same as previous

o open in other window

C-o display in other window

y show file type

+ add new

i show listing of current subdirectory

C-u s R RET show listings of all subdirectories, “fully recursive”

$ hide listing of current subdirectory

M-$ hide listing of all subdirectories

C-M-n go to next subdirectory listings

C-M-p go to previous subdirectory listings

C-x C-f <FILE> RET visit FILE (see “file” above)

! run command on current file

M o+r RET make current file world-readable

O <OWNER> RET change current file to OWNER

G <GROUP> RET change current file to GROUP

R <FILE> RET move current file to FILE

R M-n ~ RET add ~ to the end of current file’s name

C <FILE> RET copy current file to file

C M-n ~ RET make a tilde copy the current file

P RET send current file to default printer

P RET M-DEL a2ps print current file in Postscript

P SPC -P SPC <PRINTER> send current file to <PRINTER>

T touch current file

Z compress current file

H <FILE> RET hardlink current file to FILE

S <FILE> RET symlink current file to FILE

m mark current file

u unmark current file

DEL unmark current file and go to previous

t toggle marks

U unmark all files

* ! same as previous

A search marked

M-s a C-s same as previous

M-s a C-M-s search marked with regular expression

M-, find next match

w kill marked file but don’t delete

k hide marked files

C copy marked files to another directory

R move marked files to another directory

d mark current file for deletion

% d <PATTERN> mark files containing PATTERN for deletion

% & mark garbage files for deletion

##### mark auto-save files for deletion (see “file” above)

. delete numerical backups

D delete marked files

M-x wdired-change-to-wdired-mode manually edit listing with WDired

C-c C-c quit WDired and commit the edits made to the listing

C-c ESC cancel WDired

C-c C-[ same as previous

M-x find-name-dired RET <PATTERN> RET list file names matching PATTERN

M-x find-grep-dired RET <PATTERN> RET list files containing grep PATTERN

M-x find-lisp-find-dired RET <REGEXP> RET list files containing REGEXP

% g <PATTERN> mark files containing PATTERN

% m <PATTERN> mark file names matching PATTERN

* % same as previous

M-} go to next marked file

* C-n same as previous

M-{ go to previous marked file

* C-p same as previous

* * mark executables

* @ mark symlinks

* / mark directories

q quit

dired-x

M-x load-library RET dired-x RET load extra Dired functionality

* . mark extension

C-x C-j list parent

M-! smart shell command

M-x dired-do-relsymlink <FILE> RET relative symlink current file to FILE

Y <FILE> RET relative symlink current file to FILE

%Y <REGEXP> RET relative symlink files matching REGEXP to current file

F open marked files

V send file by email

M-o hide uninteresting files

M-G go to subdirectory listing in buffer

tramp

C-x C-f /HOST:DIR/FILE open FILE in DIR on remote HOST

C-x C-f /scp:HOST:DIR/FILE same but use secure copy (SCP)

C-x C-f /ssh:HOST:DIR/FILE same but demand the use of SSH

C-x C-f /ssh1:HOST:DIR/FILE same but demand version 1 of SSH

C-x C-f /HOST:DIR list contents of DIR on remote HOST

C-x d /HOST:DIR same as previous

M-x shell start a remote shell at HOST

spell check

M-$ word

M-x ispell-buffer buffer

M-x ispell-region region

M-x ispell-comments-and-strings words and comments in source file

q quit

M-x ispell-continue resume suspended session

M-r edit word at point in buffer (see “recursive edit” above)

C-M-c return to spell check by exiting recursive edit

C-[ C-c same as previous

4 use third suggested choice

0 use first suggested choice

? quick help

SPC continue

a accept for this session

A add to buffer local dictionary

r replace word with typed version

R replace every occurrence of word with typed version

X suspend

M-x ispell-change-dictionary change default dictionary

M-x flyspell-mode highlight misspellings as you type

M-x flyspell-prog-mode highlight misspellings in source code

M-x flyspell-buffer highlight existing misspellings

C-, next misspelling in buffer

C-. insert correction for current word from dictionary

C-. C-. choose second proposed correction for correct word

C-; propose correction for previous word from dictionary

C-; C-; use second proposed correction for previous word

C-c $ select correct word at or before point from a pop up menu

abbreviations

cpu C-x a i g computer RET define “cpu” as “computer”

computer C-3 C-x a g cpu RET same as previous

cpu C-x a e expand “cpu” to “computer”

cpu C-x a ' same as previous

cpu C-x ' same as previous

M-x abbrev-mode automatically expand

C-/ undo expansion

C-x a u undo last expand

super M-' cpu C-x ' insert “supercomputer”

C-x a i l define new mode-specific

C-x a C-l list all

C-x a C-e edit all

M-x expand-region-abbrevs expand in region

M-x write-abbrev-file save

M-x read-abbrev-file open

M-x kill-all-abbrevs delete all

composition

C-\ french-postfix RET set to French characters

C-\ disable input method, subsequent re-enables

C-h C-\ RET help with current input method

e ' insert a letter E acute

e ' ' insert a letter E and a quote character

a ` insert a letter A grave

e ` insert a letter E grave

u ` insert a letter U grave

a ^ insert a letter A circumflex

e ^ insert a letter E circumflex

i ^ insert a letter I circumflex

o ^ insert a letter O circumflex

u ^ insert a letter U circumflex

c , insert a letter C with cedilla

c , , insert a letter C and comma

e " insert a letter E umlaut

i " insert a letter I umlaut

u " insert a letter U umlaut

< < insert an open quotation mark

> > insert a closed quotation mark

C-x RET C-\ spanish-prefix RET change to Spanish characters

i ` insert a letter I grave

o ` insert a letter O grave

n ~ insert a letter N with tilde

C-x RET C-\ german-postfix RET change to German characters

a e insert a letter A umlaut

a e e insert the letters A and E, no umlaut

o e insert a letter O umlaut

o e e insert the letters O and E, no umlaut

u e insert a letter U umlaut

u e e insert the letters U and E, no umlaut

s z insert the ligature eszett

s z z insert the letters S and Z

coding

C-h C <SYSTEM> RET describe SYSTEM

C-h C RET describe current system

M-x list-coding-systems display coding systems

environment

M-x setenv <VAR> RET <VALUE> RET set VAR to VALUE in Emacs

M-x setenv <VAR> RET M-p edit current value of VAR

C-u M-x setenv <VAR> RET unset VAR

M-x getenv <VAR> RET show value of VAR

M-x getenv TAB show current variables

M-x list-processes list running processes in Emacs

M-x signal-process <PROCESS> RET <SIGNAL> send SIGNAL to any PROCESS

shell

M-! run command

C-u M-! insert output of command

C-SPC set end point of region

M-| send region to command

C-u M-| replace region with output of command

M-& run command in the background asynchronously

M-x shell new window

C-u M-x shell RET RET new buffer

C-u M-x shell RET <NAME> RET new buffer with NAME.

C-c C-a beginning of command line

C-c C-e go to command prompt and to the end of command

C-c C-e redisplay buffer so prompt is at bottom (see “redisplay” above)

C-c C-f forward command when looking at multi-command

C-c C-b backwards command when looking at multi-command

C-c C-w kill word backward (see “word” above)

M-DEL same as previous

C-c C-d send “end of file” to the process

C-c C-c send process interrupt

C-c C-z stop the process

C-c C-\ quit the process

C-c SPC add newline to command

C-q C-j same as previous

C-c C-l list command history

M-p previous command

M-n next command

M-r search history backward

C-c M-r next history match backward

C-c M-s history match forward

C-c C-r show beginning of output for last command

C-x C-w <FILE> RET save session transcript to FILE

C-c C-s <FILE> RET write output of last command to FILE

C-u C-c C-s <FILE> RET append output of last command to FILE

shell script

C-x C-f file.sh RET start a script named file.sh

M-x shell-script-mode use shell script mode for current buffer

M-x sh-mode same as previous

C-c : specify shell and insert header

C-c C-x run the script

C-M-x execute region

C-[ C-x same as previous

M-a beginning of command

M-e end of command

C-M-a beginning of function

C-[ C-a same as previous

C-M-e end of function

C-[ C-e same as previous

TAB indent

C-j newline and indent

C-c < use indentation level of current line

C-c > analyze buffer’s indentation and show inconsistencies

C-c = set indentation level for syntactic type at point

C-c ? show indentation level at point

C-c TAB insert if statement

C-c C-f insert for statement

C-c C-c insert case statement

C-c C-t insert syntax for temporary file

C-c ( insert syntax for function

executable

M-x executable-set-magic set interpreter command and arguments

M-x executable-self-display make file a command to display itself

M-x executable-interpret interpret current file

C-x ` go to next error

M-: M-( executable-find "COMMAND" RET find path for COMMAND

lisp

C-M-a beginning of defun

C-[ C-a same as previous

C-M-e end of defun

C-[ C-e same as previous

C-M-n forward list

C-[ C-n same as previous

C-M-p backward list

C-[ C-p same as previous

C-M-d down sexp (see “sexp” above)

C-[ C-d same as previous

C-M-u upward sexp

C-[ C-u same as previous

M-x up-list upward sexp and forward

M-( insert parens for sexp

C-M-t transpose sexp

C-M-SPC mark sexp

C-[ C-SPC same as previous

C-c C-z run interpreter

C-M-x eval expression at point

C-[ C-x same as previous

M-; insert new comment

C-u M-; kill current comment

C-x n d narrow to current defun

C-x n w widen

emacs lisp

C-x C-e evaluate expression before point

C-u C-x C-e evaluate expression and insert result at point

C-M-x evaluate current defun

C-[ C-x same as previous

M-: prompt for expression then evaluate

C-u M-: eval expression and insert result at point

TAB indent (see “indent” above)

C-i same as previous

C-u TAB indent line and expression for subsequent lines

C-u C-i same as previous

C-M-q indent expression after point

C-[ C-q same as previous

C-u C-M-q pretty print expression after point

M-TAB complete symbol at point

C-M-i same as previous

C-[ C-i same as previous

M-x eval-region evaluate expressions in region

M-x eval-buffer evaluate buffer

M-x load-file RET <FILE> RET load FILE

M-x load-file RET RET load current file

M-x load-libary load library

M-x locate-library path of library

M-x find-library <LIBRARY> go to LIBRARY

M-x locate-library RET TAB show all libraries on load-path

M-x apropos-libary RET <LIBRARY> RET list definitions in library

M-x list-load-path-shadows show library conflicts in load-path

C-h P describe library

C-h p find packages (see “finder” below)

M-x customize-set-variable permanently set a variable

M-x set-variable RET <VAR> RET <VALUE> RET temporarily set VAR to VALUE

M-x make-local-variable RET <VAR> RET scope VAR to current buffer

M-x kill-local-variable RET <VAR> RET make VAR global for current buffer

M-x byte-compile-file RET <FILE> RET byte compile current FILE

M-x byte-compile-file RET RET same as previous

M-x byte-recompile-directory byte compile every file, recursively

M-0 M-x byte-recompile-directory byte compile every file, recursively

M-x compile-defun byte compile defun

C-x ` go to source code for compile error (see “compile” below)

M-x find-function RET <FUNCTION> RET go to definition of FUNCTION

M-x find-function RET RET go to definition of function at point

M-x find-variable RET <VARIABLE> RET go to definition of VARIABLE

M-x find-variable RET RET go to definition of variable at point

M-x emacs-lisp-mode start Emacs Lisp mode if not started

M-x checkdoc validate coding style

M-x checkdoc-ispell and spell check comments and documentation strings

M-x toggle-debug-on-error enable debugger on error

M-x toggle-debug-on-quit enable debugger on quit

elisp interaction

M-x lisp-interaction-mode evaluate expressions interactively

C-j evaluate sexp before point and insert results on next line

C-M-x evaluate current defun (see “emacs lisp” above)

C-[ C-x same as previous

debug elisp

M-x toggle-debug-on-error change whether to start session on error

M-x toggle-debug-on-quit change whether C-g starts session

M-x debug-on-entry RET <FUNCTION> RET debug FUNCTION

h help

SPC move down

C-n move down

5 SPC move 5 down

- 2 SPC move 2 up

C-p move up

2 C-p backward 2 lines

TAB go up level in expression

S-TAB go down lower level

RET visit help or source location for thing at point

c complete evaluation level at current point

q quit

d step into

b set breakpoint

u unset breakpoint

j set breakpoint and continue

r prompt for return value then continue

e prompt for expression then evaluate

R prompt for expression then evaluate and record it

l list functions debugged on entry

M-x cancel-debug-on-entry <FUNCTION> RET don’t debug FUNCTION

M-x cancel-debug-on-entry RET RET don’t debug for any function

source-level debugger

M-x edebug-defun turn on instrumentation for current function definition

C-u C-M-x same as previous

C-M-x turn off instrumentation for current function definition

SPC step expression in source

C-x X SPC from any buffer, step into expression in source

t slowly step

T step fast

S stop stepping

n step to next expression

i step in

o step out

f step forward

r show last result again in minibuffer

b set breakpoint

u unset breakpoint

C-c C-d unset breakpoint

x <EXPRESSION> RET set conditional break on result of EXPRESSION

B move to next breakpoint

g continue until next breakpoint

B continue to next breakpoint

c continue to breakpoints slowly

C continue to breakpoints fast

S stop continuing

G stop debugging and finish

P visit buffer before running Edebug

v visit buffer before running Edebug

p momentarily visit buffer before running Edebug

w move back to current point in source

C-c C-l move back to current point in source

C-x X w from any buffer, move back to current point in source

? help

C-x X C-h list bindings starting with C-x X

e prompt for expression then evaluate

d show backtrace

= display frequencies in comments for each line for current function

a abort

C-] abort

q quit

C-x X q same as previous

Q quit

finder

C-h p list keywords

M-x finder-commentary RET <LIBRARY> RET describe LIBRARY

? help

n move down

p move up

RET for keyword at point, list Emacs Lisp libraries

RET for package at point, show commentary for Emacs

f same as previous

SPC same as previous

d back to beginning of package directory

q quit

C

C-h m help

M-x c-version version of mode

C-c C-s show syntax information of current point

C-c . gnu RET use gnu coding style

C-c . k&r RET use Kernighan and Ritchie coding style

C-c . linux RET use Linux kernel coding style

C-c . bsd RET use BSD coding style

M-x imenu-add-menubar-index add index menu to menu bar for current file

M-x compile run compiler (see “compile” below)

M-x recompile rerun compiler

M-x cwarn-mode highlight problematic syntax in current file

M-x global-cwarn-mode highlight problematic syntax for all source files

M-x cpp-highlight-buffer highlight preprocessor conditionals

M-x hide-ifdef-mode fold conditional preprocessor blocks

TAB indent

C-i indent

M-m go to indentation at beginning of line

C-j newline and indent

C-c C-l toggle automatic indentation with “electric” characters

C-c C-a toggle automatic newlines

C-c C-c comment region

C-u C-c C-c uncomment region

C-u 3 C-c C-c comment region with 3 asterisks

C-1 C-c C-c comment region

M-- C-c C-c remove 1 asterisks from comments in region

M-- 3 C-c C-c remove 3 asterisks from comments in region

M-q fill comment or string literal

M-f move to end of current or next word of identifier or field

M-b move to beginning of current or next word of identifier or field

M-@ mark to end of current word or next word of identifier or field

C-c C-w toggle whether word motion understands mixed-case identifiers

C-M-f move to end of operator, ident, string, paren, brace

C-M-b move to beginning of operator, ident, string, paren, brace

M-a beginning of statement

M-e end of statement

C-M-a beginning of function definition

C-M-e end of function definition

M-- C-M-a beginning of next function

M-- C-M-e end of previous function

C-x n d narrow to function definition

C-x n w widen

C-M-h mark current function

C-M-@ mark to end of operator, ident, string, paren, brace

C-x C-x TAB indent lines in region properly

C-M-\ same as previous

C-x h C-M-\ C-u C-SPC indent buffer properly

C-c C-q indent current function properly

C-c C-\ align backslash characters in region

C-u C-c C-\ delete backslash characters in region

M-x set-variable RET c-backslash-column 48 RET set backslash column to 48

C-c C-n beginning of next preprocessor conditional

C-c C-p beginning of previous preprocessor conditional

C-c C-u beginning of current preprocessor conditional

M-- C-c C-u end of preprocessor conditional

C-c DEL hungrily delete all whitespace including newlines backwards

C-c C-DEL same as previous

M-^ merge current line with previous

C-u M-^ merge next line with current (see “line” above)

C-n M-^ same as previous

C-c C-d hungrily delete all whitespace including newlines forwards

M-x c-toggle-hungry-state always hungrily delete whitespace

C-c C-e show expansion of macros for region in other window

M-x set-variable RET c-tab-always-indent RET nil don’t indent mid-line

compile

M-x compile execute a compilation command

M-x recompile execute last compilation command

C-c C-k kill

C-x ` go to source code for next error

M-- C-x ` go to source code for previous error

C-x o visit compilation buffer

M-n next error

M-p previous error

M-} errors for next file

M-{ errors for previous file

RET go to source code for error specified at point

C-c C-c same as previous

g recompile

C-u g prompt for command then recompile

hide

M-x hs-minor-mode start Hide Show minor mode if not started already

C-c @ C-c toggle current block

C-c @ C-h hide current block

C-c @ C-s show current block

C-c @ C-M-h hide all

C-c @ C-M-s show all

C-c @ d <VAR> show blocks should VAR be defined

C-c @ u <VAR> hide blocks should VAR be undefined

tag

M-! etags *.[ch] index .c and .h files in current directory

C-u M-x visit-tags-table set index file for current buffer

M-x visit-tags-table globally set index file

M-. go to definition of symbol in index

C-M-. go to definition for a regular expression in index

C-u M-. go to next definition

M-- M-. go to previous definition

M-* return back to before you started

M-x tags-search go to entry for regular expression in index

M-, go to next entry in index

M-x tags-query-replace search and replace for regular expression

M-TAB complete tag at point

C-M-i same as previous

C-[ C-i same as previous

C-u M-TAB complete language symbol, avoid tags, at point

M-x list-tags for a source file

M-x tags-apropos RET <PATTERN> RET lists tags matching PATTERN

M-x tags-reset-tags-tables forget all previous

M-x select-tags-table choose tags file to use

make

C-x C-f Makefile RET new

C-x C-f foo.mk RET new

M-n next target

M-p previous target

C-c C-\ backslash region

C-c C-c comment region

C-c C-b list macros and targets

C-c C-u list up-to-date status for targets

diff

M-x diff RET <OLD> RET <NEW> RET compare OLD file with NEW file

C-u M-x diff compare files but prompt for Diff switches

M-x diff-buffer-with-file compare buffer with file on disk

M-x diff-backup compare current file with backup on disk

M-x diff RET RET same as previous

M-x diff-mode start Diff Mode if not already started for a file

C-c C-c go to corresponding location in target (new) file

C-u C-c C-c go to corresponding location in source (old) file

C-u C-u C-c C-c always go to corresponding location in source file

C-c C-a apply current hunk

C-u C-c C-a revert current hunk

C-c C-t test current hunk

C-c C-t test current hunk in reverse

M-n move start of next hunk

M-p move to start of previous hunk

M-} move to start of next file in multiple file patch

M-{ move to start of previous file in multiple file patch

C-c C-n narrow to hunk

C-x n w widen

C-u C-c C-n narrow to file of multiple file patch

M-k kill the current hunk

M-K kill the current file in multiple file patch

C-c C-s split the hunk in two

C-c C-r reverse direction of entire patch

C-u C-c C-r reverse direction of patch in region

C-x 4 a new change log entry using context of current location

C-c C-u convert the entire buffer from unified to context format

C-u C-c C-u convert the entire buffer from context to unified format

C-c C-u convert the entire buffer

C-c C-e start ediff session

version control (vc)

C-x v C-h list bindings for prefix

C-x v i register file

C-x v v check in or out, depending on the current state

C-c C-c finish editing log for check in

C-u C-x v v check in or out a specific revision

C-x v ~ open past revision in new window

C-x v = diff with current revision

C-u C-x v = diff with specific revision

C-x v l show log

C-x v u undo checkout

C-x v c delete the latest revision

C-x v g annotate file by each line showing when added and by whom

C-x v d show checked out files

C-x v s RET <NAME> RET tag all the files in directory with NAME

C-u C-x v s RET <NAME> RET tag files and create branch

C-x v r <NAME> recursively checkout files for a snapshot

C-x v a update ChangeLog (see “changelog” below)

C-x v m merge two revisions

C-x v h insert revision header keyword

M-x vc-resolve-conflicts start ediff (see “ediff” below) on file

changelog

C-x 4 a start new entry using context of current file

C-x 4 a start new entry in current log file

C-c C-p insert previous log from version control

M-q fill paragraph following syntax rules

M-x change-log-merge RET <FILE> RET merge current with log FILE

C-x v a generate entries from version control

merge conflict

M-x smerge-mode start Smerge Mode if not started

C-c ^ n move to next

C-c ^ p move to previous

C-c ^ b keep base

C-c ^ m keep mine

C-c ^ o keep other

C-c ^ RET keep what is under point

C-c ^ a keep all

C-c ^ c combine current with next

C-c ^ r auto resolve

M-x smerge-resolve-all auto resolve entire buffer

grep

M-x grep RET <REGEXP> SPC <FILES> RET show matches in FILES for REGEXP

M-x lgrep RET <REGEXP> RET <FILES> RET show matches in FILES for REGEXP

M-x lgrep RET <REGEXP> RET RET show matches in all C files

M-x lgrep RET <REGEXP> RET ch RET same as previous

M-x lgrep RET <REGEXP> RET c RET show matches in C source files

M-x lgrep RET <REGEXP> RET h RET show matches in header files

M-x lgrep RET <REGEXP> RET l RET show matches in ChangeLog files

M-x lgrep RET <REGEXP> RET m RET show matches in Make files

M-x lgrep RET <REGEXP> RET tex RET show matches in TeX files

M-x lgrep RET <REGEXP> RET *.html RET show matches in HTML files

M-x egrep RET <REGEXP> RET <FILES> RET extended regular expressions

M-x igrep RET <REGEXP> RET <FILES> RET case insensitive matching

M-x grep-find RET <REGEXP> RET show matches in entire directory tree

M-x rgrep RET <REGEXP> RET *.html RET RET same, but HTML files

M-x rgrep RET <REGEXP> RET RET RET same, but C files

M-x rgrep RET <REGEXP> RET el RET RET same, but Emacs Lisp files

C-x ` visit next match

M-g M-n visit next match

M-g n visit next match

M-- C-x ` visit the previous match

C-u 2 C-x ` visit the second next match

C-u 5 C-x ` visit the fifth next match

C-u C-x ` visit the first match

M-g p visit previous match

M-g M-p visit previous match

C-x o move to buffer with listed matches

C-c C-k stop

TAB move to next match

S-TAB move to previous match

RET go to match in file

C-c C-c go to match in file

M-n show next match in other window

n show next match in other window

M-p show previous match in other window

p show previous match in other window

SPC scroll down

DEL scroll up

M-} move to start of matches in next file

} move to start of matches in next file

M-{ move to end of matches in previous file

{ move to end of matches in previous file

C-c C-f automatically show match in other window with follow mode

C-c C-f disable follow mode

M-x find-grep-dired (see “directory” above)

locate

M-x locate RET <PATTERN> RET show files matching PATTERN

M-x locate-with-filter RET <PATTERN> RET <REGEXP> same, but also match REGEXP

M-x locate-with-filter show

C-n next matched file

C-p previous matched file

RET visit current file at

C-o open file in other window

V open current file in dired (see “directory” above)

calendar

M-x calendar view previous, current and next months

C-h m help

? user manual

C-f one day forward

C-b one day backward

7 C-f seven days forward

C-7 C-f same as previous

C-n one week forward

C-p one week backward

52 C-n fifty-two weeks forward

C-5 C-2 C-n same as previous

M-} one month forward

M-{ one month backward

12 M-} twelve months forward

M-1 M-2 M-} same as previous

C-x ] one year forward

C-x [ one year backward

4 C-x ] four years forward

C-u C-x ] same as previous

C-a beginning of week

C-e end of week

M-a beginning of the month

M-e end of the month

M-< beginning of year

M-> end of year

< scroll month backward

> scroll month forward

C-v scroll forward 3 months

M-v scroll backward 3 months

C-SPC 3 M-} M-= how many days three months from now

g d RET Feb RET 29 RET go to February 29 of current year

o RET May RET go to May

g D RET 60 RET go to sixtieth day of current year

g w RET 5 RET go to fifth week of current year

. back to today

p d print day of year

p c print week of year

h holidays on day

a holidays in next 3 months

x mark holidays

u unmark holidays

S sunrise/sunset

M lunar phases

m mark all diary entries (see “diary” later)

u unmark diary entries

d diary entries for day

d diary entries for day

i d insert single diary entry

i w insert weekly entry

i m insert monthly entry

i y insert annual entry

i a insert anniversary

i c 10 RET repeat entry every ten days

C-SPC C-f i b making a two-day diary entry

C-SPC C-n i b making a week-long diary entry

C-SPC 2 C-n i b making a two week-long diary entry

s open diary

H m Export month to an HTML file

H y Export all months in year to HTML files

t m Export month to TeX file

t M Export month in landscape display to TeX file

t w 1 Export week in to TeX file

t y Export year to TeX file

q quit

ediff

M-x ediff compare two files

M-x ediff-buffers compare two buffers

M-x ediff-regions-linewise compare regions by lines in two buffers

M-x ediff-regions-wordwise compare regions by word in two buffers

M-x ediff-backup compare with backup file

M-x ediff-current-file compare buffer with file

M-x ediff-revision compare in version control (see “version control” above)

? help

| toggle vertical and horizontal display

h toggle highlighting mode

n next difference

SPC next difference

p previous difference

a use a

b use b

r a undo in a

r b undo in b

q quit

browse-url

M-x browse-url same as previous

M-x ffap same as previous

M-x browse-url-at-point visit URL at point in Web browser

M-x browse-url RET RET same as previous

HTML

C-h m help

C-c C-v view current file in Web browser

C-c C-s toggle to view in Web browser on each save

C-c 8 toggle inserting of non-ASCII characters as entities

C-c TAB toggle invisibility of tags

M-x html-imenu-index add index menu to menu bar for current file

M-x set-variable RET sgml-xml-mode RET t RET turn on XHTML tags

M-x set-variable RET skeleton-transformation RET upcase RET use upperacase tags

C-c C-d delete current tag

C-c DEL delete current tag

C-u C-c C-d delete next 4 tags

C-c C-f skip forward tag

C-u 5 C-c C-f skip forward 5 tags

C-c C-f skip backward tag

C-u C-c C-f skip backward 4 tags

C-c C-t html RET <TITLE> RET start file with TITLE

M-x auto-insert RET <TITLE> RET same as previous

C-c 1 insert level one heading

C-c 2 insert level two heading

C-c 3 insert level three heading

C-c 4 insert level four heading

C-c 5 insert level five heading

C-c 6 insert level six heading

C-c RET insert paragraph tag

C-c / close paragraph tag

C-c C-j insert line break tag

C-c C-c - insert horizontal rule

C-c C-c h insert link

C-c C-c n insert page anchor

C-c C-c i insert image

C-c C-c r insert radio buttons

C-c C-c o insert ordered list

C-c C-c u insert unordered list

C-c C-c i insert list item

C-c / close list item

C-u M-o b insert bold tag

C-u M-o i insert italic tag

C-u M-o b insert bold tag

C-u M-o i insert underline tag

C-c C-a insert attributes to current tag

C-c C-t em RET insert emphasis tag

C-c C-t strong RET insert strong emphasis tag

C-c C-t code RET insert source code tag

C-c C-t dfn RET insert definition tag

C-c C-t kbd RET insert keyboard text tag

C-c C-t samp RET insert sample text tag

C-c C-t var RET insert variable text tag

C-c C-t pre RET insert preformatted text tag

C-c C-t span RET class RET <CLASS> RET insert span tag for text of CLASS

C-c C-t dl RET <TERM> RET RET insert definition list with TERM

C-c C-t table RET h RET d RET DEL RET insert 1-by-1 table

C-c C-t prompt for tag name and possible attributes, then insert

C-u 3 C-c C-t prompt for tag, and surround next 3 words with tag

C-1 C-c C-t prompt for tag, and surround next word with tag

M-- C-c C-t prompt for tag, and surround region with tag

C-c ? RET describe current tag

C-c C-n M-SPC insert non-breaking space entity

C-c C-n & insert a quoted ampersand

C-c C-n < insert a quoted less than character

C-c C-n > insert a quoted greater than character

M-; insert comment

C-u M-; kill comment

M-x sgml-show-context display hierarchy of tags for point

M-x sgml-validate check markup with external tool

outline

M-x outline-mode set major mode

M-x outline-minor-mode set minor mode

C-h f outline-mode help

C-c RET insert heading of current level

C-c C-a show all

C-c C-t hide all

C-c C-e show body

C-c C-c hide body

C-c C-s show all under current heading

C-c C-d hide all under current heading

C-c C-i show headings under current heading

C-c TAB same as previous

C-c C-k show all headings under current heading

C-c C-q hide all headings under current heading

C-c C-l hide leaves

C-c C-o hide all others except current

C-c C-n forward heading

C-c C-p backward heading

C-u C-c C-n forward 4 headings

C-c C-f forward to same level heading

C-c C-b backward to same level heading

C-u C-c C-f forward 4 headings at same level

C-c C-u up to parent heading

C-u 4 C-c C-u up 4 parent headings

C-c C-v move current subtree down

C-c C-^ move current subtree up

C-c @ mark current subtree

C-c C-< increase heading level in current subtree

C-c C-> decrease heading level in current subtree

SQL

M-x sql-help help

M-x sql-db2 open DB2 interactive buffer

M-x sql-informix open Informix interactive buffer

M-x sql-ingres open Ingres interactive buffer

M-x sql-interbase open InterBase interactive buffer

M-x sql-linter open RELEX Linter interactive buffer

M-x sql-ms open Microsoft SQL interactive buffer

M-x sql-mysql open MySQL interactive buffer

M-x sql-oracle open Oracle interactive buffer

M-x sql-postgres open PostgreSQL interactive buffer

M-x sql-solid open SOLID interactive buffer

M-x sql-sqlite open SQLite interactive buffer

M-x sql-sybase open Sybase interactive buffer

M-x sql-product-interactive switch to current interactive

M-x sql-mode turn on SQL mode if not already started

M-x sql-set-sqli-buffer RET *SQL* RET set text buffer’s interactive buffer

C-c C-r send region to interactive buffer

C-c C-c send paragraph to interactive buffer

C-c C-b send buffer contents to interactive buffer

calc

C-x * c start/stop calc

M-x calc same as previous

q quit

C-x * * start/stop

C-x * o other window

h ? help for help

? ? help shown in minibuffer

h h all help shown in buffer

h t tutorial

h i info manual

h c command name

h k command description

h s command summary

RET put on stack

SPC same as previous

TAB swap top stack items

M-TAB cycle all stack items

C-M-i same as previous

C-[ C-i same as previous

DEL delete from stack

M-0 DEL delete all from stack

o move point to top of the stack

> scroll right

< scroll left

+ add

- subtract

* multiply

/ divide

\ integer divide

^ raise number to power

I ^ root

Q square root

n negative

& reciprocal

' enter algebraic expression

= re-evaluate

m f fraction mode

m f change back to floating point decimal

' 2 : 3 RET enter two-thirds (2/3) as a fraction

' 2 / 3 = > RET divide 3 from 2 as an “evaluate-to”

' evalto ( 2 / 3 RET same as previous

m f = show 2/3 as a fraction

m f = show 2/3 as a decimal

f convert an integer to a float

F floor a float to an integer

R round a float to the closest integer

x execute calc named command

3 4 RET x hypot find hypotenuse of two sides

' hypot(3,4) find hypotenuse of two sides

3 4 f h find hypotenuse of two sides

' algebraic variable or expression

' $ previous stack entry

' $$ second previous stack entry

' $3 third previous stack entry

s s <VAR> store top of stack to VAR

s t <VAR> store top of stack to VAR and delete

s r <VAR> recall VAR to stack

s u <VAR> unstore VAR to stack

s l <VAR> store top of stack to VAR, evaluate stack, and unstore

s r TAB see list of current variables

= evaluate variables

t [ first trail item

t ] last trail item

t n forward trail item

t p backward trail item

t h current trail item

t y yank item from trail to stack

t i visit trail

t o leave trail

m a toggle algebra mode

d z leading zero notation

d n normal notation

d s scientific notation

d s scientific notation

d e engineering notation

d f 3 fix to 3 digits after floating point

M-3 d n 3 significant digits and normal notation

M-3 d s 3 significant digits in scientific notation

M-3 d e 3 significant digits in engineering notation

d g toggle grouping digits in sets of 3 with commas

M-5 d g group in sets of 5

M-- d g group floating point in sets of 3 with commas

M-- M-5 d g group floating point in sets of 5

H d change display mode without updating stack

H d SPC manually refresh stack with current display mode

2 # enter in binary

8 # enter in octal

16 # enter in hexadecimal

10 # enter in decimal

d r change display radix

d r 2 display in binary

d 2 same as previous

d r 8 display in octal

d 8 same as previous

d r 16 display in hexadecimal

d 6 same as previous

d r 10 display in decimal

d 0 same as previous

p change precision

m r change to radians mode

m d change to degrees mode

m p change to polar mode

m h change to hours, minutes, and seconds mode

40@11'15" enter 40 degrees, 11 minutes and 15 seconds

S sine

C cosine

T tangent

c r convert radians

c d convert degrees

c p convert polar

c h convert hms

' 1 m 1 meter

' 1 cm 1 centimeter

' 1 mm 1 millimeter

' 1 mi 1 mile

u c convert units

' 26.2 SPC mi RET u c km RET convert 26.2 miles to kilometers

' 90 SPC km/hr RET u c mph RET 90 km per hour to miles per hour

' 72 SPC degF RET u c degC RET 72 degrees Fahrenheit to Celsius

' hms(26.2) mi RET ' 2@3'38" hr RET / speed of 26.2 miles in 2:03:38

' 2@3'38" hr RET ' 26.2 mi RET / pace of 26.2 miles in 2:03:38

' hms(26.2) mi RET ' 2@3'38" hr RET / & u r c h same as previous

u v view available units

' 14 SPC lb RET u d st RET Stone (mass) RET define unit

u p save units permanently to ~/.emacs.d/calc.el

timeclock

M-x timeclock-in start a project

M-x timeclock-out stop working on the current project

M-x timeclock-when-to-leave-string report time to leave

M-x timeclock-visit-timelog visit timelog file

M-x timeclock-reread-log reread timelog file after crash

M-x timeclock-reread-log reread timelog file after edited

M-x timeclock-reread-log reread timelog file after restarting emacs

games

M-x 5x5 fill a 5-by-5 grid

M-x blackbox find balls in a box

M-x doctor psychoanalysis

M-x dunnet text adventure

M-x gomoku try to get 5 in a row

M-x mpuz multiplication puzzle

M-x pong classic video tennis

M-x snake eat dots but not yourself or the walls

M-x tetris stack blocks

M-x type-break watch an animation

M-x type-break-mode be told when to take breaks

M-- M-x type-break-mode shut off reminders for breaks

animation

M-x animate-birthday-present RET <NAME> RET birthday wishes to NAME

M-x butterfly strike the drive platter and flip the desired bit

M-x dissociated-press scramble current text in another buffer

M-x hanoi towers of hanoi

M-x life the game of life

M-x studlify-buffer give text in buffer strange capitalization

M-x studlify-region give text in region strange capitalization