Как сделать поиск без учета регистра в Vim

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

/copyright/i    # Doesn't work

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

13 ответов


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

/\ccopyright

сделать обратное (case чувствительный совпадающие), используйте \C вместо.


а также предложения для \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'

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

:set ic

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

:set noic

ic сокращенно от ignorecase


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

:set ignorecase

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


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

nmap <F9> :set ignorecase! ignorecase?


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

set ic 

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


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

:set ic

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

:set ic!

старый добрый


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

nnoremap / /\c
nnoremap ? ?\c

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


вы можете использовать в своем vimrc команды:

  • set ignorecase - все ваши поиски будут нечувствительны к регистру
  • set smartcase - ваш поиск будет чувствителен к регистру, если он содержит буквы верхнего регистра

необходимо указать ignorecase Если вы хотите использовать smartcase обеспечивает.

Я недавно написал статья о командах поиска Vim (как встроенная команда, так и лучшие плагины для эффективного поиска).


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

/copyright\c

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

1.режим редактирования

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

поиск будет работать в обычном режиме

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

/ \cпоиск


Вы можете установить ignorecase по умолчанию запустите это в shell

echo "set ic" >> ~/.vimrc