Как Ruby, так и Vim используют «g» с командами подстановки для обозначения «всех вхождений». Что означает "g"?
В частности, в Ruby класс String имеет две команды "sub": sub
заменит только первое вхождение, а gsub
заменит все вхождения. Например:
string = "One potato, two potato, three potato, four."
string.sub('potato','banana') # => "One banana, two potato, three potato, four."
string.gsub('potato','banana') # => "One banana, two banana, three banana, four."
Аналогичным образом, в Vim :%s/foo/bar
просматривает весь файл (что означает %
) и подставляет одно вхождение в каждой строке, но :%s/foo/bar/g
будет выполнять все вхождения в каждой строке.
Я полагаю, что в обоих случаях «g» означает «жадный», потому что и команды Ruby, и команда Vim принимают регулярное выражение, но мое понимание жадного сопоставления «соответствует самой длинной из возможных подстрок, удовлетворяющих этим критериям» , "not" соответствует как можно большему числу подстрок. " (См. " Остерегайтесь Жадности! ")