如何在Emacs的auto-complete模式下按回车不自动换行?
解决Auto-Complete中回车同时补全换行的问题
这个问题我之前也碰到过,确实有点烦——明明只想补全单词,结果直接换行了。好在auto-complete的灵活性很强,通过简单的按键绑定配置就能解决:
;; 重新绑定回车键,在auto-complete菜单激活时仅完成补全,不换行 (define-key ac-completing-map (kbd "RET") 'ac-complete) ;; 确保未激活补全菜单时,回车键正常换行 (define-key ac-mode-map (kbd "RET") (lambda () (interactive) (if (null ac-completing) (newline) (ac-complete))))
配置解释:
- 第一行代码针对补全菜单激活时的按键映射,将回车键绑定到
ac-complete函数——这个函数只会完成当前选中的补全项,不会触发换行操作。 - 第二部分是全局的ac-mode按键映射,定义了一个条件判断:如果当前没有激活补全菜单(
ac-completing变量为空),就执行正常的换行命令;如果菜单处于激活状态,则执行补全操作。
这样配置后,当你输入"abc"看到补全菜单时,按回车只会选中"abc"完成补全,再次按回车才会正常换行,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Dennis




