kočička
ignorecase
搜索/kocicka
和
smartcase
选项非常有用,但它们似乎与变音符号/重音符号没有任何关系。#1 楼
如评论中@muru所述,您可以使用一个等效类(在:help /[[
中进行了描述),它似乎是一个字符类表达式,被评估为一组相似的字符(即,一旦删除任何重音符号或变音符号,它们都是相同的)。 /> 例如,要查找具有相同模式的
kočička
和kocicka
,可以使用以下代码:ko[[=c=]]i[[=c=]]ka
其中
[[=c=]]
是c
字符。要在执行搜索时按
c
时自动插入此字符类,可以使用以下映射:cnoremap <expr> c getcmdtype() =~ '[?/]' ? '[[=c=]]' : 'c'
可以像这样分解:
<expr>
输入表达式的求值getcmdtype() =~ '[?/]'
测试您是否正在编写向后或向前搜索如果先前的测试成功,则
'[[=c=]]'
返回c
字符的等效类'c'
返回c
字符other明智的以前的映射有2个缺点:
它仅覆盖
c
字符它会使模式难以阅读
可以通过重新映射
<CR>
来改善它,如下所示:cnoremap <CR> <C-\>e getcmdtype() =~ '[?/]' ? substitute(getcmdline(), '\a', '[[=q4312078q=]]', 'g'): getcmdline()<CR><CR>
在编写搜索模式后点击
<CR>
时,映射将自动将所有字母字符替换为对应的等价类。 <CR>
的映射与先前的c
映射相似,不同之处在于它不使用参数<expr>
,而是使用系统映射<C-\>e
。 <expr>
允许您插入表达式的求值,而<C-\>e
允许您将整个命令行替换为表达式的求值。评论
此外,如果您想反向移动,例如/kočička匹配kocicka,则可以使用'[[:lower:] [:upper:]]'代替'\ a'。备选方案'[:alpha:]'和'\ I'似乎不适用于多字节字符;但是,'[^ [:punct:]]'似乎可以工作(尽管我不太确定),而且我想也可以构建自己的等效类(例如'[А-яЁё]')。
–kevinlawler
18年1月3日在21:04
我希望有一个设置。虽然使用[[= c =]]可行,但键入错误意味着您需要单击Backspace 7次。可读性也受到损害。
– daliusd
19年2月7日在11:17
评论
相关::h [[=和:h模式组成。