Как сделать нечувствительный к регистру поиск в Vim

Я бы хотел найти слово в верхнем регистре, например COPYRIGHT в файле. Я попытался выполнить поиск, например:

/copyright/i    # Doesn't work

но это не сработает. Я знаю, что в Perl, если я дам флаг i в регулярное выражение, он превратит регулярное выражение в не зависящее от регистров регулярное выражение. Кажется, что у Vim есть свой собственный способ указать не зависящее от регистров регулярное выражение.

Ответ 1

Вам нужно использовать escape-последовательность \c. Итак:

/\ccopyright

Чтобы сделать обратное (соответствие с учетом регистра), используйте \c вместо этого.

Ответ 2

Как и предложения для \c и ignorecase, я нахожу smartcase очень полезным. Если вы ищете что-то, содержащее символы верхнего регистра, он будет выполнять поиск с учетом регистра; если вы ищете что-то чисто строчное, он будет делать поиск без учета регистра. Вы можете использовать \c и \c, чтобы переопределить это:

:set ignorecase
:set smartcase
/copyright      " Case insensitive
/Copyright      " Case sensitive
/copyright\C    " Case sensitive
/Copyright\c    " Case insensitive

См:

:help /\c
:help /\C
:help 'smartcase'

Ответ 3

Вы можете установить опцию ic в Vim перед поиском:

:set ic

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

:set noic

ic является сокращением для ignorecase

Ответ 4

Вы можете выполнить команду

:set ignorecase

и после этого ваши поисковые запросы будут нечувствительны к регистру.

Ответ 5

Для переключения между чувствительным к регистру и нечувствительным поиском я использую это сопоставление в моем .vimrc

nmap <F9> :set ignorecase! ignorecase?

Ответ 6

поместите эту команду в свой файл vimrc

set ic 

всегда нечувствительный к регистру поиск

Ответ 7

Как предложили другие:

:set ic

Но классный материал Вы можете переключать такие режимы с помощью:

:set ic!

Ответ 8

Как упоминает @huyz, иногда желаемое поведение - это поиск без учета регистра, но с учетом регистра. Мое решение для этого:

nnoremap / /\c
nnoremap ? ?\c

С этим всегда, когда вы нажмете / или ?, он добавит \c для поиска без учета регистра.

Ответ 9

Я предпочитаю использовать \c в конце строки поиска:

/copyright\c

Ответ 10

Vim имеет 2 режима

Режим 1.edit

  1. нормальный режим (Esc)

Поиск будет работать в нормальном режиме

/\ c для чувствительности к регистру

/\ csearch

Ответ 11

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

echo "set ic" >> ~/.vimrc

Ответ 12

Старая команда vim[grep].

:vimgrep /example\c/ &
  • \c для нечувствительности к регистру
  • \c для чувствительности к регистру
  • % - поиск в текущем буфере

введите описание изображения здесь