我们在工作中使用.NET,我们的项目有一些VB和C#混合。 Exuberant Ctags按照这些说明为我生成了C#标签。然而,我还无法弄清楚如何为我的VB.NET代码生成标签。我找到的唯一有点有用的文章是这篇文章。但是它已经有2003年了,看起来有些过时。我注意到的第一件事是这一行:
错误,而且过时。我将其更改为以下内容:
这稍微改善了我的结果,但似乎仍无法产生预期的行为(例如,当我执行
--langmap=vb:.bas.cls.ctl.frm.vbs
错误,而且过时。我将其更改为以下内容:
--langmap=vb:.vb
这稍微改善了我的结果,但似乎仍无法产生预期的行为(例如,当我执行
:set tag=tags
并在函数调用或参数上进行^]或g]时,它没有标记)。这是我的ctags.cnf
文件的样子(我已经验证它正在被使用):--langdef=vb
--langmap=vb:.vb
--regex-vb=/^(Public|Private|\b)[ \t]*Sub[ \t]+([a-zA-Z0-9_]+)/\2/s,subroutine/i
--regex-vb=/^(Public|Private|\b)[ \t]*Function[ \t]+([a-zA-Z0-9_]+)/\2/f,function/i
--regex-vb=/^(Public|Private)[ \t]+([a-zA-Z0-9_]+)[ \t]+As[ \t]+/\2/v,variable/i
--regex-vb=/^(Public|Private|\b)[ \t]*Const[ \t]+([a-zA-Z0-9_]+)[ \t]+(As|=)[ \t]+/\2/c,const/i
--regex-vb=/^(Public|\b)[ \t]*Property[ \t]*(Get|Let|Set)[ \t]+([a-zA-Z0-9_]+)/\3/n,name/i
--regex-vb=/^(Public|Private|\b)[ \t]*Enum[ \t]+([a-zA-Z0-9_]+)/\2/e,enum/i
--regex-vb=/^([a-zA-Z_]+):/\1/l,label/i
--recurse
--exclude="bin"
--exclude="obj"
--fields=+ianmzS
--extra=+fq
--vb-kinds=cn
有什么线索可以让我得到适当的支持吗?
编辑:
这是我标签文件的一部分:
!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/
!_TAG_PROGRAM_NAME Exuberant Ctags //
!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/
!_TAG_PROGRAM_VERSION 5.8 //
Application.Designer.vb .\My Project\Application.Designer.vb 1;" kind:F line:1
Application.Designer.vb .\Nuts\My Project\Application.Designer.vb 1;" kind:F line:1
AssemblyInfo.vb .\My Project\AssemblyInfo.vb 1;" kind:F line:1
AssemblyInfo.vb .\Nuts\My Project\AssemblyInfo.vb 1;" kind:F line:1
AttachmentHandler.vb .\Utilities\AttachmentHandler.vb 1;" kind:F line:1
尽管我的CS代码库生成类似于以下标签:
SomeModel .\Client\Views\Models\Namespace\SomeModel.cs /^ public class SomeModel$/;" kind:c line:12 namespace:Views.Models.SomeModel access:public
man
页面,它会自动使用该文件(如果存在)。当我运行ctags --options=ctags.cnf
时,它给了我一个关于语言vb已经存在的警告。 - Wayne Werner