如何在 python 和 emacs 中使用元点 (M-.)?
python 是否有相当于 slime 的东西?
例如,如果我将光标定位在 foo() 上并执行 M-。 (跳转到定义)我想查看函数 foo 的源定义
这应该有效,无论 foo 是否在
1) 本地项目目录
2) 某些 ~/.virtualenvs/bar/lib/site-packages
3) 中在其他一些 python-path
4)虚拟环境正在使用中(即,它应该在我当前的虚拟环境中查找)
pymacs/ropemacs 组合是否会执行此操作?
Is there an equivalent of slime for python?
For example, if I position the cursor on foo() and do M-. (jump to definition) I would like to see the source definition of the function foo
This should work regardless of whether foo is in
1) the local project directory
2) in some ~/.virtualenvs/bar/lib/site-packages
3) in some other python-path
4) virtual env is in use (ie, it should look in my current virtualenv)
Does the pymacs/ropemacs combination do any of this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
为了避免 -e 您可以使用 etags 并通过 find 递归添加 py 文件:
To avoid the -e you can use etags and with a find you recursively add the py file:
这里提到的大多数答案都已经过时了。一个简单的解决方案是使用 elpy 进行
M-.
而不使用 etags(这需要额外的工作)。安装按照此处所述安装 elpy。
然后安装 python 包
重新启动 emacs ,打开任何 python 文件并运行
M-.
Elpy 已完整记录,您可以阅读 关于
M-.
这里。Most of the answers mentioned here are outdated. A simple solution is to use elpy for
M-.
without etags(which requires additional work).Install elpy as mentioned here.
and then install python packages
Restart emacs , open any python file and run
M-.
Elpy is fully documented, you can read about
M-.
here.M-。通常运行“
find-tag
”函数。您应该为 python 源文件创建一个 TAGS 文件。然后在执行 M- 之前“
visit-tags-table
”。这样,Emacs 将跳转到该标签的所有定义。 Cu M-型。跳转到标签的下一个定义。请参阅 find-tag 文档以获取帮助。请参阅 Emacs 帮助了解如何从 python 源文件创建 TAGS 文件。
例如,您可以使用 Exuberant Ctags 来创建 TAGS 文件。
转到 python 文件的根目录并执行以下操作:
通常会在项目的根目录中创建一个 TAGS 文件。
M-. normally runs the "
find-tag
" function.You should create a TAGS file of your python source files. Then you "
visit-tags-table
" before doing a M-.That way, Emacs will jump to all the definitions of the tag. Type C-u M-. to jump the next definition of your tag. See find-tag documentation for help. Consult Emacs help to know how to create a TAGS file from python source files.
You can for example use Exuberant Ctags for creating the TAGS file.
Go to the root directory of your python files and do this :
A TAGS file is normally created at the root directory of the project.
以下内容将索引您当前的项目
find 。 -类型 f -name '*.py' | xargs etags
但是如果你想索引你导入的库。您首先激活您的 virtualenv。然后使用
which
python 来检测你的库在哪里,然后将它们通过管道传输到 etags。The following will index your current project
find . -type f -name '*.py' | xargs etags
But if you want to index your imported libs. You first activate your virtualenv. Then use
which
python to detect where your libs are and then pipe them to etags.如果您像
find 那样执行
那么每次都会为每个文件生成 TAGS 文件。etags
,则已接受的 答案 会错过重要的一点。 -类型 f -name '*.py' | xargs etags正确的方法是使用
--append
将数据附加到现有的 TAGS 文件,例如此外,如果您想包含来自虚拟环境站点包目录的标识符(例如:
~/.virtualenvs /bar/lib/site-packages
):*将
python3.6
调整为您当前的 Python 版本Accepted answer misses an important point, if you execute
etags
likefind . -type f -name '*.py' | xargs etags
then the TAGS file would be generated every time for each file.The correct way to do it is to append data to the existing TAGS file with
--append
likeAlso if you want to include identifiers from virtual env site packages dir (e.g.:
~/.virtualenvs/bar/lib/site-packages
):*adjust
python3.6
to your current Python version尝试 emacs 的 anaconda-mode 和 company-anaconda 包。更新配置:
使用
pythonic-activate
切换到 virtualenv(如果有的话)。现在您已经有了
M-.
,您可以按M-*
返回!Try emacs's anaconda-mode and company-anaconda packages. Update config:
Switch to virtualenv with
pythonic-activate
, if you have one.Now you've got
M-.
and you can pressM-*
to go back!