Replace "!" and "?" with "r" and "p".

The subhsell thing didn't work anyway.  But
you can still redo commands using "r" and "p".

Also refactored a bit.