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.
16 Answers
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.
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' 6You 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
You can issue the command
:set ignorecase and after that your searches will be case-insensitive.
To switch between case sensitive and insensitive search I use this mapping in my .vimrc
nmap <F9> :set ignorecase! ignorecase?
You can use in your vimrc those commands:
set ignorecase- All your searches will be case insensitiveset 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).
2As others suggested:
:set ic But the cool stuff is You can toggle such modes with:
:set ic! The good old vim[grep] command..
:vimgrep /example\c/ & - \c for case insensitive
- \C for case sensitive
- % is to search in the current buffer
2
put this command in your vimrc file
set ic always do case insensitive search
1I prefer to use \c at the end of the search string:
/copyright\c 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
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.
Vim have 2 modes
1.edit mode
- normal mode( Esc )
Search will work for normal mode
/\c for case sensitive
/\csearch
1You can set ignorecase by default, run this in shell
echo "set ic" >> ~/.vimrc Note it is a difference where you place modifiers such as "\c" in your expresion:
You can use the \c escape sequence anywhere in the pattern
Regardless from the accepted answers, which states that it is no difference of where to place modyfier in a regex pattern, its looks like it actually does matter.
example text:
asdasdasdasdasd wiktor asdasdasdasd adasdasdasd wiktor asdasda ahjkjlkhjkl asdasd asd asdasdasdasd iuuuu - asdjkkkkkkkaopbsdasda wiktor ----(---------------------)-- Match
\c^.*A?.*$
^\c.*A?.*$
^.*\cA?.*$
^.*A\c?.*$
No match
^.\c*A?.*$
^.*A?\c.*$
^.*A?.\c*$
^.*A?.*$\c
vim -versionVIM - Vi IMproved 8.2 (2019 Dec 12, compiled Jun 1 2020 06:42:35) Included patches: 1-869
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 :
- 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) :
- 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,
