But I have been using emacs for way more than ten years daily and still have much to learn.
Yes, I can imagine that you can learn vi in a shorter time, but I know very little about it. I actually know more about 'ed' than I do vi.
One (strenuous) exercise is to write a full, complete tutorial for a language. Explain it to your grandmother, for example. That will get you there quicker. And you will learn things about the product that you would not otherwise know.
Another exercise to completely learn a language is to write a compiler for it. This will flush out the corners of the language for you.
But these are admittedly a bit extreme methods.
I agree that it is worthwhile to master your tools.