1862

我想在文件中搜索大写单词,例如 COPYRIGHT。我尝试执行如下搜索:

/copyright/i    # Doesn't work

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

4

16 回答 16

2386

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

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

要进行逆向(区分大小写的匹配),请改用\C(大写 C)。

于 2010-02-18T09:18:23.693 回答
763

除了对\cand的建议ignorecase,我觉得smartcase非常有用。如果您搜索包含大写字符的内容,它将执行区分大小写的搜索;如果您搜索纯小写的内容,它将执行不区分大小写的搜索。您可以使用\cand\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'
于 2010-02-18T12:11:01.590 回答
327

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

:set ic

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

:set noic

ic是简写ignorecase

于 2010-02-18T09:18:44.327 回答
68

你可以发出命令

:set ignorecase

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

于 2010-02-18T09:19:42.450 回答
51

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

nmap <F9> :set ignorecase! ignorecase?

于 2010-02-23T11:51:08.777 回答
47

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

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

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

我最近写了一篇关于 Vim 搜索命令的文章(包括内置命令和高效搜索的最佳插件)。

于 2017-12-26T08:36:48.390 回答
25

正如其他人建议的那样:

:set ic

但很酷的东西是您可以使用以下方式切换此类模式:

:set ic!
于 2017-01-19T09:34:00.700 回答
21

好老vim[grep]命令..

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

在此处输入图像描述

于 2017-11-18T01:18:29.770 回答
19

把这个命令放在你的 vimrc 文件中

set ic 

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

于 2015-05-19T10:31:03.740 回答
16

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

/copyright\c
于 2017-06-15T01:54:57.213 回答
15

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

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

于 2020-12-01T17:02:30.800 回答
10

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

nnoremap / /\c
nnoremap ? ?\c

总是在您点击时使用它,/否则?它将添加\c不区分大小写的搜索。

于 2016-02-12T09:58:00.500 回答
5

Vim 有 2 种模式

1.编辑模式

  1. 正常模式(Esc)

搜索将适用于正常模式

/\c区分大小写

/\c搜索

于 2017-03-13T05:38:09.040 回答
3

您可以ignorecase默认设置,在shell中运行

echo "set ic" >> ~/.vimrc
于 2017-07-04T01:40:19.067 回答
0

请注意,在表达式中放置诸如“\c”之类的修饰符是不同的:

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

无论从接受的答案来看,这表明在正则表达式模式中放置修饰符的位置没有区别,它看起来确实很重要。

示例文本:

asdasdasdasdasd wiktor asdasdasdasd   
adasdasdasd wiktor asdasda ahjkjlkhjkl
asdasd asd asdasdasdasd iuuuu -       
asdjkkkkkkkaopbsdasda                 
wiktor ----(---------------------)--  

匹配

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

将输出: 在此处输入图像描述

没有匹配

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

将输出: 在此处输入图像描述 在此处输入图像描述

  • vim -versionVIM - Vi IMproved 8.2(2019 年 12 月 12 日,编译 2020 年 6 月 1 日 06:42:35)包含的补丁:1-869
于 2021-09-03T15:35:38.287 回答
-1

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

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

在此处输入图像描述

  • 您将能够向前和向后移动并观看简短的命令,例如“ignorecase”('ic')的情况。此外,另一个简短的示例可能是“smartcase”(“scs”等)的情况:

在此处输入图像描述

  • 为了离开文档,只需像往常一样输入 ":q" ,您将返回到 "command mode" 。
:q

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

最好的祝福,

于 2020-08-02T15:15:34.773 回答