An implementation of vim in JavaScript