在 vim 和 python virtualenv 中带有 taglist 的 ctags
Posted
技术标签:
【中文标题】在 vim 和 python virtualenv 中带有 taglist 的 ctags【英文标题】:ctags with taglist in vim and python virtualenv 【发布时间】:2012-04-28 09:01:06 【问题描述】:我在我的项目中使用virtualenv
和django
,我正在尝试寻找一种更有效的方式来浏览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
) 向下搜索 ~/.virtualenvs/myprojectname
,将索引结果写入 ~/mytags
文件
如果我碰巧在不同的virtualenv
环境中,这是一种维护标签和标签更改的非常手动的方法。
有人知道管理这个ctags
进程的自动化方法吗?
【问题讨论】:
【参考方案1】:There are many "automatic tags generation" plugins available.
TagList 不会从您手动/自动生成的任何 tags
中读取:它自己调用 ctags
并直接读取其输出。
您可能还想阅读:help autocommand
。您可以设置自动命令以重新生成您的tags
,如下所示:
autocmd BufWritePost,FileWritePost *.py :silent! !ctags -R -o ~/mytags ~/.virtualenvs/myprojectname
【讨论】:
您的链接是否指向某个地方?我得到一个 404。关于您的示例自动命令,这有点复杂,因为vim
在打开特定文件时必须检测我在哪个 python virtualenv 中,我不确定有没有办法自动检测哪个virtualenv 一个项目文件“属于”。
链接已修复。另请参阅this plugin,它应该更容易处理 virtualenv。以上是关于在 vim 和 python virtualenv 中带有 taglist 的 ctags的主要内容,如果未能解决你的问题,请参考以下文章
在 3.5.3 virtualenv 中运行时,Vim 中的 Python 错误
[python] virtualenv和virtualenvwrapper管理python虚拟环境