Поиск слов в Vi linux

Обновлено: 21.11.2024

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

Базовый поиск

В базовом поиске мы предоставим несколько простых терминов для поиска заданного термина в текущем файле. Существует два направления поиска: поиск вперед и поиск назад. Поиск вперед будет выполнять поиск от текущего местоположения курсора до конца файла. Обратный поиск будет искать от текущего местоположения курсора до начала файла. Прямой поиск можно выполнить с помощью / (прямая косая черта), а обратный поиск можно выполнить с помощью ? (знак вопроса).

Выполним прямой поиск с помощью / (обратная косая черта). Мы будем искать термин с именем

  • Сначала нажмите ESC, чтобы изменить обычный режим.
  • Используйте / и введите термин, число, слово, которое вы хотите найти. В этом случае мы будем искать в том числе . При вводе термина vim будет автоматически искать в фоновом режиме и вычислять первое вхождение текущего термина.
  • Последний шаг — нажать Enter, чтобы выполнить поиск.

Поиск вперед

Перейти к следующему вхождению

  • Нажав клавишу n, вы можете перейти к следующему результату поиска.

Перейти к предыдущему вхождению

  • Нажав клавишу N, вы можете перейти к предыдущему результату поиска.

Обратный/обратный поиск

? знак вопроса используется для поиска в обратном направлении, что означает от текущего местоположения курсора до начала файла. Поисковый запрос ставится после вопросительного знака. Выполните следующие действия для обратного или обратного поиска.

  • Нажмите Enter, чтобы перейти в обычный режим.
  • Тип ? (вопросительный знак) и введите термин, который вы хотите найти. В этом случае мы будем искать are.
  • Последний шаг — нажатие клавиши Enter, которая завершит поиск.

Обратный поиск

Перейти к следующему вхождению

  • Нажав клавишу n, вы можете перейти к следующему результату поиска.

Перейти к предыдущему вхождению

  • Нажав клавишу N, вы можете перейти к предыдущему результату поиска.

Поиск слова целиком

По умолчанию поиск Vim вперед и назад соответствует всему слову или его части. Подумайте, что при поиске термин are также будет соответствовать слову software. Мы можем искать и сопоставлять полное слово, помещая слово внутри знака меньше и больше знака. Но так как знак «меньше» и «больше» являются специальными знаками, перед ними будет использоваться обратная косая черта.

  • Нажмите Enter, чтобы перейти в обычный режим.
  • Введите / (косая черта) и поместите термин, который вы хотите найти, со знаками \ are\>. В этом случае мы будем искать are.
  • Последний шаг — нажатие клавиши Enter, которая завершит поиск.

Поиск всего слова

Поиск текущего слова

Поиск в текущем слове

История поиска

Являясь практичным и продвинутым текстовым редактором, Vim отслеживает историю поиска, где каждый поиск сохраняется в буфере. Существует две истории поиска, одна из которых является историей прямого поиска, а другая — историей поиска в обратном направлении. Вы можете получить доступ к истории прямого поиска, выполнив следующие действия.

  • Сначала нажмите ESC, чтобы изменить обычный режим.
  • Используйте /, а затем используйте стрелки вверх и вниз, чтобы просмотреть историю поиска вперед.

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

  • Сначала нажмите ESC, чтобы изменить обычный режим.
  • Использовать ? а затем используйте стрелки вверх и вниз, чтобы просмотреть историю поиска вперед.

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

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

  • Нажмите ESC для перехода в обычный режим.
  • Введите :set ignorecase или :set ic, что будет работать для текущего сеанса.

ИЛИ в краткой форме.

Вы можете снова изменить поиск на поиск с учетом регистра, выполнив следующие действия.

  • Нажмите ESC для перехода в обычный режим.
  • Введите :set noignorecase или :set noic, что будет работать для текущего сеанса.

Или в краткой форме.

Также можно отключить чувствительность поиска и выполнить поиск без учета регистра для конкретного поиска, добавив \c в конце поискового запроса. Например, поиск по термину are может выполняться без учета регистра, как показано ниже.

  • Нажмите ESC для перехода в обычный режим.
  • Введите /are\c для поиска без учета регистра.

Вы можете сделать нечувствительность к регистру постоянной конфигурацией, добавив следующие строки в файл конфигурации vim ~/.vimrc .

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

Vim или его предшественник Vi предустановлены в macOS и большинстве дистрибутивов Linux. Поиск текста — одна из самых распространенных задач при работе с файлами. Знание основ Vim может быть очень полезным, когда вы сталкиваетесь с ситуацией, когда ваш любимый редактор недоступен.

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

Vim позволяет быстро находить текст, используя символы / (косая черта) и ? (вопросительный знак) команды.

Для поиска вперед нажмите /, а для поиска назад нажмите ? , введите шаблон поиска и нажмите Enter, чтобы запустить поиск:

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

Нажмите n для поиска следующего вхождения или N в верхнем регистре для поиска в обратном направлении.

Основные шаги для выполнения поиска в Vim следующие:

  1. Нажмите / .
  2. Введите шаблон поиска.
  3. Нажмите Enter, чтобы выполнить поиск.
  4. Нажмите n, чтобы найти следующее вхождение, или N, чтобы найти предыдущее вхождение.

Чтобы найти слово целиком, начните поиск, нажав / или ? , введите \, чтобы отметить начало слова, введите шаблон поиска, введите \>, чтобы отметить конец слова, и нажмите Enter, чтобы выполнить поиск.

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

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

По умолчанию в результатах поиска учитывается регистр; поиск «GNU» не будет соответствовать «Gnu».

Чтобы игнорировать регистр, введите :set ignorecase или :set ic в командной строке Vim. Вы также можете установить параметр игнорирования по умолчанию, добавив команду в файл ~/.vimrc.

Чтобы вернуться в режим соответствия регистру, введите :set noignorecase или :set noic .

Еще один способ заставить игнорировать регистр – добавить \c после шаблона поиска. Например, /Linux\c выполняет поиск с игнорированием регистра. Заглавная буква \C после шаблона приводит к поиску с учетом регистра.

Для поиска в Vim/Vi введите / или ? , введите шаблон поиска и нажмите Enter .

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

Поиск строки символов

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

Чтобы найти строку символов, введите /, а затем строку, которую вы хотите найти, а затем нажмите клавишу Return. vi помещает курсор в следующее вхождение строки. Например, чтобы найти строку «meta», введите /meta, а затем Return.

Введите n, чтобы перейти к следующему вхождению строки. Введите N, чтобы перейти к предыдущему вхождению.

Для поиска в файле в обратном направлении можно использовать ? вместо / . В этой ситуации направления n и N меняются местами.

Обычно при поиске учитывается регистр: поиск по слову "китай" не найдет слово "Китай". Если вы хотите, чтобы vi игнорировал регистр во время поиска, введите :set ic . Чтобы вернуться к режиму по умолчанию с учетом регистра, введите :set noic .

Если vi находит запрошенную строку, курсор останавливается на ее первом вхождении. Если строка не найдена, в последней строке экрана vi отобразит Pattern not found.

Некоторые специальные символы ( / & ! . ^ * $ \ ? ) имеют особое значение для процесса поиска и должны быть «экранированы», когда они используются в поиске. Чтобы избежать специального символа, поставьте перед ним обратную косую черту ( \ ). Например, для поиска строки «что-нибудь?» типа /что-нибудь\? и нажмите «Ввод».

Вы можете использовать эти специальные символы в качестве команд для функции поиска.Если вы хотите найти строку, содержащую один или несколько из этих символов, вы должны поставить перед специальным символом обратную косую черту. Чтобы избежать обратной косой черты, введите \\ .

Уточнение поиска

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

Начало строки

Начало слова

Чтобы соответствовать началу строки, начните строку поиска с символа вставки (^). Например, чтобы найти следующую строку, начинающуюся с «Поиск», введите:

Чтобы соответствовать концу строки, завершите строку поиска знаком доллара ( $ ). Например, чтобы найти следующую строку, оканчивающуюся на «поиск», введите:

Обратите внимание, что точка начинается с обратной косой черты.

Чтобы соответствовать началу слова, введите \ в начале строки; чтобы соответствовать концу слова, введите \> в конце строки. Таким образом, чтобы найти слово, а не строку, объедините теги конца слова и начала слова в шаблоне поиска. Например, чтобы найти следующее вхождение слова — а не строки — «поиск», введите:

Чтобы сопоставить любой символ, введите точку ( . ) в строке в том месте, где нужно сопоставить. Например, чтобы найти следующее вхождение слов «дезинформация» или «дезинформация», введите:

Поскольку это поиск строки, а не слова, этот шаблон поиска может также найти такие конструкции, как "дезинформационист" и "дезинформационизм".

Чтобы искать альтернативные символы в строке, заключите альтернативы в квадратные скобки. Строка шаблона поиска /[md] находит строки, начинающиеся с «m» или «d». И наоборот, строка /[d-m] находит строки, начинающиеся с любой буквы от «d» до «m».

Чтобы найти ноль или более вхождений последнего символа, введите в строке звездочку ( * ). Вы можете эффективно комбинировать квадратные скобки и звездочку, чтобы искать четко определенные альтернативы. Например, чтобы найти все строки, начинающиеся с a до z и заканчивающиеся на «isinformation», а также найти все вхождения строки «isinformation», введите:

Замена строки символов

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

Основная форма команды:

Затем нажмите клавишу возврата.

Поэтому, чтобы заменить каждое вхождение строки «дезинформация» на «новояз», введите:

Затем нажмите клавишу Return.

Вы можете изменить эту команду, чтобы остановить поиск и заставить vi запрашивать, хотите ли вы произвести замену в каждом экземпляре. Следующая команда использует gc (добавляя c для «консультации»), чтобы заставить vi останавливаться при каждом появлении «дезинформации» и спрашивать, хотите ли вы произвести замену. Ответьте буквой y, если да, или n, если нет.

Вы можете отменить использование функции поиска и замены, нажав Ctrl-C .

Переход к определенной строке

Чтобы перейти к последней строке открытого файла, введите G . Чтобы вернуться к первой строке файла, введите 1G .

Вы можете перейти к любой другой строке, введя ее номер, а затем G .

Например, предположим, что вы закрыли файл paint при редактировании строки 51. Вы можете получить доступ к этой строке, открыв файл и набрав 51G .

Я могу искать слово в vim с помощью /word . Как выполнить поиск только по слову, исключая поиск по словам1 и слов2?

5 ответов 5

\ означает начало слова, а \> означает конец слова,

@semja: допустим, у вас есть переменная «данные» и ее действительное указание «данные_валидны». Если я хочу искать только «данные», но не «данные_валидны», тогда «/ данные» не будут выполнять эту работу. Мне нужно указать vim, где остановить сопоставление с шаблоном.

Есть ли конфигурация vim, позволяющая искать точное слово без переноса строки поиска на символы \ и \?

  1. имя файла vim
  2. нажмите /
  3. введите слово, которое вы хотите найти
  4. нажмите Enter

Потому что ОП попросил выполнить поиск именно по слову. Опубликованное здесь решение в основном выполняет поиск %word% , будь то thiswordisawesome, word56 или 26word .

Кроме того, потому что ОП прямо заявил, что знает о команде /. Таким образом, этот ответ совершенно бесполезен.

Если вы работаете в Ubuntu, выполните следующие действия:

@jorgesaraiva: Во-первых, вы, вероятно, получите ответ быстрее, если зададите новый вопрос (вместо того, чтобы ждать, пока кто-нибудь наткнется на этот комментарий через 3 месяца после того, как вы его задали). Во-вторых, вы можете сделать :set hls в Vim, чтобы выделить результат поиска. Чтобы отключить подсветку, выполните :set nohls

у меня это не работает на экземпляре AWS ubuntu 18.04. используя Windows git-bash для ssh на сервер ubuntu, если это уместно. странно.

Для простого поиска:

  • /pattern — поиск по шаблону вперед
  • ?шаблон – поиск назад
  • n — повторить поиск вперед
  • N — повторить в обратном порядке

Некоторые переменные, которые вы, возможно, захотите установить:

  • : установить игнорирование регистра — без учета регистра
  • :set smartcase — использовать вариант, если используются заглавные буквы.
  • :set incsearch – показывать совпадение как поиск

Базовый поиск (после открытия файла в vim ) с использованием vim :

-Нажмите ESC на клавиатуре компьютера

-Нажмите косую черту на клавиатуре /

-Введите слово или символ, который вы хотите найти; например, для поиска термина "rbmq" введите /rbmq

-Нажмите n для поиска вперед (переход к концу файла) и N для поиска назад (переход к началу файла)

Читайте также: