在emacs的命令迷你缓冲区中自动完成

时间:2013-11-08 06:28:16

标签: emacs

需要在init.el文件中进行哪个设置,如果命中M-x和命令的首字母,则允许完成剩下的命令。

实际上需要类似于迷你缓冲的ido模式

2 个答案:

答案 0 :(得分:3)

“M-x minifuffer”的偶像模式叫做smex(smex use ido)。

可在Emacs的主程序包中使用。主页here

答案 1 :(得分:1)

我认为您正在谈论增量完成,即让Emacs自动完成您在迷你缓冲区中输入的内容,而无需明确请求完成(例如,使用TAB)。

Icicles以及IdoIswitchB提供了增量完成功能。 icomplete-mode以与Ido和IswitchB类似的方式向您展示完成候选人。

Icicles incremental completion有两个方面:

  1. 当缓冲区 *Completions*显示并更新时,显示符合您输入的候选人 - 发生的时间和触发更新的内容

  2. 您的迷你缓冲输入是否以及扩展(已完成)以反映匹配的完成次数

  3. Wrt *Completions*显示(#1):

    您可以随时使用C-#在各级(正常,急切,关闭)之间循环。

    • 正常表示在您要求之前不会显示*Completions*,但此后在您输入/编辑输入时会自动更新*Completions*

    • Eager 表示只要您输入与至少两个候选人匹配的内容,就会显示*Completions*

    (在您输入任何内容之前,还有一个选项可以从一开始就显示*Completions* - 作为一种菜单很有用。)您还可以指定在输入或删除字符之前等待多长时间更新S-TAB

    Wrt输入扩展(#2):

    Icicles 在将输入扩展到(通常)所有完成中的longest common match时是唯一的,即使完成时使用 apropos 匹配(即regexp或substring - TAB),而不仅仅是前缀匹配(TAB)。

    此扩展有4个级别/行为,加上关闭(无扩展):

    • 关闭 - 这就像Ido和IswitchB:显示完成,但输入未完成
    • 根据要求 - 仅在请求时S-TABTAB
    • 展开您的输入
    • 根据要求或唯一候选人 - 根据要求或只有一场比赛
    • 始终针对S-TAB,根据请求TAB - S-TAB尽可能扩展; C-"就像以前一样
    • 始终 - 尽可能扩展输入

    C-M-"在您选择的两个输入扩展行为(用户选项)之间切换,并且{{1}}在所有行为中循环。