有没有人成功使用cscope
Python 代码进行管理?我安装了 VIM 7.2 和最新版本cscope
,但是它没有正确获取我的代码标签(总是偏离几行)。我尝试了该pycscope
脚本,但它的输出不受现代版本的cscope
.
有任何想法吗?还是使用 VIM 浏览 Python 代码的替代方法?(我对cscope
超出简单标签的额外功能特别感兴趣ctags
)
编辑:我将逐步完成该过程:
旺盛的 ctags,有一个选项:-x
Alternatively, ctags can generate a cross reference file which lists,
in human readable form, information about the various source objects
found in a set of language files.
这是问题的关键:
ctags -x $(ls **/*.py); # replace with find if no zsh
将以已知格式为您提供源对象数据库,如下所述
man ctags; # make sure you use exuberant ctags!
Gnu Global 不仅限于“开箱即用”类型的文件。任何常规文件格式都可以使用。
此外,您可以使用手册第 3.7 节中提到的全局附带的 gtags-cscope,作为使用 gtags 的可能快捷方式。您最终会得到一个 ctags 表格文件的输入,Global/gtags 可以解析该文件以获取您的对象,或者您可以使用 pycscope 的源代码和已知格式的 ctags 文件来获取 vim cscope 命令的输入
if_cscope.txt。
无论哪种方式都非常可行。
绝对有可能,因为
z3c.recipe.tags
on pypi 同时使用 ctags 和 idutils 来为构建创建标签文件,这是我将在短时间内研究的一种方法。
当然,你总是可以使用下面的 greputils 脚本,它支持 idutils ,我们知道 idutils 可以与 python 一起使用,如果失败了,今年还有一种叫做 vimentry 的东西也使用了 python、idutils 和 vim。
希望这可以帮助您解决问题,我当然帮助了我。今晚如果有蛆虫窥镜,我会很伤心的。
这似乎对我有用:
切换到 Python 代码的顶层目录。创建一个名为cscope.files
:
find . -name '*.py' > cscope.files
cscope -R
cscope -b
如果没有正确构建交叉引用,您可能需要先执行。
cscope
,该工具并非旨在与 Python 一起使用,并且没有计划实现这种兼容性。无论现在有效,显然都是错误的,并且没有任何保证它会继续有效。pycscope
. 数据库支持最新版本 0.3 cscope
。的作者pycscope
告诉我,他cscope
通过阅读cscope
. 故意没有记录该格式,但它目前适用于pycsope
0.3,这是我将使用的解决方案。我将接受这个答案,因为不幸的是,即使在宣布赏金之后也没有其他答案提供帮助。没有答案被赞成,所以老实说我不知道赏金会去哪里。
有一个很棒的Python-mode-klen插件。如果您安装了它并安装了rope(python 重构库),那么转到特定术语的定义就像<C-c>g
or一样简单<C-c>rag
(首先是文件类型映射,其次是全局映射)。还有更多有用的功能,有些对我来说没用。所有这些都是禁用的。在cscope-intro找到的问题列表中的功能:
-
而不是实际行(尽管它们指向正确的位置)。也许它会被修复。不是很多,但我不是很有经验的ropevim用户。
我遇到了和你一样的问题,在浏览了互联网之后,我找到了解决这个问题的方法:
创建一个python脚本:cscope_scan.py
import os
codeRootDir = os.getcwd()
__revision__ = '0.1'
__author__ = 'lxd'
FILE_TYPE_LIST= ['py']
if __name__ == '__main__':
import os
f = open('cscope.files','w')
for root,dirs,files in os.walk(codeRootDir):
for file in files:
for file_type in FILE_TYPE_LIST:
if file.split('.')[-1] == file_type:
f.write('%s\n' %os.path.join(root,file))
f.close()
cmd = 'cscope -bk'
os.system(cmd)
在代码的根文件夹下执行此脚本,这将生成cscope.files
然后执行cscope -b
我不知道我的计算机会发生什么,最后两行效果不佳,但我认为手动输入 acscope -bk
是可以接受的:)
这个 hack 似乎也迫使 cscope 遍历 Python 文件:
cscope -Rb -s *
如果您接受这cscope
显然不是为使用 Python 而设计的。
超集任何语言任何工具问题:如何在 Vim 中找到所有出现的变量?