8

Unicodeは\X、「拡張書記素クラスター」と一致する必要があることを指定します。たとえば、基本文字の後に0個以上の結合文字が続きます。(これは単純化したものだと思いますが、私のニーズには十分かもしれません。)

\X少なくともPerlは通常の表現でサポートしていると確信しています。

しかし、Vimは\X16進数以外の数字と一致するように定義しています。

Vimには、Unicode拡張書記素クラスターと同等\Xまたはそれに一致する方法がありますか?

Vimには文字を組み合わせる、つまり「構成する」という概念がありますが、そのドキュメントでは、正規表現でサポートされているかどうか、またはどのようにサポートされているかについては説明していません。

Vimはまだこれを直接サポートしていないようですが、検索で少なくとも最も基本的な範囲のU+0300〜の結合文字を含むすべての文字が強調表示される回避策に興味がありU+0364ます。

4

2 に答える 2

3

vim インストールがperl サポート付きでコンパイルされている場合は、次を実行できる場合があります。

:perldo s/\X/replacement/g

vim-nox私はdebian(perlサポートを含む)にインストールしましたが、マッチング\Xperldo実際に機能しますが、すべての通常の文字もマッチングされ、perldo強調表示されるようには見えないため、希望どおりになるかどうかはわかりませんヴィムで。

完全ではありませんが、perl のサポートがあれば、Unicode ブロックとカテゴリを使用できます。つまり、\p{Block: Combining_Diacritical_Marks}または\p{Category: Nonspacing_Mark}を使用して少なくとも特定の文字を検出できますが、それでも強調表示されません。

于 2012-06-07T13:22:06.187 に答える
3

ですべての文字を検索し、合成文字を無視することができます\Z。または、Unicode 文字の範囲を検索できます。:help /[]両方の詳細情報をお読みください。

ここの最後の投稿は、さらに役立つかもしれません。

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

しかし、Vim の正規表現には Perl のような文字クラスがありません。

于 2012-06-07T13:52:59.120 に答える