Smarter, situational vim