Emacs自动完成:在内联建议中不要触发RET

时间:2012-09-30 10:08:53

标签: emacs autocomplete

我对自动完成非常满意,但有一件事让我感到困惑:

我设置为立即显示内联建议,但菜单延迟0.9秒。我输入前几个字母,例如“del”立即自动完成内联到“删除”。如果我想输入“删除”,我点击TAB,这没关系。但是,如果我想实际输入“del”和换行符,那么再次点击RET会自动完成“删除”。

如果仅显示内联建议,我如何强制RET成为换行符?显示自动完成菜单后,我希望它像往常一样再次成为触发键。

谢谢!

1 个答案:

答案 0 :(得分:8)

通过在auto-complete模式的其他设置之后添加以下行,只有在显示完成菜单时才能通过 RET 启用完成:

(define-key ac-completing-map "\C-m" nil)
(setq ac-use-menu-map t)
(define-key ac-menu-map "\C-m" 'ac-complete)

ac-completing-map是一个键映射,其中 RET 默认绑定到ac-complete,而ac-menu-map是完成菜单上完成的键映射。 ac-menu-map变量为ac-use-menu-map时会启用t键盘映射。

仅供参考,可以随时按 C-g 来停止完成。因此,您还可以点击 C-g RET 来输入 RET 绑定的换行符。此外,如果要输入换行符,可以使用 C-j 而不是 RET C-j 默认情况下不会绑定到ac-complete