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

Vim Search Replace



Vim - это продвинутый и популярный текстовый редактор, который предустановлен в большинстве дистрибутивов Linux. Это текстовый редактор на основе командной строки, который в основном используется в операционных системах, не основанных на графическом интерфейсе. Он легко настраивается и имеет множество функций. Важным моментом в отношении Vim является то, что он оптимизирован для повторения.

В этой статье мы объясним одну из самых полезных функций - поиск и замену. Имея несколько настроек, вы можете искать все, что захотите, с молниеносной скоростью и с большей детализацией.







Метод №1: Найдите и замените по одному вхождению за раз (с помощью команды с косой чертой и точкой)

Самый простой способ найти и заменить слово в Vim - использовать команду косой черты и точки. Косая черта (/) может использоваться для поиска слова, а точка (.) Может использоваться для замены этого слова.



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



  • Откройте файл в Vim
  • Нажмите клавишу косой черты (/) вместе с поисковым запросом, например / search_term, и нажмите Enter. Он выделит выбранное слово.
  • Затем нажмите клавишу cgn чтобы заменить выделенное слово и ввести replace_term
  • Вернитесь в нормальный режим. Затем нажмите n, чтобы перейти к следующему вхождению поискового запроса.
  • Затем нажмите точку (.), Если вы хотите заменить следующее вхождение тем же replace_term, в противном случае снова нажмите клавишу n, чтобы перейти к следующему вхождению.

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





В Vim есть еще один лучший способ избежать этой повторяющейся задачи - использовать заменяющую команду.

Метод № 2 Найдите и замените с помощью команды Substitute

Команду замены можно использовать для выполнения базового или расширенного поиска и замены функций одной командой. Синтаксис этой команды:



$: s/<искать термин> /<replace_term> /вариант

Обратите внимание, что вы должны ввести эту команду в обычном режиме.

Где

  • S: означает замену
  • search_term: слово, которое вы хотите найти и заменить
  • replace_term: слово, которым вы хотите заменить его на
  • Вариант: c (для подтверждения), g (заменить все вхождения в одну строку), i (для игнорирования регистра)

Искать и заменить

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

:%s/<искать термин> /<replace_term> /грамм

Эта команда заменит все экземпляры search_term на replace_term.

Например, это наш образец текста:

Ubuntu - одна из наиболее часто используемых ОС Linux. Ubuntu включает тысячи полезных программ. С помощью командной строки Ubuntu вы можете выполнять практически любые задачи.

Чтобы заменить каждое вхождение Ubuntu на Debian в следующем тексте, будет использоваться следующая команда:

:%s/Ubuntu/Debian/грамм

Искать и заменять в одной строке

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

: s/<искать термин> /replace_term/грамм

Например, чтобы заменить вхождение Ubuntu на Debian в приведенном выше примере текста, можно использовать следующую команду без символа%:

: s/Ubuntu/Debian/грамм

Поиск и замена с подтверждением

Если вы хотите, чтобы вас попросили подтвердить перед заменой условия поиска, используйте c в конце команды поиска, как показано ниже:

: s/<искать термин> /<replace_term> /gc

Приведенная выше команда будет запрашивать подтверждение перед каждой заменой (введите y для да и n для нет).

Поиск и замена без учета регистра

Когда вы выполняете поиск и замену в Vim, по умолчанию учитывается регистр. Вы можете выполнить поиск без учета регистра, добавив i в конце команды следующим образом:

: s/<искать термин> /<replace_term> /давать

Например, для поиска термина Ubuntu независимо от его регистра (UBUNTU, Ubuntu, ubuntu, uBuntu) будет использоваться следующая команда:

: s/убунту/дебиан/давать

Найдите и замените все слово

По умолчанию замещающая команда ищет любое совпадение, частичное или полное. Чтобы соответствовать точному запросу search_term, а затем заменить его на replace_term, заключите search _term в.

Например, в некоторых документах вы хотите найти и заменить точное слово вы на меня. В этом случае будет использоваться следующая команда:

: s/<ты> /я/

Он найдет слово «ты» и заменит его на меня. Однако он не заменит такие слова, как ваше.

Поиск и замена слов в определенных строках

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

:<start_line>,<окончание линии>s/<искать термин> /<replace_term> /грамм

Например, чтобы найти и заменить вхождение Ubuntu на Debian из строк от 3 до 8 в каком-либо файле, команда будет выглядеть так:

:1, 10 с/убунту/дебиан/грамм

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

: s/искать термин/replace_term/g x

Точно так же для поиска и замены вхождения слова из текущей строки в последнюю строку: будет использоваться следующий синтаксис:

:.,$ s/искать термин/replace_term/грамм

ЗАКЛЮЧЕНИЕ

В этой статье мы узнали о двух способах поиска и замены любого слова в редакторе Vim из командной строки. Первая команда, в которой использовались косая черта и точка, - это самый простой и легкий метод, но он оказывается повторяющимся, когда вы ищете и заменяете слово, которое встречается слишком много раз. Другая команда, которая является командой подстановки, когда-то может показаться сложной и сложной, но как только вы начнете практиковать ее, вы обнаружите, что она чрезвычайно полезна во многих сценариях.