Онлайн-рабочие станции OnWorks Linux и Windows

Логотип

Бесплатный хостинг в Интернете для рабочих станций

<Предыдущая | Содержание: | Следующая>

Глобальный поиск и замена

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 чтобы пропустить этот экземпляр и перейти к следующему.


Лучшие облачные вычисления для ОС в OnWorks: