DefaultKeyBindings.dict file (~/Library/KeyBindings/DefaultKeyBindings.dict) for Mac OS X, created by Brett Terpstra and based heavily on work done by Lri (not accessable any more).
Please note that these bindings won't work in all applications: TextWrangler and TextMate, for example, override these with their own settings.
Copy the DefaultKeyBinding.dict file to the ~/Library/KeyBindings/ directory (create KeyBindings if it doesn't already exist).
Any open applications will need to be re-started before the key bindings will take effect -- or log out and log back in.
last updated 01/08/2017.
Grouped items begin with the groups shortcut (if exists), followed by a subgroup (if exists) followed by the keys specified.
| General Commands | |
|---|---|
| Key | Function |
| ⌃y | replace yank: command with yankAndSelect for use with the kill ring ( defaults write -g NSTextKillRingSize -int 6) |
| ⌥/ | complete |
| ⌥f | move forward word |
| ⌥b | move backword word |
| ⌥v | page Up |
| ⌃v | page Down |
| ⌃/ | undo |
| ⌃⇧- | undo |
| ⌃w | delete word before cursor |
| ⌥⌫ | delete word before cursor |
| ⌥d | delete word before cursor |
| ⌥w | select word |
| ⌥⇧w | select word backward and modify selection |
| ⌥⇧s | select entire line/paragraph |
| ⌥s | select from beginning of paragraph to last character |
| ⌃⌥⇧s | select paragraph excluding leading/trailing whitespace (same as ^$@\UF701) |
| ⌃u | delete line/paragraph |
| ⌥y | copy paragraph |
| ⌥x | cut paragraph |
| ⌥p | paste paragraph below |
| ⌥⇧p | paste paragraph above |
| ⌃⇧a | select to beginning of paragraph and copy |
| ⌃⇧e | select to end of paragraph and copy |
| ⌥q | cut to beginning of paragraph |
| ⌥k | cut to end of paragraph |
| ⌥o | blank line after current |
| ⌥⇧o | blank line before current |
| ⌃⌘k | move line up |
| ⌃⌘j | move line down |
| ⌃⌘l | indent line |
| ⌃⌘h | outdent line (one tab or char) |
| ⌃⌘↑ | move line up ( same commands but with arrow keys) |
| ⌃⌘↓ | move line down |
| ⌃⌘→ | indent line |
| ⌃⌘← | outdent line (one tab or char) |
| ⌃⇧⌘← | Full outdent - Deletes all leading space of line/paragraph (updated) ( Control-shift-command-left arrow) |
| ⌃⇧⌘→ | Delete trailing space ( Control-shift-command-right arrow) |
| ⌃⌘⇧↑ | Delete leading and trailing whitespace for paragraph ( Control-shift-command-up arrow) |
| ⌃⌘⇧↓ | Select paragraph without leading or trailing whitespace ( Control-shift-command-down arrow) |
| ⌃⌥⇧↑ | modify selection up by paragraph (Control Option Shift Up) ( Control-option-shift-up arrow) |
| ⌃⌥⇧↓ | modify selection down by paragraph (Control Option Shift Down) ( Control-option-shift-down arrow) |
| ⌃⌥⇧← | modify selection left by word ( Control-option-shift-left arrow) |
| ⌃⌥⇧→ | modify selection right by word ( Control-option-shift-right arrow) |
| ⌘⌥⌃← | Move to first Alphanumeric character of line (new) ( Control-option-up arrow) |
| ⌘⌥← | Move to first non-whitespace character of line (new) |
| ⌘⌥⇧← | Select to first word of paragraph modifying selection (new) |
| ⌘⌥⇧→ | Select to end of paragraph modifying selection (new) |
| ⌥⌘→ | Move to last non-whitespace character of paragraph (new) |
| ⌃⌥→ | Move to end of paragraph and delete trailing whitespace (new) |
| ⌘↩ | TextMate Command-Return (Command Return) |
| ⌘⇧↩ | Insert blank line above paragraph (Command Shift Return) |
| ⇧⌥␣ | Insert space and uppercase next character (Shift-Option-Space) (new) |
| ⌃⇧␣ | Uppercase next character (Control-Shift-Space) (new) |
| ⌘⌥⇧- | hyphenate next space and move to next word ( this will kill non alphanumeric symbols and punctuation, use only on words) |
| ⌥1 | bookmark |
| ⌥2 | jump to bookmark |
| ⌥⌘↩ | Continue a list item with indentation and include the same delimiter ( Command OptionReturn) |
| ⇧⇥ | remove one tab (or character) from start of line (outdent) ( Shift Tab) |
| ⌘⌥b | bold selection (Markdown) |
| ⌘⌥i | italicize selection (Markdown) |
| ⌘⌥` | backtick selection (Markdown) |
| ⌃⌘↩ | break line with double space (Markdown) (Control-Command-Return) |
| ⌘⌥= | increase markdown header level |
| ⌘⌥- | decrease markdown header level |
| ⌘⌥> | increase blockquote header level |
| ⌘⌥< | decrease blockquote level |
| ⌃< | Make selected text into paired HTML tag. Allows attributes, only dupes first word into closing tag (caveat: overwrites your pasteboard) |
| ⌥r | repeat character before cursor |
| ⌘⇧⌦ | Forward delete to end of paragraph |
| ⌘⇧⌫ | Delete to beginning of paragraph ( Command-shift-delete) |
| ⌘⌥7 | Right mouse click (useless, doesn’t maintain cursor position) |
| ⌘⌥⇧s | Real, honest-to-goodnes Save As… |
| EMACS style C-x shortcuts (⌃x) | |||
|---|---|---|---|
| ⌃x | u | Undo | |
| ⌃x | k | Close window | |
| ⌃x | ⌃f | Open ( find file ) | |
| ⌃x | ⌃x | Swap with mark | |
| ⌃x | ⌃m | Select to mark | |
| ⌃x | ⌃s | Save | |
| ⌃x | ⌃w | Save as | |
| Commenting commands (⌃⌘c) | |||
|---|---|---|---|
| ⌃⌘c | / | comment with “//” | |
| ⌃⌘c | \ | comment with “#” | |
| ⌃⌘c | ! | HTML commenting | |
| ⌃⌘c | * | Css Commenting | |
| Multi-stroke Markdown commands (⌃⌘w) | |||
|---|---|---|---|
| ⌃⌘w | ␍ | force carriage return in text field | |
| ⌃⌘w | ⇥ | force tab in text field | |
| ⌃⌘w | [ | insert reference link [selection][[cursor]] |
|
| ⌃⌘w | ] | insert reference [selection]: [cursor] |
|
| ⌃⌘w | + | Unordered list item with + | |
| ⌃⌘w | - | Unordered list item with - | |
| ⌃⌘w | * | Unordered list item with * | |
| ⌃⌘w | 8 | convert current numbered list item to bullet, handles indentation | |
| ⌃⌘w | 1 | convert current bullet list item to numbered | |
| Headlines (removes leading whitespace after inserting hashmarks) (h) | |||
| ⌃⌘w | h | 1 | # |
| ⌃⌘w | h | 2 | ## |
| ⌃⌘w | h | 3 | ### |
| ⌃⌘w | h | 4 | #### |
| ⌃⌘w | h | 5 | ##### |
| ⌃⌘w | h | 6 | ###### |
| Markdown link (l) | |||
| ⌃⌘w | l | t | create a link for selected text, cursor between () [selected text]([cursor]) ( links without selected text first, these can produce a mess using multiple clipboards make a text selection before you run them) |
| ⌃⌘w | l | c | create a link for selected text, inserting clipboard as url [[cursor]selected text](clipboard contents) |
| Link as image (i) | |||
| ⌃⌘w | i | t | same as lt, but with image syntax  |
| ⌃⌘w | i | c | same as lc, but with image syntax  |
| ⌃⌘w | i | d | same as lc, but with image syntax and “+” for Droplr links  |
| Reference links (:) | |||
| ⌃⌘w | : | t | create a reference from selected text |
| ⌃⌘w | : | c | create a reference from selected text, clipboard as url |
| HTML commands (⌃⌘e) | |||
|---|---|---|---|
| ⌃⌘e | = | =“[cursor]” | |
| ⌃⌘e | e | entity &[cursor]; | |
| ⌃⌘e | / | http:// | |
| ⌃⌘e | t | Make previous word into paired HTML tag | |
| HTML Links (a) | |||
| ⌃⌘e | a | t | Insert HTML link for selected text, leave cursor in the href with “http://” selected |
| ⌃⌘e | a | c | Insert HTML link with clipboard as href |
| HTML Image (i) | |||
| ⌃⌘e | i | t | Insert image tag, any selected text is alt text, leave cursor in src attribute |
| ⌃⌘e | i | c | Insert image tag, clipboard as src, any selected text as alt, leave cursor at beginning of alt attribute |
| Surround commands (⌃⌘s) | |||
|---|---|---|---|
| ⌃⌘s | ( | wrap () with spaces | |
| ⌃⌘s | ) | wrap () no spaces | |
| ⌃⌘s | [ | wrap [] with spaces | |
| ⌃⌘s | ] | wrap [] no spaces | |
| ⌃⌘s | { | wrap {} with spaces | |
| ⌃⌘s | } | wrap {} no spaces | |
| ⌃⌘s | < | wrap <> with spaces | |
| ⌃⌘s | > | wrap <> no spaces | |
| ⌃⌘s | ’ | wrap single quotes | |
| ⌃⌘s | ` | wrap backticks | |
This documentation is generated automatically from the comments and commands in the DefaultKeyBinding.dict file. The script document_keybindings.rb is free for use, but it's specifically designed for use with my formatting in the bindings plist (i.e. it's a little finicky).