使用cscope使用VIM浏览Python代码?
是否有人成功地将使用cscope使用VIM浏览Python代码?,python,vim,editor,cscope,Python,Vim,Editor,Cscope,是否有人成功地将cscope与Python代码一起使用?我已经安装了VIM 7.2和最新版本的cscope,但是它没有正确地获取代码的标签(总是会有几行代码)。我尝试了pycscope脚本,但现代版本的cscope不支持它的输出 有什么想法吗?还是使用VIM浏览Python代码的替代方案?(我特别感兴趣的是cscope提供的额外功能,而不仅仅是ctags的简单标记)编辑:我将一步一步地完成这个过程: 准备资料来源: exhuberant CTAG,有一个选项:-x Alternativel
cscope
与Python代码一起使用?我已经安装了VIM 7.2和最新版本的cscope
,但是它没有正确地获取代码的标签(总是会有几行代码)。我尝试了pycscope
脚本,但现代版本的cscope
不支持它的输出
有什么想法吗?还是使用VIM浏览Python代码的替代方案?(我特别感兴趣的是
cscope
提供的额外功能,而不仅仅是ctags
的简单标记)编辑:我将一步一步地完成这个过程:
准备资料来源:
exhuberant CTAG,有一个选项:-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不仅限于“开箱即用”类型的文件。任何常规文件格式均可使用
此外,您还可以使用gtags cscope(如本手册第3.7节所述,它随附了global),以获得使用gtags的可能快捷方式。您将得到一个ctags表格文件的输入,Global/gtags可以解析该文件以获取您的对象,或者您可以将pycscope的源代码与已知格式的ctags文件一起使用,以获取中vim cscope命令的输入
如果_cscope.txt
不管怎样,这都是可行的
也许你更喜欢艾杜提尔?
绝对可能,因为
z3c.recipe.tags
on pypi同时使用ctag和idutils为构建创建标记文件,这是我将在短时间内研究的一种方法
当然,您可以始终使用下面的greputils脚本,它支持idutils,我们知道idutils与python一起工作,如果失败,今年还有一个叫做vimentry的东西也使用python、idutils和vim
参考链接(不完整列表):
- ,使用Gnu global。2008年更新
- ,包含对*id idutils的支持,2005
- ,很古老,但这家伙很不错,他的标签和缓冲区指南令人惊叹
- ,2010年
cscope
的维护人员的通信来看,该工具不是为与Python一起工作而设计的,也没有实现这种兼容性的计划。任何现在起作用的东西,显然都是错误的,而且没有任何保证它会继续起作用pycscope
。cscope
DB支持最新版本0.3。pycscope
的作者告诉我,他通过阅读cscope
的源代码,找到了cscope
数据库的输出格式。这种格式并没有特意记录下来,但它目前可以与pycsope
0.3一起使用,这是我将要使用的解决方案我将接受这个答案,因为不幸的是,即使在宣布赏金之后,也没有其他答案提供帮助。没有一个答案是经过投票表决的,所以我真的不知道悬赏会到哪里去 这似乎对我有用: 更改为python代码的顶级目录。创建名为
cscope.files的文件
:
find . -name '*.py' > cscope.files
cscope -R
如果交叉引用没有正确生成,您可能需要首先执行
cscope-b
。我遇到了与您相同的问题,在浏览internet后,我找到了一种解决方法:
创建python脚本:cscope\u 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
是可以接受的:)有一个很棒的插件。如果您安装了it和rope(python重构库),那么查看特定术语的定义就像g
或rag
一样简单(第一个是文件类型映射,第二个是全局映射)。还有更多有用的功能,有些对我来说是无用的。所有这些都是不可否认的。问题列表中的功能可在以下位置找到:
-
,而不是实际的行(尽管它们指向正确的位置)。也许会修好的不太多,但我对ropevim的用户不是很有经验。这种黑客行为似乎也迫使cscope浏览Python文件:
cscope -Rb -s *
如果您接受cscope
是
超集任何语言任何工具问题:您是否考虑过简单地修复pycscope?我还没有考虑需要做什么,但我无法想象这会有多困难。此外,您可能想更新您的问题,以提及,正如您的博客文章所说,cscope被Python注释抛弃了。@ssoklow:fixed
pycscope
的问题是,使用的“DB”格式cscope
没有文档记录,根据cscope
的维护者,这是由HH提出的。那会很不愉快。我必须考虑在这种情况下我会尝试什么解决方案。即使试图修改cscope也是一场灾难。我可以找到用于识别注释的代码,但我认为尝试在注释代码中包含#和“”,会很混乱。也许最简单的方法是预处理源文件并去除注释(用空行替换)但是,这也不是很有趣,因为cscope不支持标准输入。Doxygen本机只支持C和Java,但通过前缀