This moves from a one-size-fits-all approach for tab expansion to
dictating a default expansion scheme and a per filetype scheme. The
current plugin has custom schemes for Ruby and Makefiles.
Instead of using <ESC>i to get out of insert mode and reenter it at
the closing bracket, Vim accepts the use of <Left> to move the cursor
left without leaving insert mode. This allows undo and repeats to work.
The { mapping used to open a C-style block, however, it gave several
problems when dealing with Perl code and hashes. This converts it to
simply working as {}, like the ( -> () and [ -> [] mappings.
This will always highlight characters that exceed the 80 character
limit with ErrorMsg, but will also highlight the 81st column, so
the user knows when to break.