Tuesday, February 15, 2011

Диапазоны в vim

Диапазоны позволяют применять команду к группе строк в текущем буфере. Для большинства команд диапазоном по умолчанию является текущая строка, например:
: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 диапазоном по умолчанию является %.

Вольный перевод части этого.

Labels: ,

0 Comments:

Post a Comment

<< Home