有什么方法可以让ctags以某种方式支持PHP/Python提供的内置函数(或者我当时正在使用的任何函数),以便我也可以在源代码资源管理器中使用它们vim和类似的东西?
更新:
好的,所以使用 python,我可以在源文件夹上运行 ctags 以获取带有内置函数的标签文件,尽管使用 PHP 它似乎不起作用,但是 PHP 的源文件包含如下行:
/* {{{ proto resource mysql_connect([string hostname[:port][:/path/to/socket] [, string username [, string password [, bool new [, int flags]]]]])
因此,如果我能以某种方式使用 ctags 解析它,我将在我的标签文件中获得适当的函数。我尝试使用 --regex-C 让它拾取它,但以下内容似乎不起作用。
--regex-C='/'/'* '{'{'{ proto ([^ ]+) ([^ (]*)/'2/f/'
知道如何让它工作吗?
同样使用 python,我似乎得到了带有类的"类类名:"行,有没有办法也包含 init 函数?
更新:我将为PHP创建一个单独的问题,感谢您的回答。
>ctags
允许您使用 --append
选项以增量方式构建标签数据库;如果你想要 Python 例程的 C 定义(很多?一些?一点点?直接用 C 实现,一些用 Python 本身实现),你可以运行:
ctags -R
ctags --append -R /path/to/python-source
如果你只想包含一部分Python源代码,你可以只提供这部分;正如你在评论中所说,Lib/
是开始:)
ctags -R
ctags --append -R /path/to/python-source/Lib
鉴于大多数解释型语言(甚至是字节码编译的语言)最终在幕后用 C 语言实现了相当数量的接口,因此可能很难在源代码和所依赖的 API 源代码之间实现无缝过渡。
我发现拥有多个源代码数据库很有帮助;有时问题最好用cscope
回答,有时用gid
,有时ctags
。 ctags
非常适合集成到vim
中,但gid
通常更容易编写脚本。
ctags在python语法方面有很多麻烦,因为它试图寻找大括号,而python没有任何大括号。
我会说看看这个。