add vim mode support and key binding