Vim ищет по шаблону от текущей позиции курсора. Начните в нормальном режиме, задайте прямой или обратный поиск, а затем переходите между совпадениями, не вводя шаблон заново.
Продвинутый Text-Fu · Урок 4
Шаблоны поиска в Vim
Узнайте, как искать в Vim вперёд и назад, повторять поиск, уточнять шаблон и убирать подсветку совпадений.
Поиск вперёд
В нормальном режиме нажмите /, введите шаблон и нажмите Enter. Vim перейдёт к следующему совпадению после курсора:
/pretty
Поиск использует синтаксис регулярных выражений Vim, поэтому ., *, [ и \ могут иметь особое значение. Если оставшуюся часть шаблона следует понимать почти буквально, поставьте в начале \V, либо осознанно экранируйте специальные символы.
Какая команда из нормального режима начинает поиск pretty вперёд?
Поиск назад
Нажмите ?, введите шаблон и нажмите Enter, чтобы перейти к предшествующему совпадению перед курсором:
?pretty
Это не обязательно «последнее совпадение в файле»: результат зависит от текущей позиции курсора. При стандартном параметре Vim wrapscan поиск может продолжиться с другого конца файла; команда :set nowrapscan отключает такое зацикливание.
Какой префикс поиска в нормальном режиме ищет текст раньше позиции курсора?
Повторение поиска
После поиска в любом направлении:
- Нажмите
n, чтобы повторить поиск в исходном направлении. - Нажмите
N, чтобы повторить его в противоположном направлении.
Поэтому после /pretty клавиша n движется вперёд, а N — назад. После ?pretty клавиша n движется назад, а N — вперёд.
Какая клавиша после ?error повторит поиск в том же обратном направлении?
Поиск слова под курсором
В нормальном режиме поместите курсор на слово и используйте:
*для поиска этого слова целиком вперёд.#для поиска этого слова целиком назад.
Обе команды устанавливают последний шаблон, поэтому поиск можно продолжить клавишами n и N.
Какая клавиша нормального режима ищет вперёд целое слово под курсором?
Регистр и подсветка
На учёт регистра влияют параметры Vim:
:set ignorecaseделает поиск нечувствительным к регистру.- При включённом
ignorecaseпараметр:set smartcaseвозвращает чувствительность, если в шаблоне есть прописная буква. \cвнутри шаблона принудительно отключает учёт регистра для этого поиска.\Cпринудительно включает учёт регистра.
Например, /\cerror соответствует error, Error и ERROR независимо от текущих настроек регистра.
Если подсветка поиска включена, команда :nohlsearch убирает текущие визуальные выделения, не удаляя сам шаблон. Следующий поиск или повтор снова может подсветить совпадения.
Какой шаблон заставляет один поиск Vim по слову error игнорировать регистр независимо от настроек?
Потренироваться в навигации и поиске Vim на контролируемом файле можно в лаборатории:
- Редактирование текстовых файлов в Linux с помощью Vim и Nano — попрактикуйтесь в создании, редактировании, сохранении и навигации по текстовым файлам с Vim и Nano.
Урок завершён
Вы завершили Шаблоны поиска в Vim
Теперь вы умеете искать в буфере Vim и предсказуемо переходить между совпадениями.
Начинать поиск вперёд через
/, а назад — через?.Повторять поиск в том же направлении клавишей
n, а в обратном —N.Искать целое слово под курсором с помощью
*или#.Управлять регистром отдельного шаблона и общими параметрами.
Убирать подсветку, не теряя текущий шаблон поиска.
Сохраните прогресс
Создайте бесплатный аккаунт, чтобы сохранить этот урок и продолжить на любом устройстве.
Создать бесплатный аккаунт