Emacs如何实现类似于Vim中的Ctrl+P单词自动补全功能?

6
使用vim时,在插入模式下按C-p可以自动补全并获取缓冲区中任何单词列表。
在emacs中是否有类似的命令?
2个回答

9
除了@choroba提到的hippie-expand之外,这里还有另外两种标准的Emacs单词自动完成方法:
  • M- / C-M- / - 动态缩写扩展(也称为dabbrev)。请参阅Emacs手册,节点Dynamic Abbrev Expansion

  • M-RET或在dynamic-completion-mode中按C-RET - 标准的Emacs库completion.el

completion.el很古老,显然不太知名,但它非常好用。您不仅可以完成同一缓冲区中的单词,还可以完成过去(程序符号等)中使用过的单词,包括过去的Emacs会话。

您最常用的完成优先级最高。当打开dynamic-completion-mode时,记录在磁盘上的“数据库”中会记录您的操作,例如您键入或遍历的单词等。要充分利用库completion.el,请阅读文件中的Commentary。没有其他文档,但Commentary非常清晰(如果不是完全最新的话)。

Icicles增强了上述两种单词自动完成方法:dabbrevcomplete。当有多个可能的完成时,它可以让您使用更好的匹配选项(例如子字符串、正则表达式,而不仅仅是前缀)来选择一个。


8
您可以使用hippie-expand命令进行自动完成。要绑定到Alt + /,请使用:
(global-set-key "\M-/" 'hippie-expand)

3
稍微更好一些的是kbd宏(函数?)- (global-set-key (kbd "M-/") 'hippie-expand) - Squidly

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