Consider the following Vim ex command,

```
:let i=1 | '<,'>g/^/ s/^\ *-/\=i/ | let i+=1

```

It replaces the heading dash with ordered number in selected lines.

I don't understand why this command works as a loop from the first line to the last line of the selected lines. That is, how `g` can repeat `let i+=1` over and over again.