If you look into the plover community, there are plenty of great resources for learning it. The learning curve is
very steep, but it's also very easy on the hands.
As I recall there are a few people who have custom vim bindings, and even write code using it.