{ // General
  // > defaults write -g NSTextKillRingSize -string 6
  // replace yank: command with yankAndSelect for use with the kill ring
  "^y" = (yankAndSelect:);
  // uppercase word
  "^U" = (uppercaseWord:, moveWordForward:, moveWordBackward:);
  // lowercase word
  "^~u" = (lowercaseWord:, moveWordForward:, moveWordBackward:);
  // titlecase word
  "^T" = (capitalizeWord:, moveWordForward:, moveWordBackward:);
  // uppercase current paragraph
  "^~U" = (setMark:, selectParagraph:, uppercaseWord:, swapWithMark:);
  // lowercase current paragraph
  // "^~u" = (setMark:, selectParagraph:, lowercaseWord:, swapWithMark:);
  // titlecase paragraph
  "^~t" = (setMark:, selectParagraph:, capitalizeWord:, swapWithMark:);
  // delete word before cursor
  "^w" = (deleteWordBackward:);
  // select word
  "~w" = (selectWord:);
  // select word backward and modify selection
  "~W" = (moveWordBackwardAndModifySelection:);
  // select entire line/paragraph
  "~S" = (moveToBeginningOfParagraph:, moveToEndOfParagraphAndModifySelection:, moveRightAndModifySelection:);
  // select from beginning of paragrah to last character
  "~s" = (moveToBeginningOfParagraph:, moveToEndOfParagraphAndModifySelection:);
  // select paragraph excluding leading/trailing whitespace (same as ^$@\UF701)
  "^~S" = (moveToEndOfParagraph:, insertText:, " ", selectWord:, moveBackward:, moveToBeginningOfParagraphAndModifySelection:, moveWordForwardAndModifySelection:, moveWordBackwardAndModifySelection:);
  // delete line/paragraph
  "~d" = (selectParagraph:, delete:, moveToBeginningOfParagraph:);
  // copy paragraph
  "~y" = (setMark:, moveToBeginningOfParagraph:, moveToEndOfParagraphAndModifySelection:, copy:, swapWithMark:);
  // cut paragraph
  "~x" = (moveToBeginningOfParagraph:, moveToEndOfParagraphAndModifySelection:, cut:);
  // paste paragraph below
  "~p" = (moveToEndOfParagraph:,moveRight:,insertNewline:,moveLeft:, paste:);
  // paste paragraph above
  "~P" = (moveToBeginningOfParagraph:, moveLeft:, paste:);
  // select to beginning of paragraph and copy
  "^A" = (moveToBeginningOfParagraphAndModifySelection:, copy:);
  // select to end of paragraph and copy
  "^E" = (moveToEndOfParagraphAndModifySelection:, copy:);
  // cut to beginning of paragraph
  "~q" = (moveToBeginningOfParagraphAndModifySelection:, cut:);
  // cut to end of paragraph
  "~k" = (moveToEndOfParagraphAndModifySelection:, cut:);
  // blank line after current
  "~o" = (moveToEndOfParagraph:, insertNewline:);
  // blank line before current
  "~O" = (moveToBeginningOfParagraph:, moveLeft:, insertNewline:);
  // Insert blank line after paragraph
  "^~o" = (moveToEndOfParagraph:, insertNewline:);
  // Insert blank line above paragraph
  "^~O" = (moveToBeginningOfParagraph:, moveLeft:, insertNewline:);
  // move line up
  "^@k" = (selectParagraph:, setMark:, deleteToMark:, moveLeft:, moveToBeginningOfParagraph:, yank:, moveLeft:, selectToMark:, moveLeft:);
  // move line down
  "^@j" = (selectParagraph:, setMark:, deleteToMark:, moveToEndOfParagraph:, moveRight:, setMark:, yank:, moveLeft:, selectToMark:);
  // indent line
  "^@l" = (setMark:, moveToBeginningOfParagraph:, insertText:, "\t", swapWithMark:, moveRight:);
  // outdent line (one tab or char)
  "^@h" = (setMark:, moveToBeginningOfParagraph:, moveWordRight:, moveWordLeft:, deleteBackward:, swapWithMark:, moveLeft:);
  // > same commands but with arrow keys
  // move line up
  "^@\UF700" = (selectParagraph:, setMark:, deleteToMark:, moveLeft:, moveToBeginningOfParagraph:, yank:, moveLeft:, selectToMark:, moveLeft:);
  // move line down
  "^@\UF701" = (selectParagraph:, setMark:, deleteToMark:, moveToEndOfParagraph:, moveRight:, setMark:, yank:, moveLeft:, selectToMark:);
  // indent line
  "^@\UF703" = (setMark:, moveToBeginningOfParagraph:, insertText:, "\t", swapWithMark:, moveRight:);
  // outdent line (one tab or char)
  "^@\UF702" = (setMark:, moveToBeginningOfParagraph:, moveWordRight:, moveWordLeft:, deleteBackward:, swapWithMark:, moveLeft:);
  // > Control-shift-command-left arrow
  // Full outdent - Deletes all leading space of line/paragraph (updated)
  "^$@\UF702" = (setMark:, moveToBeginningOfParagraph:, insertText:, " ", moveLeft:, selectWord:, delete:, swapWithMark:);
  // Delete trailing space
  "^$@\UF703" = (setMark:,moveToEndOfParagraph:, insertText:, " ", selectWord:, deleteBackward:, swapWithMark:);
  // Delete leading and trailing whitespace for paragraph
  "^@$\UF700" = (setMark:, moveToEndOfParagraph:, insertText:, " ", selectWord:, deleteBackward:, moveToBeginningOfParagraph:, insertText:, " ", moveLeft:, selectWord:, delete:, swapWithMark:);
  // Select paragraph without leading or trailing whitespace
  "^@$\UF701" = (moveToEndOfParagraph:, insertText:, " ", selectWord:, moveBackward:, moveToBeginningOfParagraphAndModifySelection:, moveWordForwardAndModifySelection:, moveWordBackwardAndModifySelection:);
  // modify selection up by paragraph (Control Option Shift Up)
  "^~$\UF700" = (selectParagraph:, moveParagraphBackwardAndModifySelection:);
  // modify selection down by paragraph (Control Option Shift Down)
  "^~$\UF701" = (selectParagraph:, moveParagraphForwardAndModifySelection:);
  // modify selection left by word
  "^~$\UF702" = (selectWord:, moveWordLeftAndModifySelection:);
  // modify selection right by word
  "^~$\UF703" = (selectWord:, moveWordRightAndModifySelection:);
  // Move to first Alphanumeric character of line (new)
  "@~^\UF702" = (moveToBeginningOfParagraph:,moveWordRight:, moveWordLeft:);
  // Move to first non-whitespace character of line (new)
  "@~\UF702" = (moveToBeginningOfParagraph:, insertText:, " ", moveLeft:, selectWord:, moveRight:, setMark:, moveToBeginningOfParagraph:, deleteForward:, swapWithMark:, moveLeft:);
  // Select to first character of line with leading space (new)
  "@~$\UF702" = (setMark:,moveToBeginningOfParagraph:,selectWord:, moveRight:, selectToMark:);
  // Move to last non-whitespace character of paragraph (new)
  "~@\UF703" = (moveToEndOfParagraph:, insertText:, " ", selectWord:, moveLeft:, setMark:, moveToEndOfParagraph:, deleteBackward:, swapWithMark:);
  // Move to end of paragraph and delete trailing whitespace (new)
  "^~\UF703" = (moveToEndOfParagraph:, insertText:, " ", selectWord:, deleteBackward:);
  // > this will kill non alphanumeric symbols and punctuation, use only on *words*
  // hyphenate next space and move to next word
  "@~_" = (selectWord:,moveRight:,setMark:,moveWordRight:,moveWordLeft:,moveLeft:,selectWord:,insertText:,"-",moveWordRight:);
  // bookmark
  "~1" = (setMark:);
  // jump to bookmark
  "~2" = (swapWithMark:,centerSelectionInVisibleArea:);
  // > Command Option Enter
  // Continue a list item with indentation and include the same delimiter
  "~@\U000D" = ( breakUndoCoalescing, moveToEndOfParagraph:, insertText:, "x", moveToBeginningOfParagraph:, selectWord:, moveRightAndModifySelection:, moveWordForwardAndModifySelection:, moveWordBackwardAndModifySelection:, moveLeftAndModifySelection:, setMark:, deleteToMark:, yank:, moveToEndOfParagraph:, deleteBackward:, insertNewlineIgnoringFieldEditor:, deleteToBeginningOfParagraph:, yank:, insertText:, " ", selectWord:, insertText:, " ");
  // > Shift Tab
  // remove one tab (or character) from start of line (outdent)
  "$\U0009" = (setMark:, moveToBeginningOfParagraph:, moveRight:, deleteBackward:, swapWithMark:, moveLeft:);
  "^@c" = { // Commenting commands
      // comment with "//"
      "/" = (moveToBeginningOfParagraph:, insertText:, "// ", moveToEndOfParagraph:, moveForward:);
      // comment with "#"
      "\\" = (moveToBeginningOfParagraph:, insertText:, "# ", moveToEndOfParagraph:, moveForward:);
      // HTML commenting
      "!" = (setMark:, swapWithMark:, delete:, insertText:, "", swapWithMark:, moveRight:, moveRight:, moveRight:, moveRight:, moveRight:);
      // Css Commenting
      "*" = (setMark:, swapWithMark:, delete:, insertText:, "/* ", yank:, insertText:, " */", swapWithMark:, moveRight:, moveRight:, moveRight:);
  };
  // bold selection (Markdown)
  "@~b" = (selectWord:, setMark:, swapWithMark:, deleteToMark:, insertText:, "**", yank:, insertText:, " ", moveLeft:, insertText:, "**", moveRight:, deleteBackward:);
  // italicize selection (Markdown)
  "@~i" = (selectWord:, setMark:, swapWithMark:, deleteToMark:, insertText:, "*", yank:, insertText:, " ", moveLeft:, insertText:, "*", moveRight:, deleteBackward:);
  // increase markdown header level
  "@~=" = (setMark:, moveToBeginningOfParagraph:, insertText:, "# ", selectWord:, delete:, swapWithMark:, moveRight:);
  // decrease markdown header level
  "@~-" = (setMark:, moveToBeginningOfParagraph:, deleteForward:, swapWithMark:, moveLeft:);
  // increase blockquote header level
  "@~>" = (setMark:, moveToBeginningOfParagraph:, insertText:, "> ", swapWithMark:, moveRight:, moveRight:);
  // decrease blockquote level
  "@~<" = (setMark:, moveToBeginningOfParagraph:, deleteForward:, deleteForward:, swapWithMark:, moveLeft:);
  // Add hard break for current line and insert newline below (new)
  // "^~\U000D" = (moveToEndOfParagraph:, insertText:, " ", selectWord:, deleteBackward:, insertText:, "  ", insertNewline:);
  // Break line at cursor and add Markdown hard line break (new)
  // "^~@\U000D" = (insertText:, "  ", insertNewline:);
  "^@w" = { // Multi-stroke Markdown commands
    // force carriage return in text field
    "\U000A" = (insertNewlineIgnoringFieldEditor:);
    // force tab in text field
    "\U0009" = (insertText:, "\t");
    // insert reference link `[selection][[cursor]]`
    "[" = (setMark:, swapWithMark:, deleteToMark:, insertText:, " [", moveLeft:, deleteBackward:, moveRight:, yank:, insertText:, " ", moveLeft:, insertText:, "][]", moveRight:, deleteBackward:, moveLeft:);
    // insert reference `[selection]: [cursor]`
    "]" = (setMark:, swapWithMark:, deleteToMark:, insertText:, " [", moveLeft:, deleteBackward:, moveRight:, yank:, insertText:, " ", moveLeft:, insertText:, "]: ", moveRight:, deleteBackward:);
    // Unordered list item with
    "+" = (setMark:, moveToBeginningOfParagraph:, insertText:, "+ ", swapWithMark:, moveRight:, moveRight:);
    // Unordered list item with -
    "-" = (setMark:, moveToBeginningOfParagraph:, insertText:, "- ", swapWithMark:, moveRight:, moveRight:);
    // Unordered list item with *
    "*" = (setMark:, moveToBeginningOfParagraph:, insertText:, "* ", swapWithMark:, moveRight:, moveRight:);
    // convert current numbered list item to bullet, handles indentation
    "8" = (breakUndoCoalescing, setMark:, moveToEndOfParagraph:, insertText:, "x", moveToBeginningOfParagraph:, moveWordForward:, moveRight:, moveWordForward:, moveWordBackward:, moveWordBackwardAndModifySelection:, insertText:, "* ", moveToEndOfParagraph:, deleteBackward:, swapWithMark:, moveLeft:);
    // convert current bullet list item to numbered
    "1" = (breakUndoCoalescing, setMark:, moveToEndOfParagraph:, insertText:, "x", moveToBeginningOfParagraph:, moveWordForward:, moveWordBackward:, moveLeftAndModifySelection:, moveLeftAndModifySelection:, insertText:, "1. ", moveToEndOfParagraph:, deleteBackward:, swapWithMark:, moveRight:);
    "h" = { // Headlines (removes leading whitespace after inserting hashmarks)
        // #
        "1" = (setMark:, breakUndoCoalescing:, moveToBeginningOfParagraph:, insertText:, "# ", selectWord:, insertText:, " ",swapWithMark:,moveRight:,moveRight:);
        // ##
        "2" = (setMark:, breakUndoCoalescing:, moveToBeginningOfParagraph:, insertText:, "## ", selectWord:, insertText:, " ", swapWithMark:,moveRight:,moveRight:,moveRight:);
        // ###
        "3" = (setMark:, breakUndoCoalescing:, moveToBeginningOfParagraph:, insertText:, "### ", selectWord:, insertText:, " ", swapWithMark:,moveRight:,moveRight:,moveRight:,moveRight:);
        // ####
        "4" = (setMark:, breakUndoCoalescing:, moveToBeginningOfParagraph:, insertText:, "#### ", selectWord:, insertText:, " ", swapWithMark:,moveRight:,moveRight:,moveRight:,moveRight:,moveRight:);
        // #####
        "5" = (setMark:, breakUndoCoalescing:, moveToBeginningOfParagraph:, insertText:, "##### ", selectWord:, insertText:, " ", swapWithMark:,moveRight:,moveRight:,moveRight:,moveRight:,moveRight:,moveRight:);
        // ######
        "6" = (setMark:, breakUndoCoalescing:, moveToBeginningOfParagraph:, insertText:, "###### ", selectWord:, insertText:, " ", swapWithMark:,moveRight:,moveRight:,moveRight:,moveRight:,moveRight:,moveRight:,moveRight:);
    };
    // > links
    // > without selected text first, these can produce a mess using multiple clipboards
    // > make a text selection before you run them
    "l" = { // Markdown link
      // create a link for selected text, cursor between () `[selected text]([cursor])`
      "t" = (setMark:, breakUndoCoalescing:, moveRight:, insertText:, " ", deleteToMark:, insertText:, " [", moveLeft:, deleteBackward:, moveRight:, yank:, moveLeft:, insertText:, "]()", moveRight:, deleteBackward:, moveLeft:, setMark:, insertText:, "http://", selectToMark:); // link text
      // create a link for selected text, inserting clipboard as url `[[cursor]selected text](clipboard contents)`
      "c" = (setMark:, breakUndoCoalescing:, moveRight:, insertText:, " ", deleteToMark:, insertText:, " [", moveLeft:, deleteBackward:, moveRight:, yank:, moveLeft:, insertText:, "](", setMark:, pasteAsPlainText:, insertText:, ")", moveRight:, deleteBackward:, moveLeft:, selectToMark:); // link with clipboard
    };
    "i" = { // Link as image
      // TODO: Apply the fix from l,t/c above to avoid inserting the kill buffer when there's no selection
      // same as lt, but with image syntax ``
      "t" = (setMark:, swapWithMark:, deleteToMark:, insertText:, "![", yank:, insertText:, " ", moveLeft:, insertText:, "]()", moveRight:, deleteBackward:, moveLeft:); //  image link for text
      // same as lc, but with image syntax ``
      "c" = (setMark:, swapWithMark:, deleteToMark:, insertText:, "", moveRight:, deleteBackward:, swapWithMark:);
    };
    ":" = { // Reference links
      // create a reference from selected text
      "t" = (setMark:, swapWithMark:, deleteToMark:, insertText:, " [", moveLeft:, deleteBackward:, moveRight:, yank:, insertText:, " ", moveLeft:, insertText:, "]: ", moveRight:, deleteBackward:);
      // create a reference from selected text, clipboard as url
      "c" = (setMark:, swapWithMark:, deleteToMark:, insertText:, " [", moveLeft:, deleteBackward:, moveRight:, yank:, insertText:, " ", moveLeft:, insertText:, "]: ", pasteAsPlainText:, moveRight:, deleteBackward:, swapWithMark:);
    };
  };
  "^@e" = { // HTML commands
      // ="[cursor]"
      "=" = (insertText:, "=\"\"", moveLeft:);
      // entity &[cursor];
      "e" = (insertText:, "&;", moveLeft:);
      // http://
      "/" = (insertText:, "http://");
      // Make previous word into paired HTML tag
      "t" = ( "setMark:", "moveWordBackward:", "deleteToMark:", "insertText:", "<", "yank:", "insertText:", ">", "setMark:", "insertText:", "", "yank:", "insertText:", ">", "swapWithMark:");
      "a" = { // HTML Links
          // Insert HTML link for selected text, leave cursor in the href with "http://" selected
          "t" = ( setMark:, swapWithMark:, deleteToMark:, insertText:, "", yank:, insertText:, "", swapWithMark:, setMark:, insertText:, "http://", selectToMark: );
          // Insert HTML link with clipboard as href
          "c" = ( setMark:, swapWithMark:, deleteToMark:, insertText:, "", yank:, insertText:, "" );
      };
      "i" = { // HTML Image
          // Insert image tag, any selected text is alt text, leave cursor in src attribute
          "t" = ( setMark:, swapWithMark:, deleteToMark:, insertText:, " ", swapWithMark: );
          // Insert image tag, clipboard as src, any selected text as alt, leave cursor at beginning of alt attribute
          "c" = ( setMark:, swapWithMark:, deleteToMark:, insertText:, "
", swapWithMark: );
          // Insert image tag, clipboard as src, any selected text as alt, leave cursor at beginning of alt attribute
          "c" = ( setMark:, swapWithMark:, deleteToMark:, insertText:, " ", swapWithMark: );
      };
  };
  // Make selected text into paired HTML tag. Allows attributes, only dupes first word into closing tag (caveat: overwrites your pasteboard)
  "^<" = ( setMark:, deleteToMark:, insertText:, "<", setMark:, yank:, swapWithMark:, moveWordForwardAndModifySelection:, copy:, swapWithMark:, "insertText:", ">", "setMark:", "insertText:", "", "paste:", "insertText:", ">", "swapWithMark:");
  "^@s" = {   // Surround commands
    // wrap () with spaces
    "(" = (delete:, insertText:, "( ", yank:, insertText:, " ", moveLeft:, insertText:, " )", deleteForward:);
    // wrap () no spaces
    ")" = (delete:, insertText:, "( ", deleteBackward:, yank:, insertText:, " ", moveLeft:, insertText:, ")", deleteForward:);
    // wrap [] with spaces
    "[" = (delete:, insertText:, "[ ", yank:, insertText:, " ", moveLeft:, insertText:, " ]", deleteForward:);
    // wrap [] no spaces
    "]" = (delete:, insertText:, "[ ", deleteBackward:, yank:, insertText:, " ", moveLeft:, insertText:, "]", deleteForward:);
    // wrap {} with spaces
    "{" = (delete:, insertText:, "{ ", yank:, insertText:, " ", moveLeft:, insertText:, " }", deleteForward:);
    // wrap {} no spaces
    "}" = (delete:, insertText:, "{ ", deleteBackward:, yank:, insertText:, " ", moveLeft:, insertText:, "}", deleteForward:);
    // wrap <> with spaces
    "<" = (delete:, insertText:, "< ", yank:, insertText:, " ", moveLeft:, insertText:, " >", deleteForward:);
    // wrap <> no spaces
    ">" = (delete:, insertText:, "< ", deleteBackward:, yank:, insertText:, " ", moveLeft:, insertText:, ">", deleteForward:);
    // wrap single quotes
    "'" = (delete:, insertText:, "' ", deleteBackward:, yank:, insertText:, " ", moveLeft:, insertText:, "'", deleteForward:);
    // wrap backticks
    "`" = (delete:, insertText:, "` ", deleteBackward:, yank:, insertText:, " ", moveLeft:, insertText:, "`", deleteForward:);
    // wrap double quote
    "\"" = (delete:, insertText:, "\" ", deleteBackward:, yank:, insertText:, " ", moveLeft:, insertText:, "\"", deleteForward:);
  };
  // "$\U002B" = { // Vim Example commands (A little vim, just as an example)
  //     // paste after
  //     "p" = (moveToEndOfParagraph:,moveRight:,insertNewline:,moveLeft:, yank:);
  //     // paste before
  //     "P" = (moveToBeginningOfParagraph:, moveLeft:, yank:);
  //     // yank
  //     "y" = (yank:);
  //
  //     "d" = { // Delete
  //         // 'dd' delete line/paragraph
  //         "d" = (setMark:, selectParagraph:, delete:, delete:, swapWithMark:);
  //         // 'd$' delete from cursor to end of graf
  //         "$" = (moveToEndOfParagraphAndModifySelection:, delete:);
  //         // 'd0' delete to beginning of paragraph
  //         "0" = (moveToBeginningOfParagraphAndModifySelection:, delete:);
  //         // 'd^' delete to beginning of paragraph
  //         "^" = (moveToBeginningOfParagraphAndModifySelection:, delete:);
  //     };
  //
  //     "5" = { // Repeat 5 times
  //         "d" = { // Delete
  //             // 'dd' delete line/paragraph
  //             "d" = ( selectParagraph:, delete:, delete:, moveRight:, selectParagraph:, delete:, delete:, moveRight:, selectParagraph:, delete:, delete:, moveRight:, selectParagraph:, delete:, delete:, moveRight:, selectParagraph:, delete:, delete:, moveRight:);
  //         };
  //         // paste after
  //         "p" = ( moveToEndOfParagraph:, moveRight:, insertNewline:, moveLeft:, yank:, moveToEndOfParagraph:, moveRight:, insertNewline:, moveLeft:, yank:, moveToEndOfParagraph:, moveRight:, insertNewline:, moveLeft:, yank:, moveToEndOfParagraph:, moveRight:, insertNewline:, moveLeft:, yank:, moveToEndOfParagraph:, moveRight:, insertNewline:, moveLeft:, yank:);
  //         // paste before
  //         "P" = ( moveToBeginningOfParagraph:, moveLeft:, yank:, moveToBeginningOfParagraph:, moveLeft:, yank:, moveToBeginningOfParagraph:, moveLeft:, yank:, moveToBeginningOfParagraph:, moveLeft:, yank:, moveToBeginningOfParagraph:, moveLeft:, yank:);
  //         // yank
  //         "y" = ( yank:, yank:, yank:, yank:, yank:);
  //     };
  // };
  // repeat character before cursor
  "~r" = (moveLeftAndModifySelection:, copy:, moveRight:, paste:);
  // Forward delete to end of paragraph
  "@$\UF728" = (deleteToEndOfParagraph:);
  // Delete to beginning of paragraph
  "@$\177" = (deleteToBeginningOfParagraph:);
  // Right mouse click (useless, doesn't maintain cursor position)
  "@~7" = (setMark:, rightMouseDown:, swapWithMark:);
  // Hyper up arrow: move cursor to preceeding paragraph
  // "^~$@\UF700" = (moveToBeginningOfParagraph:,moveLeft:,moveLeft:,moveToBeginningOfParagraph:);
  // Hyper left arrow: move cursor to next paragraph
  // "^~$@\UF701" = (moveToEndOfParagraph:,moveRight:,moveRight:,moveToBeginningOfParagraph:);
  // Hyper right arrow: move cursor right twice as fast
  // "^~$@\UF703" = (moveRight:,moveRight:);
  // Hyper left arrow: move cursor left twice as fast
  // "^~$@\UF702" = (moveLeft:,moveLeft:);
  // Hyper left arrow: extend selection left by word
  // "^~$@\UF702" = (selectWord:, moveWordLeftAndModifySelection:);
  // Hyper right arrow: extend selection right by word
  // "^~$@\UF703" = (selectWord:, moveWordRightAndModifySelection:);
  // Real, honest-to-goodnes Save As...
  "@~S" = (saveAs:);
}
", swapWithMark: );
      };
  };
  // Make selected text into paired HTML tag. Allows attributes, only dupes first word into closing tag (caveat: overwrites your pasteboard)
  "^<" = ( setMark:, deleteToMark:, insertText:, "<", setMark:, yank:, swapWithMark:, moveWordForwardAndModifySelection:, copy:, swapWithMark:, "insertText:", ">", "setMark:", "insertText:", "", "paste:", "insertText:", ">", "swapWithMark:");
  "^@s" = {   // Surround commands
    // wrap () with spaces
    "(" = (delete:, insertText:, "( ", yank:, insertText:, " ", moveLeft:, insertText:, " )", deleteForward:);
    // wrap () no spaces
    ")" = (delete:, insertText:, "( ", deleteBackward:, yank:, insertText:, " ", moveLeft:, insertText:, ")", deleteForward:);
    // wrap [] with spaces
    "[" = (delete:, insertText:, "[ ", yank:, insertText:, " ", moveLeft:, insertText:, " ]", deleteForward:);
    // wrap [] no spaces
    "]" = (delete:, insertText:, "[ ", deleteBackward:, yank:, insertText:, " ", moveLeft:, insertText:, "]", deleteForward:);
    // wrap {} with spaces
    "{" = (delete:, insertText:, "{ ", yank:, insertText:, " ", moveLeft:, insertText:, " }", deleteForward:);
    // wrap {} no spaces
    "}" = (delete:, insertText:, "{ ", deleteBackward:, yank:, insertText:, " ", moveLeft:, insertText:, "}", deleteForward:);
    // wrap <> with spaces
    "<" = (delete:, insertText:, "< ", yank:, insertText:, " ", moveLeft:, insertText:, " >", deleteForward:);
    // wrap <> no spaces
    ">" = (delete:, insertText:, "< ", deleteBackward:, yank:, insertText:, " ", moveLeft:, insertText:, ">", deleteForward:);
    // wrap single quotes
    "'" = (delete:, insertText:, "' ", deleteBackward:, yank:, insertText:, " ", moveLeft:, insertText:, "'", deleteForward:);
    // wrap backticks
    "`" = (delete:, insertText:, "` ", deleteBackward:, yank:, insertText:, " ", moveLeft:, insertText:, "`", deleteForward:);
    // wrap double quote
    "\"" = (delete:, insertText:, "\" ", deleteBackward:, yank:, insertText:, " ", moveLeft:, insertText:, "\"", deleteForward:);
  };
  // "$\U002B" = { // Vim Example commands (A little vim, just as an example)
  //     // paste after
  //     "p" = (moveToEndOfParagraph:,moveRight:,insertNewline:,moveLeft:, yank:);
  //     // paste before
  //     "P" = (moveToBeginningOfParagraph:, moveLeft:, yank:);
  //     // yank
  //     "y" = (yank:);
  //
  //     "d" = { // Delete
  //         // 'dd' delete line/paragraph
  //         "d" = (setMark:, selectParagraph:, delete:, delete:, swapWithMark:);
  //         // 'd$' delete from cursor to end of graf
  //         "$" = (moveToEndOfParagraphAndModifySelection:, delete:);
  //         // 'd0' delete to beginning of paragraph
  //         "0" = (moveToBeginningOfParagraphAndModifySelection:, delete:);
  //         // 'd^' delete to beginning of paragraph
  //         "^" = (moveToBeginningOfParagraphAndModifySelection:, delete:);
  //     };
  //
  //     "5" = { // Repeat 5 times
  //         "d" = { // Delete
  //             // 'dd' delete line/paragraph
  //             "d" = ( selectParagraph:, delete:, delete:, moveRight:, selectParagraph:, delete:, delete:, moveRight:, selectParagraph:, delete:, delete:, moveRight:, selectParagraph:, delete:, delete:, moveRight:, selectParagraph:, delete:, delete:, moveRight:);
  //         };
  //         // paste after
  //         "p" = ( moveToEndOfParagraph:, moveRight:, insertNewline:, moveLeft:, yank:, moveToEndOfParagraph:, moveRight:, insertNewline:, moveLeft:, yank:, moveToEndOfParagraph:, moveRight:, insertNewline:, moveLeft:, yank:, moveToEndOfParagraph:, moveRight:, insertNewline:, moveLeft:, yank:, moveToEndOfParagraph:, moveRight:, insertNewline:, moveLeft:, yank:);
  //         // paste before
  //         "P" = ( moveToBeginningOfParagraph:, moveLeft:, yank:, moveToBeginningOfParagraph:, moveLeft:, yank:, moveToBeginningOfParagraph:, moveLeft:, yank:, moveToBeginningOfParagraph:, moveLeft:, yank:, moveToBeginningOfParagraph:, moveLeft:, yank:);
  //         // yank
  //         "y" = ( yank:, yank:, yank:, yank:, yank:);
  //     };
  // };
  // repeat character before cursor
  "~r" = (moveLeftAndModifySelection:, copy:, moveRight:, paste:);
  // Forward delete to end of paragraph
  "@$\UF728" = (deleteToEndOfParagraph:);
  // Delete to beginning of paragraph
  "@$\177" = (deleteToBeginningOfParagraph:);
  // Right mouse click (useless, doesn't maintain cursor position)
  "@~7" = (setMark:, rightMouseDown:, swapWithMark:);
  // Hyper up arrow: move cursor to preceeding paragraph
  // "^~$@\UF700" = (moveToBeginningOfParagraph:,moveLeft:,moveLeft:,moveToBeginningOfParagraph:);
  // Hyper left arrow: move cursor to next paragraph
  // "^~$@\UF701" = (moveToEndOfParagraph:,moveRight:,moveRight:,moveToBeginningOfParagraph:);
  // Hyper right arrow: move cursor right twice as fast
  // "^~$@\UF703" = (moveRight:,moveRight:);
  // Hyper left arrow: move cursor left twice as fast
  // "^~$@\UF702" = (moveLeft:,moveLeft:);
  // Hyper left arrow: extend selection left by word
  // "^~$@\UF702" = (selectWord:, moveWordLeftAndModifySelection:);
  // Hyper right arrow: extend selection right by word
  // "^~$@\UF703" = (selectWord:, moveWordRightAndModifySelection:);
  // Real, honest-to-goodnes Save As...
  "@~S" = (saveAs:);
}