Как я могу искать в vim шаблон, который НЕ чувствителен к регистру?


18

Я иногда искать через файлы в vimили с lessпомощью /или , ?но, насколько я могу сказать, что шаблоны поиска чувствительны к регистру.

Так, например, /fooне найду того же, что /FOOи у себя. Есть ли способ сделать его менее строгим? Как я могу искать в vimили lessдля шаблона, который НЕ чувствителен к регистру?


2
При lessпоиске регистр не учитывается, если вы не используете строку, содержащую заглавную букву. Таким образом, fooбудет соответствовать Fooи , FoOно Fooбудет соответствовать только Fooи не fooт.д. Также смотрите здесь: менее всегда чувствителен к регистру .
Terdon

1
@terdon Интересно! Я изо всех сил пытаюсь понять «почему» такого lessповедения, но я полагаю, что это тема для другого дня. Благодарность!
Майк Б

Ну, во-первых, я нахожу это чрезвычайно полезным при поиске на страницах руководства. Я не хотел бы, чтобы это чувствительно к регистру. Об этом есть немало постов, также смотрите здесь: Могу ли я заставить `man` сопоставлять строчные буквы? и здесь: поиск без учета регистра на страницах руководства . На самом деле, если вы не возражаете, я удалю lessваш вопрос, поскольку он довольно хорошо описан в других публикациях, а полученные ответы объясняют, как это сделать в vi.
Terdon

@terdon Отлично, хотя, пожалуйста, подумайте о том, чтобы оставить этот диалог комментариев, так как я склонен использовать и то, lessи другое, viи эта информация ценна.
Майк Б

Как пояснение, я действительно использую vim(хотя я печатаю vi). Извиняюсь за путаницу.
Майк Б

Ответы:


21

В viили vimвы можете игнорировать регистр :set ic, и все последующие поиски будут учитывать настройку, пока вы не сбросите ее :set noic. В lessэтом есть варианты -iи -Iигнорировать регистр.


9
Я также хотел бы рекомендовать :set smartcase, чтобы искать только с учетом регистра, когда используется хотя бы заглавный символ.
Бернхард

3
Просто для записи, smartcase является ВИМ-только. Но OP "vi", скорее всего, vim, так что стоит упомянуть / попробовать.
Random832

@ Random832 Ага. Верный. Обновлен оригинальный вопрос, чтобы упомянуть vimвместо vi.
Майк Б

27

Используйте \cescape-последовательность:

/foo\c

Смотрите также: /programming/2287440/how-to-do-case-insensitive-search-in-vim


7
Обратите внимание, что это может происходить в любом месте шаблона, поэтому если после начала ввода вы решите, что шаблон должен быть без учета регистра, вы можете просто добавить его, \cгде бы вы ни находились, например /some_very_lo\cng_text.
wchargin

2

В вашем .vimrcфайле включите

set ignorecase

или

set ic

Чтобы снова включить чувствительность к регистру, используйте :set ic!.


1
Здравствуй! Это выглядит хорошо, но это не добавляет много к уже принятому ответу, не так ли?
дхаг

1
@dhag все ответы предоставляют разные способы выполнения одной и той же задачи. Установка значения в .vimrc позволяет сохранить эту настройку для других сеансов vim.
todgru

@dhag вы правы в том, что это не поможет решить проблему ОП за меньшее время.
Todgru
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.