Глобальная команда Vim с шаблонами, соединенными запятой - PullRequest
0 голосов
/ 20 октября 2018

Из документов синтаксис команды :global:

:[range]g[lobal]/{pattern}/[cmd]
                        Execute the Ex command [cmd] (default ":p") on the
                        lines within [range] where {pattern} matches.

Я также встречал такие случаи использования :g:

:g/apples/+1,/peaches/ s/^/# /g
:g/start/+1,$ sort n

Принадлежит ли /apples/+1,/peaches/ здесь {pattern}?Где задокументирован этот синтаксис?

1 Ответ

0 голосов
/ 21 октября 2018

Я только что нашел объяснение этого самого использования :global в Vim Tips Wiki :

:g/apples/,/peaches/ s/^/# /g
    Insert "# " at the start of each line in all identified blocks. 
    :g/apples/ identifies each line containing "apples". 
    In each such line, .,/peaches/ s/^/# /g is executed 
    (the . is assumed; it means the current line, where "apples" occurs). 

Так что ,/peaches/ здесь определяет диапазон для замены команда .Несколько запутанная часть (которую я не нашел упомянутой в документации) состоит в том, что начальный '.' является необязательным в диапазоне.Добавление этого делает команду более очевидной:

:g/apples/.,/peaches/s/^/# /g
...