用于查找标签的自定义功能

时间:2013-02-11 16:10:11

标签: f# vim

当我按Ctrl +]时,我可以挂钩Vim用来查找定义的机制吗?文档似乎假设我有一个标签文件设置。我想提供类似的东西:给出当前缓冲区中的行和列,在那里获取单词,并返回定义该单词的文件名,行和列。

作为背景,我正在添加到Vim F#插件。我通过omnifunc和balloonexpr工作omnicompletion和气球,现在我喜欢Ctrl +]在F#源文件中工作。

2 个答案:

答案 0 :(得分:0)

嗯,最直接和最可靠的解决方案可能是add F# support to ctags

同时,您可以使用:vim递归搜索<cword>的任意路径,并使用:copen打开quickfix窗口。

答案 1 :(得分:0)

您可以使用 F#文件类型在缓冲区中本地重载<C-]>映射并调用您自己的查找函数,但这只是一个部分和hacky解决方案,因为它忽略了所有其他与标签相关的功能(如:tag等)更好地集成到(可扩展和开放)标签系统中。

您需要为F#源代码实现标记数据库的生成。格式很简单,请参阅:help tags-file-format。默认标记程序 Exuberant Ctags 可以使用正则表达式进行扩展,但这可能只会产生对F#等复杂语言的近似解析。最好为它编写专用的可执行文件。 (有一些先例,例如Java的 jtags ,许多标签侧栏插件也可以配置为使用自定义标签程序。)