2125

I'd like to search for an upper case word, for example COPYRIGHT in a file. I tried performing a search like:

/copyright/i # Doesn't work 

but it doesn't work. I know that in Perl, if I give the i flag into a regex it will turn the regex into a case-insensitive regex. It seems that Vim has its own way to indicate a case-insensitive regex.

0

15 Answers 15

2731

You can use the \c escape sequence anywhere in the pattern. For example:

/\ccopyright or /copyright\c or even /copyri\cght

To do the inverse (case sensitive matching), use \C (capital C) instead.

Sign up to request clarification or add additional context in comments.

8 Comments

Also, \c can appear anywhere in the pattern, so if you type a pattern and then decide you wanted a case-insensitive search, just add a \c at the end.
I like to add set ignorecase for case-insensitive searching in my vimrc, and I can use \C to do a case-sensitive search similar to what @AlokSinghal mentioned.
There's also set smartcase which will automatically switch to a case-sensitive search if you use any capital letters.
Just want to add to Zaz's comment. set smartcase applies only when set ignorecase is already active. I was stumped on this for a while. See Vim Tips.
@coderMe, It's the capitalization, \c versus \C
|
875

As well as the suggestions for \c and ignorecase, I find the smartcase very useful. If you search for something containing uppercase characters, it will do a case sensitive search; if you search for something purely lowercase, it will do a case insensitive search. You can use \c and \C to override this:

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

See:

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

6 Comments

The problem with ignorecase is that it affects substitutions as well as searches. I find that it makes sense to have (smart) case-insensitive searches but case-sensitive substitutions by default. But there's no way to do that that I know.
Worth noting that for smartcase to work, you also need set ignorecase. Great tip though, thanks!
I believe you could just use a \C in your search expression for substitutions, like this: :%s/lowercasesearch\C/replaceString/g. This doesn't create the default functionality you desire, but it does allow you to force case-sensitivity for replacements while still benefiting from smartcase when searching.
You can also set the I flag on a substitution to force the pattern to be case-sensitive. Like :%s/lowercasesearch/replaceString/gI.
Note from the help page (useful if you are "*" addicted like me): After "*" and "#" you can make 'smartcase' used by doing a "/" command, recalling the search pattern from history and hitting <Enter>.
|
376

You can set the ic option in Vim before the search:

:set ic 

To go back to case-sensitive searches use:

:set noic 

ic is shorthand for ignorecase

1 Comment

also your only option if you're unlucky enough to still use Vi instead of Vim. \c doesn't work in vi.
72

You can issue the command

:set ignorecase 

and after that your searches will be case-insensitive.

Comments

65

You can use in your vimrc those commands:

  • set ignorecase - All your searches will be case insensitive
  • set smartcase - Your search will be case sensitive if it contains an uppercase letter

You need to set ignorecase if you want to use what smartcase provides.

I wrote recently an article about Vim search commands (both built in command and the best plugins to search efficiently).

2 Comments

It seems that set smartcase does not perform case insensitive searches if I do not use uppercase letters...is that normal?
Ok, just read below that you have to both set ignorecase and smartcase to have it work. Sorry about that!
52

To switch between case sensitive and insensitive search I use this mapping in my .vimrc

nmap <F9> :set ignorecase! ignorecase?

5 Comments

Yes, but ignorecase? shows you the current state of the flag. (in the command line)
Thank you! To me, this is the most useful answer on the page: a way to quickly toggle between the two modes depending on what you're searching for at that exact moment.
Yes, it's better to have ignorecase? so you know the current state.
BTW, it's better to add <Cr> at the end, so the command is validated, and you don't have to hit the enter key (at least with neovim).
non-recursive mapping can be used instead of recursive: nnoremap <F9> :set ignorecase! ignorecase?<CR>
37

By default, all searches in vi are case-sensitive. To do a case-insensitive search, go into command mode (press Escape), and type-
:set ignorecase
You can also type - :set ic as an abbreviation.

To change back to case-sensitive mode, type-
:set noignorecase or :set noic in command mode

1 Comment

:set ic! will toggle
29

The good old vim[grep] command..

:vimgrep /example\c/ & 
  • \c for case insensitive
  • \C for case sensitive
  • % is to search in the current buffer

enter image description here

3 Comments

Cannot open file "&"
I guess he they meant % instead of %.
Typo in the actual command the correct one is as per the gif attached. vimgrep /example\c %
29

As others suggested:

:set ic 

But the cool stuff is You can toggle such modes with:

:set ic! 

Comments

23

I prefer to use \c at the end of the search string:

/copyright\c 

Comments

19

put this command in your vimrc file

set ic 

always do case insensitive search

1 Comment

I don't know why but my vim is set to case-insensitive by default, to counter this. use set noic.
10

As @huyz mention sometimes desired behavior is using case-insensitive searches but case-sensitive substitutions. My solution for that:

nnoremap / /\c nnoremap ? ?\c 

With that always when you hit / or ? it will add \c for case-insensitive search.

2 Comments

Not a bad suggestion, but does it prevent you from using the smartcase option?
Looks like it would since \c overrides smartcase
5

Vim have 2 modes

1.edit mode

  1. normal mode( Esc )

Search will work for normal mode

/\c for case sensitive

/\csearch

1 Comment

What about visual mode?
4

You can set ignorecase by default, run this in shell

echo "set ic" >> ~/.vimrc 

Comments

-2

Some important information, if u want to find out more about the commands of vim, as mentioned below u can give a try the following steps :

  • invoke the command "help" follow by a space and then complete the word with TAB key, once u find the right command press return key.
:help ignorecase 
  • information like the following will be displayed :

enter image description here

  • you will be able to move forward and backward and also watch the short command, such as the case of "ignorecase" ( 'ic' ). In addition, another short example could be the case of 'smartcase' ('scs' and some more) :

enter image description here

  • In order to leave of the documentation just type ":q" as usual and you will return to "command mode" .
:q 

I really hope the information provided would be helpful for someone.

Best regards,

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.