total rewrite of vim