Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用cscope使用VIM浏览Python代码?_Python_Vim_Editor_Cscope - Fatal编程技术网

使用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
    我不知道我的计算机发生了什么,最后两行工作不好,但我认为手动键入a
    cscope-bk
    是可以接受的:)

    有一个很棒的插件。如果您安装了it和rope(python重构库),那么查看特定术语的定义就像
    g
    rag
    一样简单(第一个是文件类型映射,第二个是全局映射)。还有更多有用的功能,有些对我来说是无用的。所有这些都是不可否认的。问题列表中的功能可在以下位置找到:

  • 此符号在哪里使用?f。但是相当混乱,因为快速修复列表中的结果显示的是
    -
    ,而不是实际的行(尽管它们指向正确的位置)。也许会修好的
  • 它在哪里定义?这个全局符号的定义是什么?这个函数在源文件中的什么位置?g
  • 全局符号的定义是什么?raj

  • 不太多,但我对ropevim的用户不是很有经验。

    这种黑客行为似乎也迫使cscope浏览Python文件:

    cscope -Rb -s *
    
    如果您接受
    cscope


    超集任何语言任何工具问题:

    您是否考虑过简单地修复pycscope?我还没有考虑需要做什么,但我无法想象这会有多困难。此外,您可能想更新您的问题,以提及,正如您的博客文章所说,cscope被Python注释抛弃了。@ssoklow:fixed
    pycscope
    的问题是,使用的“DB”格式
    cscope
    没有文档记录,根据
    cscope
    的维护者,这是由HH提出的。那会很不愉快。我必须考虑在这种情况下我会尝试什么解决方案。即使试图修改cscope也是一场灾难。我可以找到用于识别注释的代码,但我认为尝试在注释代码中包含#和“”,会很混乱。也许最简单的方法是预处理源文件并去除注释(用空行替换)但是,这也不是很有趣,因为cscope不支持标准输入。Doxygen本机只支持C和Java,但通过前缀