On OSX w/ Chrome I use wasavi[0], an extension that implements a nice subset of vim directly in the text area (much like OP's system, but not using actual vim). Works really well, better than other extensions I've tried that attempt to ~shellout to $EDITOR and then sync back to the input area.
[0] https://github.com/akahuku/wasavi