在下一个关于Vim的搜索中,我想忽略首字母的大小写:
/[tlcp]omo
我想知道如何仅对搜索模式的第一个字母忽略大小写。
Vim具有以下选项可忽略搜索模式中的大小写:
:set ignore
:set smartcase [ignore case if no uppercase in search]
或在搜索模式中的任何位置使用
\c
:/hello\c => [find hello and HELLO]
但是所有这些选项在整个模式中都忽略了大小写,而不是部分忽略。
一种忽略搜索模式中单个字母的情况的选项是,使用正则表达式的
[]
集合专门将每个字母大写:/[tTlLcCpP]omo
但是,有什么方法可以忽略搜索模式的一部分中的大小写,而不必使用正则表达式指定每个大小写字符?
最佳答案
通常,在Vim中是不可能的。不幸的是, /\c
和 /\C
正则表达式修饰符将整个模式转换为区分大小写(不区分大小写)的匹配项,而不管它们放在何处。 (在我看来,引入一组仅从该位置开始起作用的修饰符是最好的解决方案。)
大多数人通常通过对不敏感的部分/like [tT][hH][iI][sS]/
使用小写/大写集合来解决此问题。
您也可以采用相反的方法,而是将某些字符强制大小写(使用 /\l
表示小写,使用 /\u
表示大写),/\c\%(\l\l\l\l\&like\) this/
。
关于regex - 在Vim的搜索模式中忽略大小写,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60194038/