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

Haiyuan Zhang 1579 vim search case-insensitive

我想搜索一个大写单词,例如文件中的COPYRIGHT.我尝试过执行搜索:

/copyright/i    # Doesn't work

但它不起作用.我知道在Perl中,如果我将i标志放入正则表达式,它会将正则表达式转换为不区分大小写的正则表达式.似乎Vim有自己的方式来表示不区分大小写的正则表达式.

Chinmay Kanc.. 2010

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

/\ccopyright

要进行反向(区分大小写的匹配),请\C改为使用.

  • 此外,`\ c`可以出现在模式中的任何位置,因此如果您键入模式然后决定您想要一个不区分大小写的搜索,只需在末尾添加一个`\ c`. (504认同)
  • 我喜欢在我的vimrc中添加`set ignorecase`以进行不区分大小写的搜索,我可以使用`\ C`来执行类似于@AlokSinghal提到的区分大小写的搜索. (262认同)
  • 还有`set smartcase`,如果你使用任何大写字母,它会自动切换到区分大小写的搜索. (153认同)
  • 只想添加Zaz的评论.`set smartcase`仅在`set ignorecase`已经激活时适用.我被困了一段时间.请参阅[Vim Tips](http://vim.wikia.com/wiki/Searching#Case_sensitivity). (73认同)
  • @coderMe,它是大写字母,`\ c`对比`\ C` (10认同)

DrAl.. 651

以及对\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'

  • 值得注意的是,对于`smartcase`来说,你还需要`set ignorecase`.很棒的提示,谢谢! (146认同)
  • `ignorecase`的问题在于它会影响替换和搜索.我发现默认情况下(智能)不区分大小写的搜索是有意义的,但是区分大小写的替换.但我知道,没有办法做到这一点. (78认同)
  • 也可以在一个替代设置[`I`标志(http://vimdoc.sourceforge.net/htmldoc/change.html#:s_flags)来强制模式是大小写敏感的.像`:%s/lowercasesearch/replaceString/gI`. (19认同)
  • 我相信您可以在搜索表达式中使用\ C进行替换,例如:`:%s/lowercasesearch\C/replaceString/g`.这不会创建您想要的默认功能,但它确实允许您在替换时强制区分大小写,同时在搜索时仍然可以从智能手机中获益. (10认同)

Nathan Fellm.. 274

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

:set ic

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

:set noic

ic 是简写 ignorecase


Paolo Tedesc.. 55

您可以发出命令

:set ignorecase

之后,您的搜索将不区分大小写.


vbd.. 45

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

nmap <F9> :set ignorecase! ignorecase?

  • 是的,但`ignorecase?`显示标志的当前状态.(在命令行中) (15认同)
  • 只是`:设置忽略!`应该正常工作. (13认同)

Matthieu.. 23

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

  • set ignorecase - 您的所有搜索都不区分大小写
  • set smartcase - 如果包含大写字母,则搜索将区分大小写

您需要设置ignorecase是否要使用smartcase提供的内容.

我最近写了一篇关于Vim搜索命令的文章(内置命令和最有效的搜索插件).


fane89.. 20

正如其他人所说:

:set ic

但很酷的东西是你可以切换这样的模式:

:set ic!


WALID BELRHA.. 18

将此命令放在vimrc文件中

set ic 

总是做不区分大小写的搜索

  • 我不知道为什么,但我的vim默认情况下设置为不区分大小写,以解决这个问题.使用`set noic`. (4认同)

Mick.. 15

好老vim[grep]命令..

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

在此输入图像描述


Nick Tsai.. 13

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

/copyright\c


pbogut.. 8

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

nnoremap / /\c
nnoremap ? ?\c

总是当你点击它/?它将添加\c不区分大小写的搜索.