在vim和python virtualenv中带有taglist的ctags

时间:2012-04-28 09:01:06

标签: 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是某种“索引”程序,它解析给定的目录/ files / file并抓取所有关键字(类名,方法名,函数名等)查找并将其写入文件。这个文件可以更新,vim插件taglist基本上从中读取,以便在我对类/方法/执行 Ctrl t 时知道将我发送到哪里功能名称。

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

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

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

第二个命令通过在~/mytags

下递归搜索(-R)将索引结果写入~/.virtualenvs/myprojectname文件

这是有效的,但如果我碰巧在不同的virtualenv环境中,这是一种非常手动的方式来维护标签和标签。

是否有人知道管理此ctags流程的自动方式?

1 个答案:

答案 0 :(得分:4)

There are many "automatic tags generation" plugins available.

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

您也可以阅读:help autocmmand。您可以设置自动命令以在写入时重新生成tags,如下所示:

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