Vim是否与\ X匹配Unicode"字形集群"?

hip*_*ail 8 regex unicode vim

Unicode指定\X应匹配"扩展的字形集群" - 例如,后跟零个或多个组合字符的基本字符.(我相信这是一种简化,但可能足以满足我的需求.)

我很确定至少Perl支持\X它的常规表达.

但是Vim定义\X匹配非十六进制数字.

Vim是否具有\X与Unicode扩展字形集群匹配的任何等效或任何方式?

Vim确实有一个组合或"组合"字符的概念,但其文档并未涵盖正则表达式中是否支持它们或如何支持它们.

看来,Vim的还不直接支持这一点,但我仍然有兴趣在一个替代方案,搜索将突出包括至少最基本的范围内组合字符的所有字符U+0300U+0364.

bee*_*jay 3

如果您的 vim 安装是使用perl 支持进行编译的,您可以运行:

:perldo s/\X/replacement/g
Run Code Online (Sandbox Code Playgroud)

我安装vim-nox在 debian (包含 perl 支持)上,并且\X与匹配perldo确实有效,但我不确定它会做你想要的事情,因为所有普通字符也都匹配,而且似乎不会perldo让你突出显示在维姆中。

虽然它并不完美,但如果您可以获得 perl 支持,则可以使用 unicode 块和类别。这意味着您可以使用\p{Block: Combining_Diacritical_Marks}\p{Category: Nonspacing_Mark}至少检测某些字符,尽管您仍然不会突出显示。