Vim Python:导航到已导入的文件

8

这个问题可能看起来很傻,但我卡住了。 我在一些Python文件中编写gnuradio应用程序。 在VIM中,我尝试打开一个已导入的文件,例如:

from gnuradio import audio

假设我使用以下函数:

audio.sink()

在vim中,可以快速获取内容。
sink()

什么是function?它是类似于ctags的CTRL-]命令的方式。

提示:使用Ctags导航到audio.sink()时会返回错误:tag not found: sink。使用Ctags只能导航到本地定义(不包括导入的内容)。可以通过运行以下命令来检查:

ctags --list-kinds=python

导入选项已启用。在tags文件中,可以看到:

audio   fm_receiver.py  /^from gnuradio import audio$/;"    i

Ctags应该让你能够跳转到项目中的任何定义。你使用的是哪个版本,以及如何调用它? - Ismail Badawi
我使用的是exuberant ctags 5.8版本,通过"apt-get"命令安装。使用"ctags -R"命令从命令文件创建标签文件。然后在vim中将目标设置为"tags"文件。 - user3583807
为了让它可用,我需要在每个使用gnuradio目录(/usr/lib/python2.7/.../gnuradio/audio等)中创建tags文件,并将所有这些文件设置为vim中的“tags”变量。是否有任何插件可以让我不用手动完成这个过程(更加舒适)? - user3583807
1个回答

5

这个方法运行速度很快,但并不完全符合您的要求。您需要在 .vimrc 文件中添加以下代码:

nnoremap <C-k> :!ctags -aR /usr/lib/python*/site-packages/<cword><cr>

接下来,您可以将鼠标悬停在包名gnuradio上,然后按下CTRL+K执行命令,该命令将将该软件包的源文件附加到本地标记文件(vim的默认标记文件)中。 然后,您可以使用CTRL+]浏览到sink关键字以获取该函数。


在我的情况下,涉及的文件是/usr/local/lib/python3.6/dist-packages/webargs/fields.py。因此可能有多个目录需要搜索。在这种情况下我们应该怎么做? - Oleg Yablokov

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