Why VI?

Because the output of all known HTML generators sucks, and by the time you've learned how to use one you could just have well learned to write real HTML using your favourite text editor. (Which need not even be VI, even with EMACS it is sometimes possible to produce acceptable results.)