Диапазоны в vim
Диапазоны позволяют применять команду к группе строк в текущем буфере. Для большинства команд диапазоном по умолчанию является текущая строка, например:
:s/old/new/g заменяет все old на new в текущей строке
Диапазоны могут быть указаны с использованием номеров строк или спецсимволов,как это показано в примерах далее:
:s/old/new/g заменяет все old на new в текущей строке
Диапазоны могут быть указаны с использованием номеров строк или спецсимволов,как это показано в примерах далее:
Диапазон | Описание | Пример |
---|---|---|
21 | line 21 | :21s/old/new/g |
1 | первая строка | :1s/old/new/g |
$ | последняя строка | :$s/old/new/g |
. | текущая строка | :.w single.txt |
% | все строки (аналог 1,$) | :%s/old/new/g |
21,25 | строки с 21 по 25 включительно | :21,25s/old/new/g |
21,$ | строки с 21 до последней | :21,$s/old/new/g |
.,$ | строки от текущей до последней | :.,$s/old/new/g |
.+1,$ | строки от следующей за текущей до последней | :.+1,$s/old/new/g |
.,.+5 | шесть строк (текущая + последующие 5) | :.,.+5s/old/new/g |
.,.5 | то же, что и предыдущее (.5 интерпретируется как .+5) | :.,.5s/old/new/g |
Стоит обратить внимание на четвертый пример: в нем будет создан новый файл single.txt, содержащий только текущую строку.
Если возникла задача произвести замену в 6 строках, начиная с текущей, то можно воспользоваться одним из методов, приведенных в примерах выше. Однако есть более простой способ: напечатать 6, а затем команду замещения без диапазона (напр. :s/old/new/g). Так как сначала было введено число, vim отобразит команду :.,.+5s/old/new/g. Чего и хотелось.
Для большинства команд диапазоном по умолчанию является ., однако для команд :g// и :w диапазоном по умолчанию является %.
Вольный перевод части этого.