Unicode指定\X
should match an "extened grapheme cluster" - 例如一个基本字符,后跟零个或多个组合字符。 (我相信这是一种简化,但可能足以满足我的需求。)
我非常确定至少Perl在常规表达中支持\X
。
但是Vim定义\X
以匹配非十六进制数字。
Vim是否有任何等同于\X
或任何方式来匹配Unicode扩展字形集群?
Vim确实有一个组合概念或者#34;撰写"字符,但its documentation不包括正则表达式中是否支持或如何支持它们。
似乎Vim还没有直接支持这一点,但我仍然感兴趣的是一种解决方法,搜索将突出显示所有字符,其中包含至少最基本范围U+0300
到{{的组合字符1}}。
答案 0 :(得分:3)
如果使用perl support编译vim安装,则可以运行:
:perldo s/\X/replacement/g
我在debian上安装了vim-nox
(其中包含perl支持),将\X
与perldo
匹配确实有用,但我不确定它会做你想要的,因为所有普通字符也匹配,看起来perldo
似乎不会让你在vim中突出显示。
虽然它并不完美,但如果你能获得perl支持,你可以使用unicode块和类别。这意味着您可以使用\p{Block: Combining_Diacritical_Marks}
或\p{Category: Nonspacing_Mark}
来至少检测某些字符,但您仍然无法突出显示。
答案 1 :(得分:3)
您可以使用\Z
搜索所有字符并忽略撰写字符。或者,您可以搜索一系列Unicode字符。从两者的更多信息中阅读:help /[]
。
这里的最后一篇文章可能会提供更多帮助:
但是Vim的正则表达式没有像Perl这样的字符类。