It felt like it belonged there with the other behaviour logic pertaining to events occurring on the page (as opposed to the browser chrome). Perhaps not though, what's the responsibility of the Vim class?