I'll mostly second @janos's answer.
I learned vim by
Deciding I would program exclusively in vim
Reading :help top-to-bottom
Continuing to program exclusively in vim
Reading Practical Vim by Drew Neil
More programming in vim
I now spend a lot of time on Vi & Vim, as well as writing VimScript.
I'll add that my choice to ...