TextEdit: How to stop cursor always being at the bottom of the screen while writing?
Many full screen writing applications like WriteRoom and Byword either add a margin to the bottom or support centering the view around the current line.

You could also create ~/Library/KeyBindings/ and save a property list like this as DefaultKeyBinding.dict:

{
    "~p" = (moveToEndOfDocument:, insertNewlineIgnoringFieldEditor:, insertNewline:, insertNewline:, insertNewline:, insertNewline:, insertNewline:, insertNewline:, insertNewline:, insertNewline:, insertNewline:, insertNewline:, insertNewline:, insertNewline:, insertNewline:, insertNewline:, insertNewline:, moveWordBackward:, moveToEndOfParagraph:, moveForward:, centerSelectionInVisibleArea);
    "~r" = (moveToEndOfDocument:, moveWordBackward:, moveToEndOfParagraph:, moveToEndOfDocumentAndModifySelection:, deleteBackward:, centerSelectionInVisibleArea:, insertNewlineIgnoringFieldEditor:);
}


After reopening TextEdit, ⌥P should add padding lines to the end and ⌥R remove them.