如何为mocha测试创建ctags

时间:2013-10-20 04:46:12

标签: vim tdd mocha ctags ctrlp

我试图用ctags索引我的测试,以便我可以使用CtrlP vim插件轻松跳转。测试是在咖啡脚本中。这就是我在〜/ .ctags配置中找到的描述块。

--regex-coffee=/^[ \t]*(describe+[ \t]+\"(.+?)\")+[ ,]+*->.*$/\1/t,test/

它找到了描述块ok,这就是ctags文件的样子

User_resource_spec.coffee   tests/e2e/User_resource_spec.coffee 1;" F
assert  tests/e2e/User_resource_spec.coffee /^assert = require("assert")$/;"    v
describe "Create User"  tests/e2e/User_resource_spec.coffee /^describe "Create User", ->$/;"    t
describe "Users"    tests/e2e/User_resource_spec.coffee /^  describe "Users", ->$/;"    t
should  tests/e2e/User_resource_spec.coffee /^should = require("should")$/;"    v

我遇到的问题是当我做的时候

:tag describe "Create User"

它说找不到标签。所有其他标签都正常工作。如果我编辑标签文件并更改

describe "Create User"

describe 
然后它再次起作用。我的猜测是因为空格和引号而无效。

奇怪的是,当我放置句号和下划线而不是空格并摆脱引号时,它仍然不起作用。因为在我仍然无法跳转到那个标签。然而,带有下划线和句号的其他标签工作正常。

我无法将标签更改为“描述”,因为我想区分测试。

如何使用ctags处理空格和引号。或者如果不可能那样做,那么在vim中跳转到特定的mocha测试的最佳解决方案。

1 个答案:

答案 0 :(得分:1)

你必须逃避引号:

:tag describe \"Create Users\"

键入的内容很多,为什么不简单地执行以下操作?

:tag des<Tab>

它会列出describe \"Create Users\"describe \"Users\",还会显示:tag describe "Create Users"无效的原因(非转义引号)。

请注意,Vim默认使用:tag和朋友的全字搜索;你可以使用正则表达式搜索来使过程更具确定性:

:tag /Crea<Tab>