python - 在 vim 和 python virtualenv 中使用 taglist 的 ctags

标签 python vim virtualenv ctags taglist

我在我的项目中使用了 virtualenvdjango,我正试图找到一种更有效的方式来浏览 django 源代码。

按照此处的建议 - Tools to help developers reading class hierarchy faster - 我通过 ctags 设置了自己

sudo port -v install ctags

并通过 https://github.com/vim-scripts/taglist.vim 安装了 vim 插件 taglist

不幸的是,当我试图通过Ctrl+]“跳转”查看类时,ctags 似乎无法找到我的django 类。

有什么建议可以让 ctags 读取位于我的 virtualenv 中的 python 源代码吗?

更新

通过进一步的实验,我意识到 ctags 是某种“索引”程序,它解析给定的目录/文件/文件并获取所有关键字(类名、方法名、函数名等)它找到并将其写入文件。这个文件可以被更新并且 vim 插件 taglist 基本上从它读取来知道当我在一个类上执行 Ctrlt 时将我发送到哪里/方法/函数名称。

所以我想出了一个临时的手动解决方案,我在我的 vim 中执行,如下所示:-

:set tags=~/mytags
:! ctags -R -o ~/mytags ~/.virtualenvs/myprojectname

第一个命令告诉我的 vim/taglist 我的“索引”结果存储在哪里。

第二个命令通过递归搜索(-R)将索引结果写入~/mytags文件~/.virtualenvs/myprojectname

这是可行的,但如果我碰巧处于不同的 virtualenv 环境中,这是一种维护标签和标签更改的非常手动的方法。

有人知道管理此 ctags 进程的自动化方法吗?

最佳答案

There are many "automatic tags generation" plugins available.

TagList 不会从您手动/自动生成的任何 tags 中读取:它会调用 ctags 本身并直接读取其输出。

您可能还想阅读 :help autocommand。您可以设置自动命令以在写入时重新生成您的标签,如下所示:

autocmd BufWritePost,FileWritePost *.py :silent! !ctags -R -o ~/mytags ~/.virtualenvs/myprojectname

关于python - 在 vim 和 python virtualenv 中使用 taglist 的 ctags,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10362085/

相关文章:

vim - Ctags - 仅显示相关或上下文标签

python - 在 64 位 Kubuntu 上安装 python 32 位

python - 情节破折号 : Linking external/local CSS

python - 永久添加目录到 PYTHONPATH?

unix - 你知道任何针对程序员的 "best practice"或 "what works"vi 教程吗?

vim - 映射键在 Vim 中的正常模式和插入模式之间切换

python - pip 找不到设置文件

python - 单个可执行文件中的 Virtualenv

python - 蒙戈 : avoid duplicate files in gridfs

python - 使用 Python 检查项目是否在字典中并且为真