The `g` option (e.g. `s/pattern/replacement/g`) for many tools that use regex-style pattern matching and the `:g` command in `ed`, `ex`, `vi`, and `vim` have pretty similar usage and meaning: match the given regex "globally", i.e., don't stop after the first match.

I have a two-fold question about this:

* Which came first, the `:g` command or the `g` pattern-matching flag, and in which tool? It looks like most tools (such as `sed`) that use the `g` flag in their pattern-matching are really just directly or indirectly emulating `ed`. For instance, in the post-Perl age, most tools that use regex allow the `g` flag because Perl does, and Perl, it would appear, does it because `ed` -> `sed` -> `Perl`. So I wouldn't be surprised if the answer is "they were introduced simultaneously in the original `ed` tool, and have no historical precedent beyond that."
* Why is this called the `global` option (or command)? There's really nothing "global" about it; the `:g` command takes a range of lines just like any other `ed` command, and the `g` flag doesn't extend the range of the search in any way (it just allows multiple hits). I suppose I can't think of a *better* name, but the chosen one just seems odd to me, so I'm wondering if there's some reason for it I'm not seeing.