当我按下 Ctrl+] 时,我可以使用 Vim 用来查找定义的机制吗?该文档似乎假设我设置了一个标签文件。我想提供类似的东西:给定当前缓冲区中的一行和一列,在那里获取单词,并返回定义该单词的文件名、行和列。
作为背景,我正在添加到 Vim F# 插件。我通过omnifunc和balloonexpr工作了omnicompletion和气球,现在我希望Ctrl+]在F#源文件中工作。
您可以使用F#<C-]>
文件类型在缓冲区中本地重载映射并调用您自己的查找函数,但这只是部分和 hacky 解决方案,因为它忽略了所有其他与标签相关的功能(如等)更好地集成到 (可扩展和开放)标签系统。:tag
您需要为 F# 源代码生成标签数据库。格式很简单,见:help tags-file-format
。默认标签程序Exuberant Ctags可以使用正则表达式进行扩展,但这可能只会产生对 F# 等复杂语言的近似解析。最好为它编写一个专用的可执行文件。(有先例,例如Java 的jtags,许多标签侧边栏插件也可以配置为使用自定义标签程序。)
嗯,最直接和最可靠的解决方案可能是向 ctags 添加 F# 支持。
同时,您可以使用:vim
递归搜索任意路径<cword>
并使用:copen
.