Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

DefaultKeyBinding.dict file (~/Library/KeyBindings/DefaultKeyBinding.dict) for Mac OS X, created by [Brett Terpstra][] and based heavily on work done by Lri. Please note that these bindings won't work in all applications: TextWrangler and TextMate, for example, override these with their own settings.

Installation: 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.

The repository includes a script to generate a Dash docset from your customized version of the file. See here for details.

Documentation (last updated 02/18/2022.)

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 NSRepeatCountBinding -string “u” defaults write -g NSTextKillRingSize -int 6)
⌃⇧u Uppercase word
⌃⌥u Lowercase word
⌃⌥t Titlecase word
⌃⌥⇧u Uppercase current paragraph
⌃⌥⇧t titlecase paragraph
⌃w 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)
⌥d 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
⌃⌘↑ Move line up
⌃⌘↓ 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 ( Control-option-up arrow)
⌘⌥← Move to first non-whitespace character of line
⌘⌥⇧← Select to first word of paragraph modifying selection
⌘⌥⇧→ Select to end of paragraph modifying selection
⌥⌘→ Move to last non-whitespace character of paragraph
⌃⌥→ Move to end of paragraph and delete trailing whitespace
TextMate Command-Return (Command Return)
⌘⇧ Insert blank line above paragraph (Command Shift Return)
⇧⌥␣ Insert space and uppercase next character (Shift-Option-Space)
⌃⇧␣ Uppercase next character (Control-Shift-Space)
⇧␣ Move cursor forward with spacebar (shift-space)
⌘⌥_ 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 Option Return)
⇧⇥ 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…
multi–stroke casing commands (⌃⌥c)
⌃⌥c c snake_case to camelCase (delete forward and capitalize)
⌃⌥c s snake_case word break
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 ` Fence code
⌃⌘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)
⌃⌘w s SearchLink Basic Link
Link as image (i)
⌃⌘w i t same as lt, but with image syntax ![selected text]([cursor])
⌃⌘w i c same as lc, but with image syntax ![selected text](clipboard)
⌃⌘w i d same as lc, but with image syntax and “+” for Droplr links ![selected text](clipboard+)
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 / https://
⌃⌘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 “https://” 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
Jekyll Shortcuts (⌃⌘j)
⌃⌘j p Pullquote Liquid Tag
⌃⌘j r Raw Liquid Tag
⌃⌘j ⇧r Raw Tag for entire paragraph
TaskPaper Tags (⌃⌘t)
⌃⌘t d @done
⌃⌘t p @priority()
⌃⌘t n @na
⌃⌘t t @today
SearchLink commands (⌃⌘g)
⌃⌘g g SearchLink Syntax: Google
⌃⌘g ⇧a SearchLink Syntax: Amazon
Apple (a)
⌃⌘g a i SearchLink Syntax: iOS App
⌃⌘g a m SearchLink Syntax: Mac App Store
⌃⌘g s SearchLink Syntax: Software
⌃⌘g m SearchLink Syntax: IMDB
⌃⌘g b SearchLink Syntax:
⌃⌘g p SearchLink Syntax: Projects
⌃⌘g t SearchLink Syntax: Twitter User

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).


DefaultKeybindings.dict for Mac OS X






No releases published


No packages published

Contributors 4