improv: implement vi-mode