我对自动完成非常满意,但有一件事让我感到困惑:
我设置为立即显示内联建议,但菜单延迟0.9秒。我输入前几个字母,例如“del”立即自动完成内联到“删除”。如果我想输入“删除”,我点击TAB
,这没关系。但是,如果我想实际输入“del”和换行符,那么再次点击RET
会自动完成“删除”。
如果仅显示内联建议,我如何强制RET
成为换行符?显示自动完成菜单后,我希望它像往常一样再次成为触发键。
谢谢!
答案 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
。