当我按Ctrl +]时,我可以挂钩Vim用来查找定义的机制吗?文档似乎假设我有一个标签文件设置。我想提供类似的东西:给出当前缓冲区中的行和列,在那里获取单词,并返回定义该单词的文件名,行和列。
作为背景,我正在添加到Vim F#插件。我通过omnifunc和balloonexpr工作omnicompletion和气球,现在我喜欢Ctrl +]在F#源文件中工作。
答案 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 ,许多标签侧栏插件也可以配置为使用自定义标签程序。)