user `pushd`/`popd` instead of `cd` & some clean up
use bash's vi editing mode