Найти в Дзене
DIGANN.RU | Linux & IT

Поиск и замена текста в Vim

В редакторе Vim есть мощный инструмент для поиска и замены текста, который часто используется при работе с  большими файлами или проектами. Чтобы приступить к поиску и замене, используйте команду :s или :substitute .

Полностью команда выглядит так:

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

Область использования или диапазон [range], это область в которой будет происходить поиск и замена текста:

  • % - применение ко всему документу.
  • $ - применение к концу файла.
  • 15,32 - применение к диапазону строк с 15-ой по 32-ю.
  • . (точка) - применение к текущей строке (можно не использовать).

Использование флагов [flags] :

  • g - этот флаг означает, что операция должна быть применена ко всем найденным вхождениям. Заменит все вхождения в строке. Без этого аргумента замена выполняется только для первого вхождения в каждой строке. Если включена опция "совместимый", Vim запоминает этот флаг и переключает его каждый раз, когда вы его используете, но сбрасывает, когда вы задаете новый шаблон поиска. Если включена опция "по умолчанию", то этот флаг включен по умолчанию, а аргумент [g] отключает его.
  • c - этот флаг требуют подтверждения перед заменой.  
  • i - этот флаг игнорирует регистр для шаблона. Опции 'ignorecase' и 'smartcase' не используются.

Эти флаги могут быть полезны при выполнении сложных задач с поиском и заменой текста в Vim.

Например, если вы хотите заменить все слова «Hello» это {pattern} на «Hi» это {string}, a g это [flags], то команда будет такой:

:%s/Hello/Hi/g

Это заменит все вхождения «Hello» на «Hi» во всех строках файла.
Если вы хотите начать поиск и замену в определенном участке текста, а не во всем файле, можно использовать команду
:10,20s/Hello/Hi/g, где 10 — это номер первой строки, c которой мы хотим начать замену,  
а 20 — это номер последней строки.

Чтобы заменить только первую встреченную строку, используйте команду:

:s/Hello/Hi

Чтобы заменить все вхождения «Hello» на «Hi», но с подтверждением перед каждой замены, можно использовать команду:

:%s/Hello/Hi/gc

Для поиска без замены используется команда /pattern, где "pattern" — это текст, который мы хотим найти.

Поиск и замена текста — это простая и мощная функция в Vim. Используя различные флаги и параметры, вы можете выполнять сложные манипуляции с текстом прямо в редакторе. Следование этому руководству поможет вам эффективно использовать эту функцию для повышения производительности при работе с текстами.

Так же в области {pattern} можно использовать регулярные выражения.

Надеюсь этот гайд будет вам полезен.