Unicode gibt an, dass \X
mit einem übereinstimmen sollte "Erweiterter Graphem-Cluster" - zum Beispiel ein Basiszeichen gefolgt von null oder mehr kombinierenden Zeichen. (Ich glaube, das ist eine Vereinfachung, kann aber für meine Bedürfnisse ausreichen.)
Ich bin mir ziemlich sicher, dass zumindest Perl \X
in seinen regulären Ausdrücken unterstützt.
Aber Vim definiert \X
, um mit einer nicht hexadezimalen Ziffer übereinzustimmen.
Hat Vim eine Entsprechung zu \X
oder eine Möglichkeit, einem Unicode-erweiterten Graphem-Cluster zu entsprechen?
Vim hat ein Konzept zum Kombinieren oder "Komponieren" von Zeichen, aber seine Dokumentation nicht abdecken, ob oder wie sie in regulären Ausdrücken unterstützt werden.
Es scheint, dass Vim dies noch nicht direkt unterstützt, aber ich bin immer noch an einer Problemumgehung interessiert, wo eine Suche alle Zeichen hervorhebt, die ein kombinierendes Zeichen in mindestens dem einfachsten Bereich von U+0300
bis U+0364
enthalten.
Sie können nach allen Zeichen suchen und Zeichen mit \Z
ignorieren. Oder Sie können nach einer Reihe von Unicode-Zeichen suchen. Lies :help /[]
von mehr Informationen zu beiden.
Der letzte Beitrag hier könnte Ihnen weitere Hilfe bieten:
Aber Vims Regex hat keine Zeichenklasse wie Perl.
Wenn Ihre vim-Installation mit perl-Unterstützung kompiliert wurde, können Sie möglicherweise Folgendes ausführen:
%Vor% Ich habe vim-nox
auf debian installiert (was Perl-Unterstützung enthält), und die Übereinstimmung von \X
in mit perldo
funktioniert zwar, aber ich bin mir nicht sicher, ob es das tut, was du willst, da alle normalen Zeichen auch sind abgestimmt und es scheint nicht wie perldo
Sie Hervorhebung in vim bekommen.
Obwohl es nicht perfekt ist, wenn Sie Perl-Unterstützung erhalten können, können Sie Unicode-Blöcke und Kategorien verwenden. Das bedeutet, dass Sie \p{Block: Combining_Diacritical_Marks}
oder \p{Category: Nonspacing_Mark}
verwenden können, um mindestens bestimmte Zeichen zu erkennen, obwohl Sie immer noch keine Hervorhebung erhalten.