Go的ctag数据库

bsr*_*bsr 23 ctags go exuberant-ctags

如何为Go源生成标签文件

在mac中,我安装了繁琐的ctags,并在源目录中尝试了以下命令

ctags -f gosource.tags -R `pwd`
Run Code Online (Sandbox Code Playgroud)

但是,它不考虑*.go文件.我必须使用-h选项吗?但是,根据手册,它不仅仅适用于头文件吗?

请给我正确的命令,以便我可以使用带有vim的标签文件.我也更喜欢绝对路径,以便我可以将文件保存在任何地方

谢谢.

编辑:我假设当前的ctags支持Go,请参阅http://groups.google.com/group/golang-nuts/browse_thread/thread/3a4848db231b02c9.

但是,http: //ctags.sourceforge.net/languages.html尚未列出.

laz*_*zy1 40

将以下内容添加到〜/ .ctags中

--langdef=Go
--langmap=Go:.go
--regex-Go=/func([ \t]+\([^)]+\))?[ \t]+([a-zA-Z0-9_]+)/\2/d,func/
--regex-Go=/var[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/d,var/
--regex-Go=/type[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/d,type/
Run Code Online (Sandbox Code Playgroud)

(来自http://go-wise.blogspot.com/2011/09/using-ctags-with-go.html)

  • 在撰写本文时,SourceForge上最新的繁琐ctags版本是5.8,而SVN中继没有支持.无论你使用什么版本,它绝对不是官方代码库. (2认同)

Eva*_*lee 17

--langdef=Go
--langmap=Go:.go
--regex-Go=/func([ \t]+\([^)]+\))?[ \t]+([a-zA-Z0-9_]+)/\2/f,func/
--regex-Go=/var[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/v,var/
--regex-Go=/type[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/t,type/
Run Code Online (Sandbox Code Playgroud)

确实适用于ctags 5.8.与前一张海报略有不同,ctags在正则表达式行的末尾需要独特的1-char类型.因此/d,func/应该/f,func/直观地阅读.这允许ctags区分和识别类型,允许ctags --go-types=fvtie


Nec*_*cro 5

我看到了你的帖子,四处寻找适合这项工作的好工具,尝试了 ctags,但最终还是不满意。我在 Go 中编写了一个程序“gotags”,它为 Go 代码生成一个 ctags 文件。它比当前的 ctags 支持更好,因为例如,它标记结构字段名称以及结构名称本身。你可以在这里得到它:https : //github.com/necro351/gotags

它是一个不错的简短 Go 程序,因为它使用标准库解析器,并且除了良好的 Go 解析和标记之外没有其他功能。只需检查一下(或去获取它)并进行安装。另外,如果您对改进它有任何建议或想法,请告诉我。

编辑:我是一个活跃的 Gopher,所以会随着时间的推移和我使用它而更新这个工具。

编辑:我不再积极开发 Go。但是我的工具短,而且几乎可以正常工作,所以它应该“正常工作”:)