如何在emacs中使用python中的元点(M-.)?

nun*_*unb 21 python emacs ropemacs pymacs rope

是否有相当于python的粘液?

例如,如果我将光标定位在foo()上并执行M-.(跳转到定义)我想看看函数foo的源定义

无论foo是否存在,这都应该有效

1)本地项目目录

2)在一些〜/ .virtualenvs/bar/lib/site-packages中

3)在其他一些python-path中

4)虚拟环境正在使用中(即,它应该在我当前的virtualenv中查看)

pymacs/ropemacs组合是否可以执行此操作?

mat*_*thk 14

要避免使用-e,您可以使用etags并使用find来递归添加py文件:

find . -type f -name '*.py' | xargs etags
Run Code Online (Sandbox Code Playgroud)


Chi*_*and 8

这里提到的大多数答案都已过时.一个简单的解决方案是使用elpy进行M-.无etags(这需要额外的工作).

按照此处的说明安装elpy.

M-x package-install elpy
Run Code Online (Sandbox Code Playgroud)

然后安装python包

$ sudo pip install rope jedi
Run Code Online (Sandbox Code Playgroud)

重启emacs,打开任何python文件并运行 M-.

Elpy有完整的文档,你可以在M-.这里阅读.


Jér*_*dix 5

M-。通常运行“ find-tag”功能。您应该为 python 源文件创建一个 TAGS 文件。然后你在“ visit-tags-table”之前做一个M-。这样,Emacs 将跳转到该标签的所有定义。Cu M-型。跳转到标签的下一个定义。请参阅 find-tag 文档以获取帮助。请参阅 Emacs 帮助了解如何从 python 源文件创建 TAGS 文件。

例如,您可以使用Exuberant Ctags来创建 TAGS 文件。

转到 python 文件的根目录并执行以下操作:

ctags -e -R .
Run Code Online (Sandbox Code Playgroud)

通常在项目的根目录中创建一个 TAGS 文件。

  • 我建议您也查看 http://www.emacswiki.org/emacs/EtagsSelect ,如果您将 `M-.` 绑定到 `etags-select-find-tag` ,它会提供更好的界面 (3认同)