Using the function would cause problems when trying to perform a `sudo
vim`. The sudo command would run in a root shell which does not have my
shells functions (but does have it's aliases) so then any attempt to
sudo vim would fail with "vim_option_select: command not found"
Also add better history management. I've been using GNU screen for a
while which messes up history for a lot of shells. Every shell will now
append to and reread history after each command.