插入Unicode字符时模糊完成


12

我刚刚发现C-x 8 RET了一种通过Unicode名称或十六进制代码插入Unicode字符的方法。我还没有记住所有Unicode字符名称,所以我并不总是找到正确的字符。

例如,有字符“ SNOW CAPPED MOUNTAIN”。如果我只键入“ MOUNTAIN”,则此字符不会出现在完成列表中。我需要记得搜索“ SNOW”才能在补全列表中看到该特定字符。

由于已经依赖IDO进行涉及完成的任何事情的人,这种缺乏灵活性的做法令人不安。我用ido-ubiquitous-mode

如何将类似IDO的匹配用于Unicode输入?如何对所有内容使用灵活完成?

(如果有更好的选择,我可以放弃IDO模式。)


作为解决同一问题的方法,我将输入C-q SPC mountain TAB。这将匹配任何以“ mountain”作为非第一个单词的字符名称。
legoscia 2014年

1
请查看emacs.stackexchange.com/a/3139/2094,以完成基于头盔的操作。
2014年

1
嗯,这听起来像是个错误,您可以在项目的问题跟踪器中报告。
wasamasa 2014年

1
如果输入*cap*mou TAB,那么您将获得完整的完成内容。
Juancho 2014年

@Juancho是对的,但这不是我想要的行为
rekado 2014年

Answers:


8

如@wasamasa建议,使用ido-ubiquitous时应注意完成insert-char。有一个错误报告已在2013年关闭,但我仍然在Emacs 24.4和ido-ubiquitous版本20140904.1547中看到此行为,因此我提交了另一个错误报告

编辑:

维护者ido-ubiquitous写道:

好的,我知道了问题所在。有很多的Unicode字符,所以补全列表中超过ido-ubiquitous-max-itemsido-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可以在完成过程中使用子字符串或正则表达式模糊匹配。您可以使用渐进式完成来匹配多个(例如简单)模式。

另外,如果option icicle-read-char-by-name-multi-completion-flag为non- nil,这是默认设置,那么您可以使用multi-completion来匹配以下任意组合:

  • Unicode 名称
  • Unicode 代码点,为十六进制数字
  • 字符本身(因为它出现在文本,不是整数)

您在缓冲区*Completions*中看到的完成候选包含所有这些组件-所见即所得。

为什么要与角色本身匹配?查看相应的Unicode代码点和字符名称,包括所有旧名称。例如,对于角色` (重音符),您将获得以下两个完成候选者:

GRAVE ACCENT      60      `
SPACING GRAVE     60      `

我想我真的应该有一天尝试冰柱。感谢您的回答。
rekado 2014年

0

您可以apropos-char在库中使用command apu.el来显示其名称与正则表达式或您键入的单词列表匹配的所有Unicode字符。默认情况下,单词以子字符串形式匹配。

在匹配列表中,您可以点击^当前行上显示的char插入到您apropos-char在处调用的缓冲区中。或者,您可以点击C-y以将该字符复制到kill ring(或M-y将其复制到第二选择)。(点击RET查看有关字符的更多信息。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.