19

有没有人成功使用cscopePython 代码进行管理?我安装了 VIM 7.2 和最新版本cscope,但是它没有正确获取我的代码标签(总是偏离几行)。我尝试了该pycscope脚本,但它的输出不受现代版本的cscope.

有任何想法吗?还是使用 VIM 浏览 Python 代码的替代方法?(我对cscope超出简单标签的额外功能特别感兴趣ctags

4

6 回答 6

18

编辑:我将逐步完成该过程:

准备来源:

旺盛的 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。

无论哪种方式都非常可行。

也许您更喜欢 idutils?

绝对有可能,因为

z3c.recipe.tags

on pypi 同时使用 ctags 和 idutils 来为构建创建标签文件,这是我将在短时间内研究的一种方法。

当然,你总是可以使用下面的 greputils 脚本,它支持 idutils ,我们知道 idutils 可以与 python 一起使用,如果失败了,今年还有一种叫做 vimentry 的东西也使用了 python、idutils 和 vim。

参考链接(不完整列表):

希望这可以帮助您解决问题,我当然帮助了我。今晚如果有蛆虫窥镜,我会很伤心的。

于 2010-09-20T16:37:32.237 回答
15

这似乎对我有用:

切换到 Python 代码的顶层目录。创建一个名为cscope.files

find . -name '*.py' > cscope.files

cscope -R

cscope -b如果没有正确构建交叉引用,您可能需要先执行。

于 2010-11-23T16:28:46.460 回答
12
  1. 根据与 的维护者的通信cscope,该工具并非旨在与 Python 一起使用,并且没有计划实现这种兼容性。无论现在有效,显然都是错误的,并且没有任何保证它会继续有效。
  2. 看来我一直在使用过期版本的pycscope. 数据库支持最新版本 0.3 cscope。的作者pycscope告诉我,他cscope通过阅读cscope. 故意没有记录该格式,但它目前适用于pycsope0.3,这是我将使用的解决方案。

我将接受这个答案,因为不幸的是,即使在宣布赏金之后也没有其他答案提供帮助。没有答案被赞成,所以老实说我不知道​​赏金会去哪里。

于 2010-09-23T15:20:49.373 回答
2

有一个很棒的Python-mode-klen插件。如果您安装了它并安装了rope(python 重构库),那么转到特定术语的定义就像<C-c>gor一样简单<C-c>rag(首先是文件类型映射,其次是全局映射)。还有更多有用的功能,有些对我来说没用。所有这些都是禁用的。在cscope-in​​tro找到的问题列表中的功能:

  1. 这个符号在哪里使用? <C-c>f. 虽然相当混乱,因为快速修复列表中的结果确实显示-而不是实际行(尽管它们指向正确的位置)。也许它会被修复。
  2. 它在哪里定义?,这个全局符号的定义是什么?,这个函数在源文件的什么地方? <C-c>g
  3. <...> 全局符号的定义是什么? <C-c>raj

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

于 2012-05-26T18:41:38.873 回答
0

我遇到了和你一样的问题,在浏览了互联网之后,我找到了解决这个问题的方法:

创建一个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是可以接受的:)

于 2012-03-30T07:46:06.280 回答
0

这个 hack 似乎也迫使 cscope 遍历 Python 文件:

cscope -Rb -s *

如果您接受这cscope显然不是为使用 Python 而设计的

超集任何语言任何工具问题:如何在 Vim 中找到所有出现的变量?

于 2020-04-22T15:35:28.450 回答