My DefaultKeyBinding.dict

{
	"~w" = selectWord:;
	"~f" = (selectWord:, cut:);
	"~g" = (selectWord:, copy:);
	"~h" = (selectWord:, paste:);
	"~j" = (selectWord:, delete:);

	"~l" = selectParagraph:;
	"~z" = (selectParagraph:, deleteBackward:);
	"~x" = (selectParagraph:, cut:);
	"~c" = (selectParagraph:, copy:);

	"~s" = (moveToBeginningOfParagraphAndModifySelection:, moveToEndOfParagraphAndModifySelection:);
	"~y" = (moveToBeginningOfParagraphAndModifySelection:, moveToEndOfParagraphAndModifySelection:, deleteBackward:);
	"~q" = (moveToBeginningOfParagraphAndModifySelection:, moveToEndOfParagraphAndModifySelection:, cut:);
	"~m" = (moveToBeginningOfParagraphAndModifySelection:, moveToEndOfParagraphAndModifySelection:, copy:);

	"~u" = (moveToBeginningOfParagraphAndModifySelection:, cut:);
	"~k" = (moveToEndOfParagraphAndModifySelection:, cut:);
	"~a" = (moveToBeginningOfParagraphAndModifySelection:, copy:);
	"~e" = (moveToEndOfParagraphAndModifySelection:, copy:);
	"~i" = (moveToBeginningOfParagraph:, deleteBackward:);
	"~o" = (moveToEndOfParagraph:, deleteForward:);

	"~v" = (delete:, setMark:, paste:, selectToMark:);

	"~d" = (moveToBeginningOfParagraphAndModifySelection:, moveToEndOfParagraphAndModifySelection:, setMark:, deleteToMark:, yank:, insertNewlineIgnoringFieldEditor:, yank:);

	"~-" = (lowercaseWord:, moveForward:);
	"~=" = (uppercaseWord:, moveForward:);
	"~." = (capitalizeWord:, moveForward:);

	"$\r" = (moveToBeginningOfParagraph:, insertNewline:, moveBackward:);
	"@\r" = (moveToEndOfParagraph:, insertNewlineIgnoringFieldEditor:, deleteToBeginningOfParagraph:);

	"~\UF700" = (moveUp:, moveUp:, moveUp:, moveUp:);
	"~\UF701" = (moveDown:, moveDown:, moveDown:, moveDown:);
	"~$\UF700" = (moveUpAndModifySelection:, moveUpAndModifySelection:, moveUpAndModifySelection:, moveUpAndModifySelection:);
	"~$\UF701" = (moveDownAndModifySelection:, moveDownAndModifySelection:, moveDownAndModifySelection:, moveDownAndModifySelection:);

	"^\UF700" = (selectParagraph:, setMark:, deleteToMark:, moveBackward:, moveToBeginningOfParagraph:, setMark:, yank:, moveBackward:, selectToMark:);
	"^\UF701" = (selectParagraph:, setMark:, deleteToMark:, moveToEndOfParagraph:, moveForward:, setMark:, yank:, moveBackward:, selectToMark:);

	"@\UF728" = deleteToEndOfLine:;
}

Notes

Key combinations that enter dead key states can't be reassigned.

setMark:, selectToMark: removes anchoring so that methods for modifying a selection expand the selection.

delete: (⌧ / clear) doesn't delete anything if there is no selection. deleteBackward: (⌫ / delete) doesn't add deleted selections to the kill ring. delete: doesn't do anything in iWork applications.

deleteBackward: doesn't add single character selections to the kill ring but setMark:, deleteToMark: does.

scrollPageDown: (⇟) doesn't move the caret but pageDown: (⌥⇟) does. pageDown: and ⌥⇟ don't do anything in web views or iWork applications.

moveToBeginningOfParagraphAndModifySelection:, moveToEndOfParagraphAndModifySelection: doesn't work for selecting a line without a newline in TextMate, Sublime Text, or BBEdit. You can use selectParagraph:, moveForwardAndModifySelection:, moveBackwardAndModifySelection:, moveBackwardAndModifySelection:, moveToEndOfParagraphAndModifySelection: instead.

Shortcut strings

tab \U0009 \011 \t
enter \U000A \012 \n
return \U000D \015 \r
escape \U001B \033
delete \U007F \177
up \UF700
down \UF701
left \UF702
right \UF703
F1 \UF704
F2 \UF705
F3 \UF706
F4 \UF707
F5 \UF708
F6 \UF709
F7 \UF70A
F8 \UF70B
F9 \UF70C
F10 \UF70D
F11 \UF70E
F12 \UF70F
F13 \UF710
F14 \UF711
F15 \UF712
F16 \UF713
F17 \UF714
F18 \UF715
F19 \UF716
F20 \UF717
forward delete \UF728
home \UF729
end \UF72B
page up \UF72C
page down \UF72D
clear \UF739

control ^
option ~
shift $
command @
numpad #

http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/CORPCHAR.TXT

Selectors

http://www.hcs.harvard.edu/~jrus/site/selectors.html
http://svn.gna.org/svn/gnustep/apps/gorm/tags/Gorm-0_1_0/ClassInformation.plist
NSApplication, NSDocument, NSTextView, NSWindow

NSResponder

moveBackward: moveForward:
moveLeft: moveRight:
moveUp: moveDown:
moveBackwardAndModifySelection: moveForwardAndModifySelection:
moveLeftAndModifySelection: moveRightAndModifySelection:
moveUpAndModifySelection: moveDownAndModifySelection:

moveWordBackward: moveWordForward:
moveWordLeft: moveWordRight:
moveWordBackwardAndModifySelection: moveWordForwardAndModifySelection:
moveWordLeftAndModifySelection: moveWordRightAndModifySelection:

moveToBeginningOfLine: moveToEndOfLine:
moveToLeftEndOfLine: moveToRightEndOfLine:
moveToBeginningOfLineAndModifySelection: moveToEndOfLineAndModifySelection:
moveToLeftEndOfLineAndModifySelection: moveToRightEndOfLineAndModifySelection:
moveToBeginningOfParagraph: moveToEndOfParagraph:
moveToBeginningOfParagraphAndModifySelection: moveToEndOfParagraphAndModifySelection:
moveParagraphBackwardAndModifySelection: moveParagraphForwardAndModifySelection:

moveToBeginningOfDocument: moveToEndOfDocument:
moveToBeginningOfDocumentAndModifySelection: moveToEndOfDocumentAndModifySelection:

deleteBackward: deleteForward:
deleteWordBackward: deleteWordForward:
deleteToBeginningOfLine: deleteToEndOfLine:
deleteToBeginningOfParagraph: deleteToEndOfParagraph:
deleteBackwardByDecomposingPreviousCharacter:

insertText:
insertNewline: insertTab: insertBacktab:
insertNewlineIgnoringFieldEditor: insertTabIgnoringFieldEditor:
insertSingleQuoteIgnoringSubstitution: insertDoubleQuoteIgnoringSubstitution:

scrollLineUp: scrollLineDown:
scrollPageUp: scrollPageDown:
scrollToBeginningOfDocument: scrollToEndOfDocument:
pageUp: pageDown:
pageUpAndModifySelection: pageDownAndModifySelection:

selectWord: selectLine: selectParagraph: selectAll:

lowercaseWord: uppercaseWord: capitalizeWord:

setMark: swapWithMark: selectToMark: deleteToMark: yank:

transpose:
centerSelectionInVisibleArea:

Other classes

cut: copy: paste: delete:
pasteAsPlainText: pasteAsRichText:
yankAndSelect:
undo: redo:

TextMate

Many of TextMate's default shortcuts are defined in /Applications/TextMate.app/Contents/Resources/KeyBindings.dict. It's overridden by ~/Library/Application Support/TextMate/KeyBindings.dict. TextMate 2 also uses ~/Library/Application Support/TextMate/KeyBindings.dict.

{
	// the menu items don't apply to whole lines when lines are selected partially
	// moveSelectionLineUp: and moveSelectionLineDown: don't work in TextMate 2
	// "^\UF700" = (selectHardLine:, moveSelectionLineUp:);
	// "^\UF701" = (selectHardLine:, moveSelectionLineDown:);
	"^\UF702" = (selectHardLine:, shiftLeft:);
	"^\UF703" = (selectHardLine:, shiftRight:);

	// capitalizeWord: applies to selection or paragraph
	"~." = (selectWord:, capitalizeWord:);

	// selectParagraph: selects multiple unwrapped lines in some scopes
	"~l" = selectHardLine:;
	"~x" = (selectHardLine:, cut:);
	"~c" = (selectHardLine:, copy:);
	"~v" = (selectHardLine:, paste:);
	"~z" = (selectHardLine:, delete:);
	"~s" = (selectHardLine:, moveForwardAndModifySelection:, moveBackwardAndModifySelection:, moveBackwardAndModifySelection:, moveToEndOfParagraphAndModifySelection:);
	"~q" = (selectHardLine:, moveForwardAndModifySelection:, moveBackwardAndModifySelection:, moveBackwardAndModifySelection:, moveToEndOfParagraphAndModifySelection:, cut:);
	"~m" = (selectHardLine:, moveForwardAndModifySelection:, moveBackwardAndModifySelection:, moveBackwardAndModifySelection:, moveToEndOfParagraphAndModifySelection:, copy:);
	"~y" = (selectHardLine:, moveForwardAndModifySelection:, moveBackwardAndModifySelection:, moveBackwardAndModifySelection:, moveToEndOfParagraphAndModifySelection:, delete:);

	// these are required for the shortcuts to work in TextMate 1
	// "@\UF702" = moveToBeginningOfLine:;
	// "@\UF703" = moveToEndOfLine:;
	// "$@\UF702" = moveToBeginningOfLineAndModifySelection:;
	// "$@\UF703" = moveToEndOfLineAndModifySelection:;
	// "@\U007F" = deleteToBeginningOfLine:;
}

StandardKeyBinding.dict

Modified from the output of plutil -convert xml1 /System/Library/Frameworks/AppKit.framework/Resources/StandardKeyBinding.dict -o - | pl | ruby -pe '$_.gsub!(/[^ -~\n]/,"\\U%04x"%$0.unpack("U*")[0])'.

{
	"\r" = insertNewline:;
	"\n" = insertNewline:;
	"\U0003" = insertNewline:;
	"\t" = insertTab:;
	"\U0019" = insertBacktab:;
	"^\r" = insertLineBreak:;
	"^\n" = insertLineBreak:;
	"^\U0003" = insertLineBreak:;
	"^'" = insertSingleQuoteIgnoringSubstitution:;
	"^\"" = insertDoubleQuoteIgnoringSubstitution:;
	"^/" = insertRightToLeftSlash:;
	"~\r" = insertNewlineIgnoringFieldEditor:;
	"~\n" = insertNewlineIgnoringFieldEditor:;
	"~\U0003" = insertNewlineIgnoringFieldEditor:;
	"~\t" = insertTabIgnoringFieldEditor:;

	"\U007F" = deleteBackward:;
	"\b" = deleteBackward:;
	"\UF728" = deleteForward:;
	"\UF739" = delete:;
	"~\U007F" = deleteWordBackward:;
	"~\b" = deleteWordBackward:;
	"^~\U007F" = deleteWordBackward:;
	"~\UF728" = deleteWordForward:;
	"@\U007F" = deleteToBeginningOfLine:;
	"^\U007F" = deleteBackwardByDecomposingPreviousCharacter:;

	"\UF700" = moveUp:;
	"\UF701" = moveDown:;
	"\UF702" = moveLeft:;
	"\UF703" = moveRight:;
	"$\UF700" = moveUpAndModifySelection:;
	"$\UF701" = moveDownAndModifySelection:;
	"$\UF702" = moveLeftAndModifySelection:;
	"$\UF703" = moveRightAndModifySelection:;

	"~\UF702" = moveWordLeft:;
	"~\UF703" = moveWordRight:;
	"~$\UF702" = moveWordLeftAndModifySelection:;
	"~$\UF703" = moveWordRightAndModifySelection:;

	"@\UF702" = moveToLeftEndOfLine:;
	"@\UF703" = moveToRightEndOfLine:;
	"^\UF702" = moveToLeftEndOfLine:;
	"^\UF703" = moveToRightEndOfLine:;
	"@$\UF702" = moveToLeftEndOfLineAndModifySelection:;
	"@$\UF703" = moveToRightEndOfLineAndModifySelection:;
	"^$\UF702" = moveToLeftEndOfLineAndModifySelection:;
	"^$\UF703" = moveToRightEndOfLineAndModifySelection:;
	"~\UF700" = (moveBackward:, moveToBeginningOfParagraph:);
	"~\UF701" = (moveForward:, moveToEndOfParagraph:);
	"~$\UF700" = moveParagraphBackwardAndModifySelection:;
	"~$\UF701" = moveParagraphForwardAndModifySelection:;

	"\UF72c" = scrollPageUp:;
	"\UF72d" = scrollPageDown:;
	"^\UF700" = scrollPageUp:;
	"^\UF701" = scrollPageDown:;
	"~\UF72c" = pageUp:;
	"~\UF72d" = pageDown:;
	"$\UF72c" = pageUpAndModifySelection:;
	"$\UF72d" = pageDownAndModifySelection:;

	"\UF729" = scrollToBeginningOfDocument:;
	"\UF72b" = scrollToEndOfDocument:;
	"@\UF700" = moveToBeginningOfDocument:;
	"@\UF701" = moveToEndOfDocument:;
	"$\UF729" = moveToBeginningOfDocumentAndModifySelection:;
	"$\UF72b" = moveToEndOfDocumentAndModifySelection:;
	"$@\UF700" = moveToBeginningOfDocumentAndModifySelection:;
	"$@\UF701" = moveToEndOfDocumentAndModifySelection:;

	"^a" = moveToBeginningOfParagraph:;
	"^b" = moveBackward:;
	"^d" = deleteForward:;
	"^e" = moveToEndOfParagraph:;
	"^f" = moveForward:;
	"^h" = deleteBackward:;
	"^k" = deleteToEndOfParagraph:;
	"^l" = centerSelectionInVisibleArea:;
	"^n" = moveDown:;
	"^o" = (insertNewlineIgnoringFieldEditor:, moveBackward:);
	"^p" = moveUp:;
	"^t" = transpose:;
	"^v" = pageDown:;
	"^y" = yank:;
	"^A" = moveToBeginningOfParagraphAndModifySelection:;
	"^B" = moveBackwardAndModifySelection:;
	"^E" = moveToEndOfParagraphAndModifySelection:;
	"^F" = moveForwardAndModifySelection:;
	"^N" = moveDownAndModifySelection:;
	"^P" = moveUpAndModifySelection:;
	"^V" = pageDownAndModifySelection:;
	"^~b" = moveWordBackward:;
	"^~f" = moveWordForward:;
	"^~B" = moveWordBackwardAndModifySelection:;
	"^~F" = moveWordForwardAndModifySelection:;

	"@\U0020" = cycleToNextInputScript:;
	"~@\U0020" = cycleToNextInputKeyboardLayout:;
	"^@\U0020" = togglePlatformInputSystem:;
	"^@\UF701" = makeBaseWritingDirectionNatural:;
	"^@\UF703" = makeBaseWritingDirectionLeftToRight:;
	"^@\UF702" = makeBaseWritingDirectionRightToLeft:;
	"^~@\UF701" = makeTextWritingDirectionNatural:;
	"^~@\UF703" = makeTextWritingDirectionLeftToRight:;
	"^~@\UF702" = makeTextWritingDirectionRightToLeft:;

	"\U001B" = cancelOperation:;
	"@." = cancelOperation:;
	"\UF708" = complete:;
	"~\U001B" = complete:;
	"^\U0019" = selectPreviousKeyView:;
	"^\t" = selectNextKeyView:;
}