Emacs

Many of these commands are specific to my Emacs configuration.

Global Commands

Note that C- and M- mean Control- and Meta- respectively. To quit a partially entered command, type C-g. To open the emacs tutorial, type C-g t.

Navigation

Command Description
C-b/C-f Cursor backward/forward
C-a/C-e Line beginning/end
C-p/C-n Line previous/next
C-v/M-v Next/previous screen
C-l Center on cursor
C-s/C-r Search forward/backward
M-b/M-f Word backward/forward
M-a/M-e Sentence beginning/end
M-</M-> Document beginning/end
M-g M-g Go to line
C-u C-<space> Pop the mark (go back to previous location)

Editing

Command Description
C-j New line and indent
C-d Delete next character
C-<delete> Delete previous word
C-k Kill to end of line
C-y Yank (paste)
C-/ Undo
C-<space> Set mark at cursor
C-g Deactivate mark
C-w Kill region
M-w Copy region
C-x h Mark whole buffer
C-x C-=/- Increase/decrease buffer text size
M-^ Join lines
M-l Convert following word to lower case
M-u Convert following word to upper case
M-c Capitalize the following word
C-x C-l Convert region to lower case
C-x C-u Convert region to upper case
M-; Comment out region
M-x whitespace-cleanup Automatically remove trailing whitespace

Buffers/Files/Windows

Command Description
C-x C-f Open file
C-x C-s Save file
C-x C-c Close Emacs
C-x C-b Buffer list
C-x b Buffer switch to
C-x k Kill buffer
C-x o Move to other window
C-x 0 Delete selected window
C-x 1 Delete other windows
C-x 2 Split horizontally
C-x 3 Split vertically
C-M-v Scroll other window

Keyboard Macros

Command Description
C-x ( Start defining keyboard macro
C-x ) Stop defining keyboard macro
C-x e Execute keyboard macro

Extensions

Command Description
M-x list-packages Show available packages

Packages

Avy

Command Description
C-' <char> Input a character and jump to it
C-: <char> Input two characters and jump to them

dumb-jump

Command Description
C-M-g Jump to the definition for the thing under point.
C-M-p Jump back to where you were when you jumped.

Elpy

Elpy is a Python development environment for Emacs.

Elpy Navigation

Command Description
M-. Go to definition
C-c C-f Find a file in the current project
C-c C-o Display classes and functions in the current buffer
C-c C-d Find documentation for object at point

Elpy Interpreter

Command Description
C-c C-z Switch to (and start) Python interpreter
C-c C-k Kill the Python interpreter
C-<return> Send statement to the Python interpreter
C-c C-c Send region or entire buffer to the Python interpreter
M-x pyvenv-activate Activate a virtual environment
M-X pyvenv-deactivate Deactivate a virtual environment
M-X pyvenv-restart Restart Python (useful if venv was activated late)

Elpy Testing

Command Description
C-c C-t Start a test run
M-x elpy-set-test-runner Change the current test runner

Helm

Helm is an incremental completion and selection narrowing framework for Emacs. I've C-x C-f, M-x, C-x b, and M-y to Helm commands. helm-mode allows a series of commands.

Command Description
C-n/C-p Next/previous item
C-j Go down into a directory
C-l Go up a directory
C-<space> Mark candidates
M-a Select all

Indium

Indium is a JavaScript development environment for Emacs.

Command Description
C-c C-z Launch Indium.
C-x C-e Evaluate expression preceding the point.
C-M-x Evaluate function enclosing the point.
C-c C-c Evaluate region.

Configuration File

Indium requires a .indium.json file in the root folder of your JavaScript project. See the Indium documentation for more information.

{
  "configurations": [
    {
      "name": "Project",
      "type": "node",
      "command": "node"
    }
  ]
}

The type attribute may be "node" or "chrome".

Magit

Command Description
C-x g Show repository status
<tab> Expand section
n/p Move between sections
s/u Stage/unstage region
c Commit changes
h Show commands

A region when staging/unstaging may be the file/line at point or a number of highlighted files/lines. Set the mark (C-<space>) to highlight.

Org mode

Headings: * for h1, * for h2, etc. Formatting: *bold, italics

Command Description
<tab> (on heading) Expand/collapse section
C-<enter> New heading of same level
C-c C-n/p Next/previous heading
"<s" <tab> New code snippet
C-c ' Edit snippet in native mode
C-c C-e Dispatch for export
M-<enter> New list item at current level
C-c C-o Open the link at point
C-c -l Store a link to the current buffer
C-c C-l Insert the stored link

Tables

Command Description
C-c <bar> Create a new table
<tab> (in table) Move to next cell in table
C-c <space> Clear the current cell
M-<left> Move the current column left
M-<right> Move the current column right
M-<up> Move the current row up
M-<down> Move the current row down
C-c - Insert a horizontal line
C-c ^ Sort rows by a column

Clocking

Command Description
C-c C-x C-i Start clock on current item
C-c C-x C-o Stop clock on current item
C-c C-c Recompute the time interval (afer changing one of the time stamps)
C-c C-x C-q Cancel current clock
C-c C-x C-r Generate dynamic block containing a clock report
C-C C-c Update dynamic block at point

Paredit

Command Description
M-( Wrap parens around an sexp
M-" Wrap quotes around an sexp
C-) "Slurp" forward. Pull in sexp on right
C-( "Slurp" backward. Pull in sexp on left
C-} "Barf" forward. Push out last sexp
C-{ "Barf" backward. Push out first sexp

Projectile

Command Description
C-c p f Find file in current project
C-c p p Switch project
C-c p s g Grep in project

Restclient

Explore and test REST services with Emacs. Run queries from a plain-text file and display output.

Restclient Commands

Command Description
C-c C-c Run query under cursor.
C-c C-p Jump to previous query.
C-c C-n Jump to next query.
C-c C-u Copy as cURL command.

Restclient Example

# -*- Restclient -*-

#
# GET request. Note that comments act as separators.
#
GET https://api.github.com
User-Agent: Emacs Restclient

#
# POST request. Entity goes after an empty line. Same for PUT.
#
POST https://fake.api.com/rest/api/1/search
Content-Type: application/json

{
        "user": "John",
        "text": "Test query"
}

#
# Declare and use variables.
#
:word = anthropomorphic
:number = (+ 1 2)

GET http://www.dictionary.com/api/:word/:number

Slime

Run slime with M-x slime. See Peter Christensen's cheat sheet for more commands.

Compilation/Evaluation

Command Description
C-c C-k Compile and load entire file
C-c C-c Compile the toplevel form
C-x C-e Evaluate last expression
C-c M-c Remove all compilation notes

REPL

Command Description
C-c M-p Set current REPL package
M-p/M-n REPL: Go to previous/next input
C-c C-c REPL: Interrupt
TAB REPL: Complete symbol at point

Editing

Command Description
C-c C-d h Hyperspec lookup
C-c C-w c Show function callers
C-c < List callers of a function
C-c > List callees of a function
M-. Go to definition
M-, Return from definition to examined symbol
M-TAB Complete symbol
C-c M-i Fuzzy complete
C-c C-s Insert arglist

YASnippet

Templating system for Emacs. Type a trigger key then hit TAB to expand a snippet. By default, snippets are stored in .emacs.d/snippets

Command Description
M-x yas-new-snippet Create a new snippet

See the documentation for instructions on creating snippets.

Configuration

My Emacs configuration can be found on GitHub.