<Предыдущая | Содержание: | Следующая>
Глобальный поиск и замена
vi использует команду ex для выполнения операций поиска и замены (называемых в vi «заменой») над диапазоном строк или над всем файлом. Чтобы изменить слово «Line» на «line» для всего файла, мы должны ввести следующую команду:
:%s/линия/линия/г
:%s/линия/линия/г
Давайте разобьем эту команду на отдельные элементы и посмотрим, что делает каждый из них:
Таблица 12-5: Пример глобального синтаксиса поиска и замены
Пункт Значение
Пункт Значение
: Символ двоеточия запускает команду ex.
% Указывает диапазон строк для операции. % это сокращение, означающее путь от первой строки до последней строки. Альтернативно можно было бы указать диапазон 1,5 (поскольку наш файл имеет длину пять строк), или 1, $ что означает «от строки 1 до последней строки файла». Если диапазон строк опущен, операция выполняется только над текущей строкой.
Поиск и замена
s Определяет операцию. В данном случае замена (поиск и замена).
/Line/line/ Шаблон поиска и текст замены.
g Это означает «глобальный» в том смысле, что поиск и замена выполняются для каждого экземпляра строки поиска в строке. Если этот параметр опущен, заменяется только первый экземпляр строки поиска в каждой строке.
После выполнения команды поиска и замены наш файл выглядит следующим образом:
Быстрая, коричневая лиса, перепрыгнула через ленивого пса. Это было круто. линия 2
линия 3
линия 4
линия 5
Быстрая, коричневая лиса, перепрыгнула через ленивого пса. Это было круто. линия 2
линия 3
линия 4
линия 5
Также мы можем указать команду подмены с подтверждением пользователя. Это делается путем добавления буквы «c» в конец команды. Например:
:%s/линия/линия/gc
:%s/линия/линия/gc
Эта команда вернет наш файл в его предыдущую форму; однако перед каждой заменой vi останавливается и просит нас подтвердить замену таким сообщением:
заменить на строку (y/n/a/q/l/^E/^Y)?
заменить на строку (y/n/a/q/l/^E/^Y)?
Каждый из символов в скобках является возможным выбором следующим образом:
Таблица 12-6: Замена ключей подтверждения
Ключевое действие
Ключевое действие
y Выполните замену.
n Пропустите этот экземпляр шаблона.
a Выполните замену в этом и всех последующих экземплярах шаблона.
q или Esc Завершить замену.
l Выполните эту замену и затем выйдите. Сокращение от «последний».
Ctrl-e, Ctrl-y Прокрутка вниз и вверх соответственно. Полезно для просмотра контекста предлагаемой замены.
Если вы напечатаете y, будет произведена замена, n вызовет vi чтобы пропустить этот экземпляр и перейти к следующему.