Emacs中的上下文无关自动完成弹出窗口?

3
我正在尝试从Vim转换到Emacs,其中我非常想念Vim的一个功能,那就是上下文无关的自动完成弹出窗口(CTRL-n和CTRL-p)。例如,在下面的缓冲区中,如果我键入“he”,然后按CTRL-n,我会得到一个弹出窗口:
vim context insensitive completion menu
如何在Emacs中获得类似的上下文无关的自动完成菜单?
注意:我特别需要上下文无关,因为在不同的上下文中进行引用通常是有帮助的(例如,在Restructured Text文档中引用Python类)-这是上下文敏感的“omnicomplete”所不能做到的。
此外,我知道M-/将触发自动完成,但它只循环匹配;我想要一个显示匹配项的弹出窗口列表。
2个回答

5

自动完成模式 可以满足你的需求。

通常情况下,它不是通过热键触发的,而是通过类似以下的方式:

(setq ac-auto-start nil)
(global-set-key "\M-/" 'auto-complete)

应该做你想要的事情。


太棒了!我能否重新映射 C-nC-p 来选择下一个/上一个自动完成项?(而不是使用向上箭头和向下箭头)? - David Wolever
1
`(define-key ac-complete-mode-map "\C-n" 'ac-next)(define-key ac-complete-mode-map "\C-p" 'ac-previous)` - tdresser
我认为触发键的方式比自动显示的方式要好得多,今天我花了几个小时尝试让下拉菜单在我输入内容时自动显示,但是失败了,它总是需要大约2秒钟的时间来显示。但是触发键更好。谢谢。 @tdresser - CodyChan

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接