vb4c - The Road to 1.0

Introducing vb4c - Vim Bindings for Chrome!

This is a blog post that I have needed to write for a couple of months now but a certain global health situation distracted me. But I’m settling into a life of self-isolation and am ready to get back to working on this.


vb4c is a fork of the popular but sadly abandoned Chrome extension, cVim. cVim brings vim-like bindings to chrome. It work(ed) really well, but recent changes to chrome broke some core functionality. A replacement was needed, so I decided to create a fork.

The Road to 1.0

vb4c needs a lot of work. The codebase is pretty old. In case you aren’t aware, the javascript world moves along pretty quickly. Most of the code is 4+ years old. Or about 15 javascript years.

All jokes aside, I need to finish a deep-dive into the code base in order to fully understand how this extension works. The chrome architecture is new to me. I have worked with javascript quite a bit but I am not a JS developer, so many of the intricacies are lost on me.

I do not imagine v1.0 will be a major re-write, but we will see what happens as I continue to learn how the extension functions.

How We’re Getting There

I have created a project board in the GitHub repo. I am going to need help with this, so I want to do all the work in the open.

Critical Bug Fixes

I have already merged in a few changes to fix bugs that broke core functionality. Now that those changes are done, the extension is fully useable again and can be manually installed. With that complete my next task is to get this extension approved and listed on the chrome web store for simple one-click installation.

Chrome Web Store

After merging the changes I quickly listed the extension for distribution in the Chrome web store and was rejected. I am working to rectify the issues Google had with the extension.

The reason for denial was requesting too many user permissions. I did not request any more than the original extension, cVim, but I may have done a bad job justifying why this extension needs those permissions. I am currently working to better understand what the extension does with every permission it requests.

Goals of 1.0 Release

  • Fix critical, feature-breaking bugs.
  • Get the extension approved and listed in the Chrome web store.
  • Understand and document the code.
  • Add CI tests.
  • Make it easy for other to contribute to the code base.
  • Improve logo/branding.


Q: Why was a fork needed? A: See above.

Q: Why not use a well-maintained and feature-complete extension like Surfing Keys? A: You certainly can! I liked the way cVim worked and wanted to keep using it, but with the major bugs fixed.

Q: But you’re not a javascript developer! A: I’m not! And I will need help maintaining this. If you are a JS dev and want to contribute to a cool open source project, please reach out to me.

Q: Why would you want to bring vim-like keyboard bindings to chrome? I thought the mouse was the future? A: Get off my lawn! Just kidding. Serious answer: you can be more productive if you never take your hands off the keyboard. Also it makes you feel like a 1337 hacker.

Q: OK you’ve convinced me, how do I get vb4c? A: I am working on getting this into the chrome web store. You can install it manually following these instructions.

Q: How can I contribute? A: Check out the repo, fork it, open a PR, or reach out to me directly.

Like what you're reading? Subscribe for email updates! No more than once a week - and probably much less often than that! No spam - I promise!