Hat Vim ein Äquivalent zu \ X, um Unicode-Graphem-Clustern zu entsprechen?

8

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.

    
hippietrail 07.06.2012, 12:58
quelle

2 Antworten

3

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.

    
embedded.kyle 07.06.2012 13:52
quelle
3

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.

    
beerbajay 07.06.2012 13:22
quelle

Tags und Links