使用 Ropemacs,你可以做这样的事情:
M-x rope-auto-import
这会分析代码(我认为)并导入缺少的模块,例如,如果我写:
datetime.now()
它应该通过添加此行来为我进行导入:
from datetime import datetime
(它总是使用
from ... import ...
形式)
emacs-jedi中有类似的功能吗?
Jedi 尚不支持自动导入。 (因此显然 emacs-jedi 两者都不做)
还有讨论正在实施重构(包括自动导入)。不过,可能还需要一年左右的时间。
如果我们忽略jedi部分并关注emacs部分,您可以在安装autoimport后使用以下命令。
(defun my-python-autoimports ()
(interactive)
(save-buffer)
(shell-command (s-concat "autoimport " (shell-quote-argument (buffer-file-name))))
(revert-buffer t t))
为了将来参考,
M-x python-add-import
已添加到 Emacs 29 中。
这无需绝地武士、绳索或 lsp 即可工作。
使用前缀参数,它将尝试在该点找到符号的导入。