vim - 通常,我如何在 VIM 中使用 "go to definition"?那我怎么用golang呢?

标签 vim go

两部分问题:

首先,当使用 VIM 时,我需要执行什么过程以及输入什么键来“转到定义”或“转到声明”等? This document可能是我问题的答案,但我无法让它工作,所以我不确定。看起来它只是匹配字符串的文本,而不是找到真正的定义。如果我能让它工作,那么我是否能够跳到当前文档的定义/声明?或者这是否只适用于单个文档?

其次,我如何专门使用 Go 编程语言来完成这项工作? “单击”

中的 Client 肯定会很好

clnt := &http.Client{传输: tr}

并被带到actual code that defines an http.Client .

可能吗?怎么办?

最佳答案

如你所料,gd(和其他命令)只是文本匹配,vim 不理解语法,因为它只是一个文本编辑器,:h gd将解释 gd 的工作原理。

通常,'go to definition' 是通过使用CTRL-] 和标签文件带来的。 :h 29.1 可以阅读有关该主题的用户手册。

首先你需要为你的项目生成一个标签文件,因为最新的Exuberant Ctags已经支持golang(来自here),command

cd /path/to/your/project
ctags -f tags -R --fields=+K+a

会完成这项工作。

其次,打开vim,默认情况下vim会在工作目录下寻找标签文件(根据'tags'选项),如果标签文件找到成功,则CTRL-]` 应该运行良好。

同时检查两个有用的插件 TagbarEasytags .

关于vim - 通常,我如何在 VIM 中使用 "go to definition"?那我怎么用golang呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21125602/

相关文章:

mysql - 如何使用 Go 和 go-sql-driver 连接到 mysql 服务器?

json - JSON 中的字段可以有不同的类型,我可以用 Go 中的单个结构来表示它吗?

rest - golang 的 Shim 接口(interface)中的补丁函数

每行视觉选择上的 Vim 宏

search - 如何在整个项目/文件夹中递归搜索单词?

vim - 使所有分屏具有相同宽度的快捷方式?

Go中的UDP服务器/客户端不读取数据

python - queue.Queue 上的多路复用?

VIM 配色方案默认不加载

vim - 如何让 emacs 以 Vi 模式启动?