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

use*_*592 7 emacs autocomplete

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

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

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

谢谢!

dki*_*kim 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)
Run Code Online (Sandbox Code Playgroud)

ac-completing-map是一个键盘映射,其中RET默认绑定到ac-complete,而且ac-menu-map是完成菜单上完成一个键盘映射.在ac-menu-map当键盘映射启用ac-use-menu-map变量t.

仅供参考,可以随时按下完成C-g.因此,您也可以点击C-gRET输入带有RET完整绑定的换行符.此外,您可以使用C-j而不是RET在想要输入换行符时使用.默认情况下C-j不绑定ac-complete.