Оба Ruby и Vim используют "g" с командами подстановки, чтобы означать "все вхождения". Что означает "g" ?
В частности, в Ruby String class имеет две команды "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 принимают регулярное выражение, но мое понимание жадного соответствия "соответствует максимально возможной подстроке, соответствующей этим критериям," не "соответствуют как можно большему количеству подстрок". (См. " Остерегайтесь жадности!" )