03.03.2021
  • Главная
  • Карта сайта
  • Контакты
  • Конфиденциальность
Популярно

Meizu анонсирует Flyme 9 и Flyme for…

Xiaomi официально подтверждает AMOLED-дисплей 120 Гц для…

Как установить текстовый редактор Atom на Ubuntu…

Huawei Mate 20, Mate 20 Pro и…

ТОП-10 самых мощных смартфонов в феврале 2021…

Нетология проведет бесплатный интенсив о трендах Instagram…

Яндекс приглашает маркетологов на Дзен-среду – «День,…

Как получать недорогие заявки через Формы в…

9 способов точного определения целевой аудитории для…

Имеет ли значение структура URL-адреса для Google

BestWebber

  • Новости
  • Заработок
  • Продвижение
  • Социальные сети
  • Веб-Мастеру
BestWebber
Веб-Мастеру

Найти и заменить в Vim/Vi4 мин для чтения

by gidsoft08.02.202100
Поделиться

В этой статье описывается, как найти и заменить текст в Vim/Vi.

Vim – самый популярный текстовый редактор командной строки. Он предустановлен в macOS и большинстве дистрибутивов Linux. Найти и заменить текст в Vim можно быстро и легко.

 

Содержание страницы

  • Базовый поиск и замена
  • Чувствительность к регистру
  • Диапазон поиска
  • Замена всего слова
  • История замены
  • Примеры
  • Заключение

Базовый поиск и замена

В Vim вы можете найти и заменить текст с помощью команды :substitute( :s).

Чтобы запускать команды в Vim, вы должны находиться в обычном режиме – режиме по умолчанию при запуске редактора. Чтобы вернуться в обычный режим из любого другого режима, просто нажмите клавишу «Esc».

Общая форма команды замены следующая:

:[range]s/{pattern}/{string}/[flags] [count]

 

Команда ищет в каждой строке [range]a {pattern}и заменяет ее на {string}. [count] – положительное целое число, умножающее команду.

Если нет [range] и [count], заменяется только шаблон, найденный в текущей строке. Текущая строка – это строка, в которой находится курсор.

Например, чтобы найти первое вхождение строки ‘foo’ в текущей строке и заменить его на ‘bar’, вы должны использовать:

:s/foo/bar/

 

Чтобы заменить все вхождения шаблона поиска в текущей строке, добавьте флаг g:

:s/foo/bar/g

 

Если вы хотите найти и заменить шаблон во всем файле, используйте символ процента % в качестве диапазона. Этот символ указывает диапазон от первой до последней строки файла:

:%s/foo/bar/g

 

Если {string} опущена, она рассматривается как пустая строка, и соответствующий шаблон удаляется. Следующая команда удаляет все экземпляры строки ‘foo’ в текущей строке:

:s/foo//g

 

Вместо символа косой черты ( /) можно использовать любой другой однобайтный символ, кроме буквенно-цифрового, кроме разделителя. Эта опция полезна, если в шаблоне поиска или в строке замены есть символ ‘/’.

:s|foo|bar|

 

Для подтверждения каждой замены используйте cфлаг:

:s/foo/bar/gc
replace with bar (y/n/a/q/l/^E/^Y)?

 

Нажмите, yчтобы заменить совпадение, или l чтобы заменить совпадение и выйти. Нажмите, nчтобы пропустить матч, q или Esc, чтобы выйти из замены. Вариант a заменяет совпадение и все остальные вхождения. Для прокрутки экрана вниз используйте CTRL+Y, а для прокрутки вверх используйте CTRL+E.

Читать  Как подсчитать количество файлов в каталоге в Linux

Вы также можете использовать регулярные выражения в качестве шаблона поиска. Приведенная ниже команда заменяет все строки, начинающиеся с ‘foo’, на ‘Vim is the best’:

:%s/^foo.*/Vim is the best/gc

 

Символ ^(каретка) соответствует началу строки и .* соответствует любому количеству любых символов.

 

Чувствительность к регистру

По умолчанию операция поиска чувствительна к регистру; поиск «FOO» не будет соответствовать «Foo».

Чтобы игнорировать регистр в шаблоне поиска, используйте iфлаг:

:s/Foo/bar/gi

 

Другой способ принудительно игнорировать регистр – это добавить c после шаблона поиска. Например, /Linuxc выполняет поиск без учета регистра.

Если вы изменили настройку регистра по умолчанию и хотите выполнять поиск с учетом регистра, используйте флаг I:

:s/foo/bar/gi

 

Заглавные буквы C после шаблона также приводят к поиску совпадений по регистру.

 

Диапазон поиска

Если диапазон не указан, замещающая команда работает только в текущей строке.

Диапазон может быть одной строкой или диапазоном между двумя строками. Спецификаторы строки разделяются символами , или ;. Диапазон можно указать с помощью абсолютного номера строки или специальных символов.

Например, чтобы заменить все вхождения ‘foo’ на ‘bar’ во всех строках, начиная со строки 3 по строку 10, вы должны использовать:

:3,10s/foo/bar/g

 

Диапазон является включительным, что означает, что первая и последняя строки включены в диапазон.

Точка .обозначает текущую строку, а знак доллара $ – последнюю строку. Чтобы заменить ‘foo’ во всех строках, начиная с текущей строки до последней:

:.,$s/foo/bar/

 

Спецификатор строки также можно установить с помощью символа «+» или «-», за которым следует число, которое добавляется или вычитается из номера предыдущей строки. Если число после символа опущено, по умолчанию используется 1.

Например, чтобы заменить каждое ‘foo’ на ‘bar’, начиная с текущей строки и четырех следующих строк, введите:

:.,+4s/foo/bar/g

 

Замена всего слова

Команда замены ищет образец как строку, а не целое слово. Если, например, вы искали «gnu», поиск совпадет с тем, что «gnu» встроено в слова большего размера, такие как «cygnus» или «magnum».

Читать  Ansible. Роли в Ansible

Для поиска целого слова введите, < чтобы отметить начало слова, введите шаблон поиска, введите, > чтобы отметить конец слова:

Например, для поиска слова «foo» вы должны использовать <foo>:

:s/<foo>/bar/

 

История замены

Vim отслеживает все команды, которые вы выполняете в текущем сеансе. Чтобы просмотреть историю предыдущих команд замены, введите :sи используйте клавиши со стрелками вверх/вниз, чтобы найти предыдущую операцию замены. Чтобы запустить команду, просто нажмите Enter. Вы также можете отредактировать команду перед выполнением операции.

 

Примеры

Строки комментариев (добавить #перед строкой) от 5 до 20:

:5,20s/^/#/

 

Раскомментируйте строки с 5 по 20, отмените предыдущие изменения:

:5,20s/^#//

 

Замените все экземпляры «apple», «orange» и «mango» на «fruit»:

:%s/apple|orange|mango/fruit/g

 

Удалите завершающие пробелы в конце каждой строки:

:%s/s+$//e

 

Заключение

Поиск и замена – это мощная функция Vim, которая позволяет быстро вносить изменения в текст.

Не стесняйтесь оставлять комментарии, если у вас есть вопросы.

Источник: AndreyEx.ru

Поделиться
предыдущая запись
Apple разрабатывает неубиваемый Lightning — он не будет изнашиваться
следующая запись
В работе сервисов Яндекса по всей России произошел сбой

Похожие записи

Настройка OpenVPN в Ubuntu 20.04

gidsoft17.01.2021

Установка драйверов AMD Ubuntu 16.04

gidsoft19.10.2018

Обои для рабочего стола Linux

gidsoft04.11.2018

Релиз ZorinOS 12 Beta

gidsoft24.01.2019

Как отключить функцию перетаскивания metabox в панели управления в WordPress

gidsoft03.10.2019

Управление кулером Linux

gidsoft07.10.2018

Курсы seo продвижения

gidsoft11.07.2019

Установка Fail2ban на CentOS

gidsoft06.01.2020

Настройка Gnome Tweak Tool

gidsoft15.11.2019
Нажмите, чтобы оставить комментарий
  • Комментарии
  • Комментарии в Facebook

Категории

  • Веб-Мастеру (3 322)
  • Заработок в интернете (157)
  • Мобильные технологии (316)
    • Android (152)
    • Apple (164)
    • Игры (20)
    • Программы (95)
    • Технологии (82)
  • Новости рынка (2 350)
  • Программирование (199)
    • JavaScript (14)
    • PHP (140)
      • Laravel (124)
    • WordPress (18)
    • Различные CMS (27)
  • Продвижение в интернете (696)
  • Социальные сети (290)

Содержание

  • Базовый поиск и замена
  • Чувствительность к регистру
  • Диапазон поиска
  • Замена всего слова
  • История замены
  • Примеры
  • Заключение
BestWebber
Подпишись
Все материалы на данном сайте взяты из открытых источников - имеют обратную ссылку на материал в интернете или присланы посетителями сайта и предоставляются исключительно в ознакомительных целях.

Права на материалы принадлежат их владельцам. Администрация сайта ответственности за содержание материала не несет.

© Copyright 2021, Все права на материалы, размещенные на этом сайте - принадлежат их правообладателям.
  • Новости
  • Заработок
  • Продвижение
  • Социальные сети
  • Веб-Мастеру
BestWebber
  • Новости
  • Заработок
  • Продвижение
  • Социальные сети
  • Веб-Мастеру