Not really true. Half of it is just using vim commands within the language (such as set and normal), and it does get a bit weird with execute and all the string escaping. Vim regex is quite non-standard but that's because the use case in the editor makes for very different escaping rules than in programming, so basically just use very magic more (\v) in code.
The other half is a pretty standard syntax, with exception to needing 'call function()', which feels like some old language with a strict statement structure. But the semantics are actually quite similar to JavaScript, dictionaries especially are very straightforward.
To me the worst part of Vimscript is that it allows every word and command to be reduced to the minimum unambiguous set of characters, which is understandable in one-offs in an editing context. But some developers take it a bit far doing big codebases with those horribly shortened keywords, as much as it can be done. It just detracts from the community (people who would like to read code are put off) and quality of open source output.
Not being a Pythonista or Rubyist myself (but a PHP/JavaScripter) I found Vimscript quite easy to get into.
Those things we always hear about Vimscript sucking are mostly cargo culting by people with no experience with Vimscript in the first place. I personally hate the syntax of Ruby or Objective-C but I don't go around mocking those languages.
Anyway, your comment on shortening commands is very true. Case in point, the great CtrlP plugin:
It's an awful read but, once you replace all the shorthands with full names, the code is very readable and straightforward. To me, it looks pretty much like a PHP/JS without braces.
CtrlP was exactly my mental case in point when I commented on that. I needed to add some stuff to it, which I did begrudgingly after seeing the source, but now I'm considering forking it and rewriting in Lua both for speed (it's slow) and for readability. And as a pet project in Lua, of course.
The other half is a pretty standard syntax, with exception to needing 'call function()', which feels like some old language with a strict statement structure. But the semantics are actually quite similar to JavaScript, dictionaries especially are very straightforward.
To me the worst part of Vimscript is that it allows every word and command to be reduced to the minimum unambiguous set of characters, which is understandable in one-offs in an editing context. But some developers take it a bit far doing big codebases with those horribly shortened keywords, as much as it can be done. It just detracts from the community (people who would like to read code are put off) and quality of open source output.