Редактор linux vi поиск

Найти и заменить в Vim / Vi

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

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

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

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

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

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

Команда ищет в каждой строке в [range] и заменяет его . [count] — положительное целое число, умножающее команду.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  Linux заменить файл другим

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примеры

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

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

Замените все экземпляры «яблоко», «апельсин» и «манго» на «фрукты»:

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

Вывод

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

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

Источник

How to Search to Find a Word in Vim or Vi Text Editor

Vim and its older counterpart Vi are widely used text editors. They are both open-source (free) and available on most Linux and macOS distributions.

Searching in Vim/Vi for words or patterns is a common task that allows you to navigate through large files easily.

This tutorial shows you how to search in Vim/Vi with practical examples.

Читайте также:  Просмотр всех папок linux

How to search in Vim/Vi

Important: Make sure you are in Normal Mode before you start searching. This allows in-text navigating while using normal editor commands. Vi and Vim open a file in normal mode by default.
To switch to normal mode, press Esc.

Basic Searching in Vim / Vi

There are two ways to search for a pattern of numbers or letters in the Vim/Vi text editor.

1. Search forward for the specified pattern

2. Search backward for the specified pattern

The direction is determined in relation to the cursor position.

Searching Forward For Next Result of a Word

To search forward, use the command:

Replace pattern with the item(s) you want to find.

For example, to search for all instances of the pattern «root», you would:

1. Press Esc to make sure Vim/Vi is in normal mode.

The text editor highlights the first instance of the pattern after the cursor. In the image below, you can see that the result is part of a word that contains the specified pattern. This is because the command does not specify to search for whole words.

Search forward for a pattern in Vim.

From this position, select Enter and:

  • jump to the next instance of the patter in the same direction with n
  • skip to the next instance of the pattern in the opposite direction with N

Searching Backward For a Word

To search backward type:

Replace pattern with the item(s) you want to find.

For example, to search for all instances of the pattern «nologin», you would:

1. Press Esc to make sure Vim/Vi is in normal mode.

Vim/Vi highlights the first instance of the specified pattern before the cursor.

Search in Vi/Vim backward.

Hit Enter to confirm the search. Then, you can:

  • move to the next instance of the pattern in the same direction with n
  • jump to the next instance of the pattern in the opposite direction with N

Searching for Current Word

The current word is the word where the cursor is located.

Instead of specifying the pattern and prompting Vim/Vi to find it, move the cursor to a word, and instruct it to find the next instance of that word.

1. First, make sure you are in normal mode by pressing Esc.

2. Then, move the cursor to the wanted word.

  • Search for the next instance of the word with *
  • Search for the previous instance of the word with #

Each time you press * or # the cursor moves to the next/previous instance.

Searching for Whole Words

To search for whole words, use the command:

The text editor only highlights the first whole word precisely as specified in the command.

screenshot of searching and finding a whole word in vim

Open a File at a Specific Word

Vim (and Vi) can open files at a specified word allowing you to skip a step and go directly to the searched term.

Читайте также:  Linux icmp destination unreachable

To open a file at a specific word, use the command:

For example, to open the /etc/passwd file where it first uses the term «root», use the command:

The text editor opens the file and the first line it displays is the one containing the term «root», as in the image below.

example of opening a file in vim at a specific word

Note: An alternative to opening a file at a specific word is opening a specified line number. To enable line numbering, refer to How to Show or Hide Numbers in Vi/Vim.

By default Vi(m) is case sensitive when searching within the file. For example, if you search for the term /user it doesn’t show results with the capitalized U (i.e., User).

There are several ways to make Vim/Vi case insensitive.

The \c attribute instructs Vi(m) to ignore case and display all results.

  • An alternative is to set Vim to ignore case during the entire session for all searches. To do so, run the command:
  • Lastly, the configuration file can be modified for the text editor to ignore case permanently. Open the ~/.vimrc file and add the line :set ignorecase .

Highlight Search Results

Vi(m) has a useful feature that highlights search results in the file. To enable highlighting, type the following command in the text editor:

To disable this feature run:

Note: Vim color schemes are another useful feature for practical syntax highlighting. To learn more, check out How To Change And Use Vim Color Schemes.

Search History

Vi(m) keeps track of search commands used in the session. Browse through previously used commands by typing ? or / and using the up and down keys.

After reading this article, you have multiple options to search and find words using Vim.

Once you find the searched term, you can move on to cutting, copying, or pasting text.

Sofija Simic is an experienced Technical Writer. Alongside her educational background in teaching and writing, she has had a lifelong passion for information technology. She is committed to unscrambling confusing IT concepts and streamlining intricate software installations.

Vim (Vi IMproved) is a well-known, open-source text editor for Linux or Unix systems. It is a powerful and.

Vim allows you to delete entire lines, words or characters using various Vim commands. Learn the most.

Mastering basic Vim commands includes learning how to undo and redo changes in this text editor. Knowing how.

Vim text editor is one of the most widely used text editor. For that reason, you should learn some of the.

Источник

Оцените статью
Adblock
detector