我想搜索一个大写的单词,例如文件中的COPYRIGHT。我尝试执行搜索,如:
/copyright/i # Doesn't work
但它不起作用。我知道,在Perl中,如果我将I标志转换为正则表达式,它将把正则表达式转换为不区分大小写的正则表达式。Vim似乎有自己的方法来指示不区分大小写的正则表达式。
我想搜索一个大写的单词,例如文件中的COPYRIGHT。我尝试执行搜索,如:
/copyright/i # Doesn't work
但它不起作用。我知道,在Perl中,如果我将I标志转换为正则表达式,它将把正则表达式转换为不区分大小写的正则表达式。Vim似乎有自己的方法来指示不区分大小写的正则表达式。
当前回答
默认情况下,可以设置ignorecase,在shell中运行
echo "set ic" >> ~/.vimrc
其他回答
默认情况下,vi中的所有搜索都区分大小写。要执行不区分大小写的搜索,请进入命令模式(按Esc键),然后键入-:设置忽略大小写您也可以键入-:将ic设置为缩写。
要切换回区分大小写模式,请键入-:set noignorecase或:set noic在命令模式下
正如@huyz所提到的,有时需要的行为是使用不区分大小写的搜索,但使用区分大小写替换。我的解决方案是:
nnoremap / /\c
nnoremap ? ?\c
当你打/或时总是这样?它将为不区分大小写的搜索添加\c。
请注意,在表达式中放置“\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和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'
您可以发出命令
:set ignorecase
之后,您的搜索将不区分大小写。