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

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

/copyright/i    # Doesn't work

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

вопрос задан 18.02.2010
Haiyuan Zhang
14127 репутация

13 ответов


  • 1729 рейтинг

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

    /\ccopyright

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

    ответ дан Chinmay Kanchi, с репутацией 37782, 18.02.2010
  • 576 рейтинг

    Кроме предложений для \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'
    
    ответ дан DrAl, с репутацией 53154, 18.02.2010
  • 243 рейтинг

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

    :set ic
    

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

    :set noic
    

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

    ответ дан Nathan Fellman, с репутацией 58828, 18.02.2010
  • 49 рейтинг

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

    :set ignorecase
    

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

    ответ дан Paolo Tedesco, с репутацией 34987, 18.02.2010
  • 41 рейтинг

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

    nmap :set ignorecase! ignorecase?

    ответ дан vbd, с репутацией 1652, 23.02.2010
  • 16 рейтинг

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

    set ic 
    

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

    ответ дан WALID BELRHALMIA, с репутацией 356, 19.05.2015
  • 12 рейтинг

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

    :set ic
    

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

    :set ic!
    
    ответ дан fane89, с репутацией 1392, 19.01.2017
  • 10 рейтинг

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

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

    enter image description here

    ответ дан Mick, с репутацией 16368, 18.11.2017
  • 6 рейтинг

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

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

    Вам нужно установить ignorecase, если вы хотите использовать то, что предоставляет smartcase.

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

    ответ дан Matthieu, с репутацией 191, 26.12.2017
  • 6 рейтинг

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

    nnoremap / /\c
    nnoremap ? ?\c
    

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

    ответ дан pbogut, с репутацией 539, 12.02.2016
  • 5 рейтинг

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

    /copyright\c
    
    ответ дан Nick Tsai, с репутацией 1197, 15.06.2017
  • 2 рейтинг

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

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

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

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

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

    / \ c поиск

    ответ дан Gowthaman, с репутацией 395, 13.03.2017
  • 1 рейтинг

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

    echo "set ic" >> ~/.vimrc
    
    ответ дан Steely Wing, с репутацией 7612, 4.07.2017