Here is a trick that I used to use when I started learning VIM:

- Write down 2-3 tricks/shortcuts in a piece of paper. Put that piece of paper in front of you (ie: tag it to your screen).

- Code with Vim. You'll eventually look at the piece of paper and find some of these shortcuts helpful. So you'll use them.

- After a while, these shortcuts will get into your muscle memory and you'll no longer need the piece of paper.

- When you are coding with VIM, detect annoying patterns: For example, I need to jump code, I need to replace often, I need to be able to select some text this way, I need GIT integration. You get the point.

- Put these observations on a list. Pull 2-3 items (shortcuts) from this list and tag another paper to your screen. Pull 2-3 items (plugins/functionality) and enhance your VIM.

- After a few years, your VIM will become extremely customized. You'll actually have trouble writing code on any other IDE.

- Here is mine: https://github.com/omarabid/vimrc

Other bonus tips:

- Use GIT to keep track of your VIM configuration.

- Write a README file for your configuration. Other things that I should do: Update the README often, and add screenshots.

ps: in case you haven't noticed, I'm a die-hard VIM fan.

> After a few years, your VIM will become extremely customized. You'll actually have trouble writing code on any other IDE.

This would actually be a significant detriment to many Vim and vi users who do system administration, because they can't rely on any customization when the drop into a terminal on a random server.

The one thing I really wish the browsers would adopt is a reliable vi/emacs toggle for text entry windows. Vimium, vimperator, etc, they're never reliably available, always at the mercy of the upstream browser.

If you just want a vi/vim toggle for your browser, wasavi[1] is what you're after.

https://github.com/akahuku/wasavi