我对自动完成功能非常满意,但有一件事让我烦恼:
我设置为立即显示内联建议,但菜单有 0.9 秒的延迟。我输入前几个字母,例如“del”立即自动完成内联到“删除”。如果我想输入“删除”,我点击 TAB
就可以了。但是,如果我想实际输入“del”和换行符,该怎么办 - 再次点击 RET
会自动完成“删除”。
如果只显示内联建议,如何强制 RET
成为换行符?一旦显示自动完成菜单,我希望它像往常一样再次成为触发键。
谢谢!
最佳答案
通过在自动完成
模式的其他设置后添加以下行,您可以仅在显示完成菜单时启用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 默认绑定(bind)到 ac-complete
和 ac-menu -map
是完成菜单上完成的键盘映射。当 ac-use-menu-map
变量为 t
时,将启用 ac-menu-map
键映射。
仅供引用,可以随时按 C-g 停止完成。因此,您还可以按 C-g 和 RET 来输入换行符,并且 RET 的绑定(bind)完好无损。另外,当您想输入换行符时,可以使用 C-j 而不是 RET。 C-j 默认情况下不绑定(bind)到 ac-complete
。
关于Emacs 自动完成 : don't trigger on RET in inline suggestion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12660428/