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

/copyright/i    # Doesn't work

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


当前回答

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

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

不管接受的答案是什么,即在正则表达式模式中放置modyfer的位置没有区别,它看起来确实很重要。

示例文本:

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-版本vim-Vi IMproven 8.2(2019年12月12日,2020年6月1日06:42:35)包括的补丁:1-869

其他回答

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

/\c版权所有或/copyright\c或甚至/copyri\cht

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

除了对c和ignorecase的建议外,我觉得智能箱非常有用。如果搜索包含大写字符的内容,它将进行区分大小写的搜索;如果搜索纯小写的内容,它将进行不区分大小写的搜索。您可以使用\c和\c覆盖此项:

: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'

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

nmap<F9>:设置忽略!无知?

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

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

不管接受的答案是什么,即在正则表达式模式中放置modyfer的位置没有区别,它看起来确实很重要。

示例文本:

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-版本vim-Vi IMproven 8.2(2019年12月12日,2020年6月1日06:42:35)包括的补丁:1-869

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

echo "set ic" >> ~/.vimrc