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

我想搜索一个大写单词,例如文件中的COPYHRC。我尝试执行如下搜索:

/copyright/i    # Doesn't work

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

608426 次浏览

您可以在模式中的任何位置使用\c转义序列。例如:

/\ccopyright/copyright\c甚至/copyri\cght

要执行逆操作(情况敏感匹配),请使用\C(大写C)。

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

:set ic

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

:set noic

icignorecase的简写

你可以发布命令

:set ignorecase

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

除了对\cignorecase的建议外,我发现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'

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

nmap <F9> :set ignorecase! ignorecase?

将此命令放入您的vimrc文件中

set ic

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

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

nnoremap / /\cnnoremap ? ?\c

当你点击/?时,它会添加\c进行不区分大小写的搜索。

正如其他人所建议的:

:set ic

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

:set ic!

Vim有2种模式

1.edit模式

  1. 正常模式(Esc)

搜索将在正常模式下工作

/\c区分大小写

/\c搜索

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

/copyright\c

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

echo "set ic" >> ~/.vimrc

好的旧vim[grep]命令…

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

在此处输入图片描述

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

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

如果您想使用smartcase提供的内容,则需要设置ignorecase

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

一些重要的信息,如果你想了解更多关于vim的命令,如下所述,你可以尝试以下步骤:

  • 调用命令“help”,后跟一个空格,然后用TAB键完成单词,一旦你找到正确的命令,按回车键。
:help ignorecase
  • 将显示如下信息:

输入图片描述

  • 你将能够向前和向后移动,并观看简短的命令,例如“忽略”(“ic”)的情况。此外,另一个简短的例子可能是“智能案例”(“scs”等等)的情况:

输入图片描述

  • 要离开留档,只需像往常一样键入“: q”,您将返回“命令模式”。
:q

我真的希望提供的信息对某人有帮助。

最好的问候,

默认情况下,vi中的所有搜索都是区分大小写的。要进行不区分大小写的搜索,请进入命令模式(按Escape),然后键入-
:set ignorecase
你也可以输入-:set ic作为缩写。

要更改回区分大小写模式,请输入-
命令模式下的:set noignorecase:set noic

请注意,在表达中放置修饰符如“\c”是有区别的:

您可以在模式中的任何位置使用\c转义序列

不管从接受的答案来看,它指出在正则表达式模式中放置调制解调器的位置没有区别,它看起来确实很重要。

示例文本:

asdasdasdasdasd wiktor asdasdasdasdadasdasdasd wiktor asdasda ahjkjlkhjklasdasd asd asdasdasdasd iuuuu -asdjkkkkkkkaopbsdasdawiktor ----(---------------------)--

匹配

\c^.*A?.*$
^\c.*A?.*$
^.*\cA?.*$
^.*A\c?.*$

将输出:输入图片描述

没有匹配

^.\c*A?.*$
^.*A?\c.*$
^.*A?.\c*$
^.*A?.*$\c

将输出:输入图片描述输入图片描述

  • vim -version VIM-Vi IM的8.2(2019年12月12日,编译2020年6月1日06:42:35)包含的补丁:1-869