g option (
/pattern/g) for many tools that use regex-style pattern matching and the
:g command in
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
//goption, and in which tool? It looks like most tools (such as
sed) that use the
goption 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
goption because Perl does, and Perl, it would appear, does it because
Perl. So I wouldn't be surprised if the answer is "they were introduced simultaneously in the original
edtool, and have no historical precedent beyond that."
- Why is this called the
globaloption (or command)? There's really nothing "global" about it; the
:gcommand takes a range of lines just like any other
edcommand, and the
/goption 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.
P.S.: I've tagged this question with "regular-expressions" even though it's not exactly about regular expressions, since it does have a little bit to do with the historical basis for a particular usage of regex in various tools.