Unicode文字を挿入するときのファジー補完


12

C-x 8 RETユニコード名または16進コードでユニコード文字を挿入する方法として発見しました。すべてのUnicode文字の名前を(まだ?)覚えていないので、常に正しい文字が見つかるとは限りません。

たとえば、「SNOW CAPPED MOUNTAIN」という文字があります。「MOUNTAIN」と入力すると、この文字は補完リストに表示されません。補完リストにこの特定の文字を表示するには、「SNOW」を検索することを忘れないでください。

完了に関わるあらゆることをIDOに依存するようになった人として、この柔軟性の欠如はかなり不安です。を使用しますido-ubiquitous-mode

Unicode入力にIDOのようなマッチングを使用するにはどうすればよいですか?すべての事柄に柔軟な補完を使用するにはどうすればよいですか?

(もっと良いものがあれば、IDOモードを放棄しても構いません。)


同じ問題の回避策として、と入力しC-q SPC mountain TABます。これは、「山」が最初の単語ではないすべてのキャラクター名と一致します。
レゴシア14年

1
ヘルムベースの完了については、emacs.stackexchange.com / a / 3139/2094ご覧ください。
ABO-ABO

1
うーん、これはプロジェクトの課題追跡で報告できるバグのように聞こえます。
wasamasa 14年

1
と入力*cap*mou TABすると、完全な補完が得られます。
フアンチョ14年

@Juancho事実だが、それは私が欲しいの行動ではないこと
rekado

回答:


8

@wasamasaが示唆したように、使用するido-ubiquitous場合insert-charは完了に注意する必要があります。2013年にクローズされバグレポートがありますが、Emacs 24.4およびido-ubiquitousバージョン20140904.1547でこの動作が見られるため、別のバグレポートを提出しました。

編集:

のメンテナーido-ubiquitousはこれを書いた:

わかりました、私は問題を理解しました。ユニコード文字がたくさんあるので、補完のリストはそれを超えてido-ubiquitous-max-itemsおりido-ubiquitous、そのために自分自身を無効にしている。私のシステムでは、ほぼ40kの補完が利用可能で、デフォルトido-ubiquitous-max-itemsは30kです。50kに設定すると、ido完了が有効になりinsert-charます。それをカスタマイズしてみてください。

確かに、(setq ido-ubiquitous-max-items 50000)それを修正します。


ido-completing-read+では、(setq ido-cr+-max-items 50000)このエラーを修正するために使用します。
バッハリエン

5

snow capped mountain入力するだけでインクルードされるようにするにはmount、次を実行できます。

(push '(unicode-name (styles substring)) completion-category-overrides)

実際、このsubstringスタイルは、バッファー名の場合と同様に、Unicode名に対してデフォルトで有効にする必要があります。たぶんあなたはそれを介してロビー活動をする必要がありますM-x report-emacs-bug


3

あなたが使用している場合はつららをその後、C-x 8 RETあなたが使用することができますサブストリングまたは正規表現あいまい完了時にマッチング。また、プログレッシブ補完を使用して、複数の(たとえば単純な)パターンと一致させることができます。

さらに、オプションicicle-read-char-by-name-multi-completion-flagnilデフォルトであるnon-の場合、マルチ補完を使用して、これらの任意の組み合わせに対して一致させることができます。

  • Unicode
  • 16進数としてのUnicode コードポイント
  • 文字自体(それがテキストで表示されるように、ではない整数)

バッファに表示される完了候補には、*Completions*これらすべてのコンポーネント(WYSIWYG)が含まれています。

なぜあなたはキャラクター自体とマッチしたいのですか?対応するUnicodeコードポイントと、古い名前を含むキャラクター名を表示します。たとえば、文字` (重大なアクセント)の場合、次の2つの補完候補が得られます。

GRAVE ACCENT      60      `
SPACING GRAVE     60      `

つららをいつか試してみるべきだと思う。ご回答有難うございます。
レカド14年

0

apropos-charライブラリのコマンドを使用して、入力しapu.elた正規表現または単語のリストに一致する名前を持つすべてのUnicode文字を表示できます。デフォルトでは、単語は部分文字列として一致します。

一致のリストで、ヒット^して、現在の行に表示されている文字を、呼び出したバッファのapropos-charポイントに挿入できます。または、ヒットC-yしてその文字をキルリングM-yにコピーする(またはセカンダリセレクションにコピーする)ことができます。(RET文字についての詳細情報を表示するには、ヒットします。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.