What it's indirectly saying is, to avoid a space in the resulting string that's executed, use ..
instead of no operator at all. When there's no operator at all, each string or potentially variable is considered a separate argument.
First of all, I don't know if it's a typo on your end or if that's the actual result you're getting, but :echo 'a' 'b'
for me (Vim 8.2 1-3013) echos a b
. The point behind using the ..
operator is to do string concatenation instead of applying "simulated" varargs that have a space appended between each argument. In a manner of speaking, the way echo
and execute
works can be compared to Python's print()
function: If you print('a', 'b')
, you get a b
, but if you print(a + b)
, you get ab
. The point is, this demonstrates that .
and ..
do the same thing in this specific context: it does string concatenation instead of passing "multiple arguments" to echo
. You've already noticed this on your own, but combined with how execute
and echo
work with space-separated strings, it might be more obvious that it's just normal string concatenation. Demonstration aside, let's look at some actual evidence of that from the help.