Vim.js is a project mainly written in JAVASCRIPT and COFFEESCRIPT, it's free.
A vim implementation in javascript
Implementation should be independent of view (e.g., <textarea>, <canvas>, <div>, and possibly a curses interface with node should all work)
Should work as a jquery plugin:
$('element').vim();
Should support all my favorite vim keybindings