There are a couple of questions already here for whether or not a VM should be used as a development environment. I don't wish to answer that question here but I'm assuming that a VM should be used as a development environment.
My question here is on guidelines for which tools should exist in the VM and which should exist on the host.
For example, I would generally use a VM in a headless mode for development as a Virtual GUI often means a lag. This would restrict the use of a text editor to either be a command line tool such as VIM or for a GUI text editor such as sublime text to be run in the host with a shared directory.
This then leads on to code generation (scaffolding) tools such as Yeoman's yo. What would be the benefit this inside a VM?
I'd like to know some general guidelines so that I can have a useful developer workflow.