如何将Python插件添加到Gnu Global

7 投票
2 回答
5807 浏览
提问于 2025-04-16 15:43

我的gtags版本是 gtags - GNU GLOBAL 5.9.2

我在这里下载了一个用于Gnu Global的Python插件 这里

把globalrc.example复制到~/.globalrc

把script/python_global_tags.py复制到~/bin/python_global_tags.py,这个路径在我的$PATH里

在一个包含Python文件的目录里输入:“gtags”

没有报错

然后输入:“global -f test.py”

没有任何输出

但是“global -g”可以正常工作,我在想这是不是只是grep的一个包装

我的问题是:

  • 用Python自己写插件真的可行吗?
  • 有没有关于配置~/.globalrc的教程?官方站点 这里提到的内容太少了。

非常感谢,

gnu global越来越流行,但支持的语言还是太少了。

2 个回答

0

根据我的理解,GNU Global 目前还不支持 Python。它的主页上写着:

支持 C、C++、Yacc、Java、PHP4 和汇编语言。(定义和参考)

而且这篇帖子基本上说我们需要用 C 语言写一个插件。由于 Global 不支持 Python,我又回到了老牌的Exuberant Ctags

ctags -e -R .

这个工具工作得很好,但你不能得到反向引用。还可以看看关于 etags 的另一个问题

9

对于那些通过谷歌来到这个页面的人:现在GNU Global 确实支持Python(还有更多其他语言),这是通过一个很棒的基于Pygments的插件实现的:

https://github.com/yoshizow/global-pygments-plugin

只需按照README中的说明操作。唯一需要注意的是,在我的情况下,gtags在处理大型文件树时生成了空文件,这可能是因为大量使用了符号链接;解决办法是按照手册中的建议使用find命令:

find . -name '*.py' >/tmp/list     # make a file set
gtags -f /tmp/list                 # and use it

现在你可以搜索定义

global -x main     # suppose you have at least one main() somewhere in the code

或者引用

global -rsx sys                    # this is likely to list *all* your modules

甚至可以搜索不完整标签的可能补全:

global -cs OrderedD                # -c: "complete", -s: "non-local references"

撰写回答