转自:http://www.jb51.cc/article/p-swdqgclq-bqk.html
--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/
------ 分割线,以下是原文内容------
Ctags工具是用来遍历源代码文件生成tags文件,这些tags文件能被编辑器或其它工具用来快速查找定位源代码中的符号(tag/symbol),如变量名,函数名等。比如,tags文件就是Taglist和OmniCppComplete工作的基础。
其安装和使用本地不做过多赘述。
现在说一下如何配置自己的ctags使其支持golang
问题描述:
如果发现自己的ctags无法支持golang,首先check一下ctags版本 ctags :
ctags --version
Exuberant Ctags 5.8,Copyright (C) 1996-2009 Darren Hiebert
Compiled: Sep 13 2015,03:28:50
Addresses: <dhiebert@users.sourceforge.net>,http://ctags.sourceforge.net
Optional compiled features: +wildcards,+regex
可通过命令查看其支持的语言:
ctags --list-languages Ant Asm Asp Awk Basic BETA C C++ C# Cobol DosBatch Eiffel Erlang Flex Fortran HTML Java JavaScript Lisp Lua Make MatLab OCaml Pascal Perl PHP Python REXX Ruby Scheme Sh SLang SML sql Tcl Tex Vera Verilog VHDL Vim YACC
发现其中没有golang。
解决方案:
--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/
然后再通过 ctags --list-languages 去查看发现既可以支持golang语言,后面就可以通过ctags对golang进行愉快的跳转与回跳了。
其中ctags中查找支持的文件类型和后缀可以通过如下几个命令去查看:
ctags --list-languages
ctags --list-kinds
ctags --list-maps