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

时间:2012-06-07 12:58:03

标签: regex vim unicode

Unicode指定\X should match an "extened grapheme cluster" - 例如一个基本字符,后跟零个或多个组合字符。 (我相信这是一种简化,但可能足以满足我的需求。)

我非常确定至少Perl在常规表达中支持\X

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

Vim是否有任何等同于\X或任何方式来匹配Unicode扩展字形集群?

Vim确实有一个组合概念或者#34;撰写"字符,但its documentation不包括正则表达式中是否支持或如何支持它们。

似乎Vim还没有直接支持这一点,但我仍然感兴趣的是一种解决方法,搜索将突出显示所有字符,其中包含至少最基本范围U+0300到{{的组合字符1}}。

2 个答案:

答案 0 :(得分:3)

如果使用perl support编译vim安装,则可以运行:

:perldo s/\X/replacement/g

我在debian上安装了vim-nox(其中包含perl支持),将\Xperldo匹配确实有用,但我不确定它会做你想要的,因为所有普通字符也匹配,看起来perldo似乎不会让你在vim中突出显示。

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

答案 1 :(得分:3)

您可以使用\Z搜索所有字符并忽略撰写字符。或者,您可以搜索一系列Unicode字符。从两者的更多信息中阅读:help /[]

这里的最后一篇文章可能会提供更多帮助:

http://vim.1045645.n5.nabble.com/using-regexp-to-search-for-Unicode-code-points-and-properties-td1190333.html

但是Vim的正则表达式没有像Perl这样的字符类。