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.