如何在VIM中进行不区分大小写的搜索

How to do case insensitive search in Vim

我想搜索一个大写词,例如文件中的版权。我尝试了如下搜索:

1
/copyright/i    # Doesn't work

但它不起作用。我知道在Perl中,如果将i标志赋给regex,它将把regex变成不区分大小写的regex。似乎vim有自己的方式来表示不区分大小写的regex。


您需要使用\c转义序列。所以:

/\ccopyright

要进行反向(区分大小写匹配),请使用\c


除了对\cignorecase的建议外,我发现smartcase非常有用。如果搜索包含大写字符的内容,它将执行区分大小写的搜索;如果搜索纯小写的内容,它将执行不区分大小写的搜索。您可以使用\c\c来覆盖:

1
2
3
4
5
6
:set ignorecase
:set smartcase
/copyright     " Case insensitive
/Copyright     " Case sensitive
/copyright\C   " Case sensitive
/Copyright\c   " Case insensitive

见:

1
2
3
:help /\c
:help /\C
:help 'smartcase'


在搜索之前,您可以在VIM中设置ic选项:

1
:set ic

要返回区分大小写的搜索,请使用:

1
:set noic

icignorecase的简写。


你可以发出命令

1
:set ignorecase

之后你的搜索将不区分大小写。


要在区分大小写和不敏感搜索之间切换,我在.vimrc中使用此映射

nmap :set ignorecase! ignorecase?


把这个命令放到VIMRC文件中

1
set ic

总是进行不区分大小写的搜索


正如其他人所建议的:

1
:set ic

但最酷的是,你可以通过以下方式切换这些模式:

1
:set ic!

您可以在您的vimrc中使用这些命令:

  • set ignorecase—所有搜索都不区分大小写
  • set smartcase—如果您的搜索包含大写字母,那么它将区分大小写。

如果要使用smartcase提供的功能,则需要设置ignorecase

我最近写了一篇关于vim搜索命令的文章(既有内置命令,也有高效搜索的最佳插件)。


老江户一〔17〕指挥部。

1
:vimgrep /example\c/ &
  • 不区分大小写
  • 区分大小写
  • %将在当前缓冲区中搜索

enter image description here


我喜欢在搜索字符串的末尾使用\c

1
/copyright\c

正如@huyz所提到的,有时所需的行为是使用不区分大小写的搜索,但使用区分大小写的替换。我的解决方案是:

1
2
nnoremap / /\c
nnoremap ? ?\c

当你点击/?时,它会加上\c,用于不区分大小写的搜索。


默认情况下,可以设置ignorecase,在shell中运行。

1
echo"set ic">> ~/.vimrc

VIM有两种模式

1.编辑模式

  • 正常模式(Esc)
  • 搜索将在正常模式下工作

    / C表示区分大小写

    搜索