PHP/Python等内置函数的ctags信息
有没有办法让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中,我能看到类似"class ClassName:"的行,这样可以看到类的定义,有没有办法让它也包含init函数呢?
更新:我会为PHP单独提问,谢谢大家的回答。
2 个回答
1
ctags在处理Python语法时遇到了很多麻烦,因为它会去寻找大括号,而Python是没有大括号的。
我建议你看看这个链接。
2
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
通常更容易进行脚本编写。