如何让 emacs 从已知关键字列表中自动扩展?

如何让 emacs 从已知关键字列表中自动扩展?

在 Ubuntu 安装中,我python-mode.el的文件中同时包含以下命令.emacs

(global-set-key [f2] 'hippie-expand)

这样关键字就会突出显示,并且我已经定义的变量可以使用自动扩展[f2]。如何让自动扩展与 Python 关键字一起工作?例如,给定代码

for x in enumera

通过按[f2]如何才能将其扩展到

for x in enumerate

enumerate是一个已知关键字)。因为我正在学习 emacs,所以答案越详细,就越有帮助!

答案1

首先,您可能更喜欢使用其中一个包自动完成或者绝地

也就是说,hippie-expand通过尝试使用存储在变量中的函数列表来扩展当前单词hippie-expand-try-functions-list(要查看其内容,请按C-h v hippie-expand-try-functions-list RET)。例如,该变量的默认值中的第一个函数尝试扩展文件名。hippie-expand依次要求对每个函数进行扩展,当函数用尽其所有可能的完成时,转到下一个函数。(也就是说,您可以继续按[f2]以获得更多扩展。)

当您扩展已出现在 Python 代码中的变量名称时,hippie-expand正在使用函数try-expand-dabbrev,该函数在当前缓冲区中搜索当前单词。该列表中的另一个函数,try-expand-dabbrev-all-buffers在所有打开的缓冲区中搜索当前单词。因此,一个快速(且粗糙)的解决问题的方法是创建一个包含所有关键字和内置函数(enumerate是内置函数)的文件,并让该文件在 emacs 中保持打开状态。也就是说,如果您坚持使用hippie-expand;显然,如果您能让它们工作,我之前提到的两个包似乎是更好的解决方案。

相关内容