vim: Cleanup word matching code

**Don't merge it yet!** It requires review from people that actually know the Vim syntax :)
the check for `endfo` was negative: the check matched "`endf*` but not `endfo`" (or put in other words, matched `endf` not followed by `o`).  `wordMatchLen()` does this implicitly by requiring a non-word-character after the match, so `endfo` won't get matched.