0%

【问题解决】vscode上go的自动补全和跳转

vscode上go自动补全问题和跳转问题

在UOS环境下用vscode,不能跳转和自动补全。

ctrl不能跳转

解决:

  • settings->搜索 use language server->Go: Use Language Server 改为非选中状态,就可以跳转了,这里是重点,重点.必须的要更改。
  • 设置搜索Docs Tool,把 Docs Tool改成gogetdoc或者guru试试,我的用guru就可以。

自动补全失效

解决:
在升级到 1.11后, go加入了go module这一特性, 支持相对路径的导入包,这样在$GOPATH之外的地方也可以进行项目开发。

  1. 但是vscode中很多插件只能工作在 $GOPATH下, 其中最重要的代码智能提示也是如此代码提示主要由 github.com/mdemsky/gocode 这个模块负责, 为了支持go module, 要使用新的gocode模块,项目地址为 github.com/stamblerre/gocode, 为了更新插件

将$GOPATH/bin 中的 gocode 可执行文件删掉

  1. go get -u -v github.com/stamblerre/gocode 获取包, 这里是不能安装的,有冲突

  2. 去到 $GOPATH/src/golang.org/x 这个目录下, 删除tools这个包,它和新版的 gocode不兼容,不要试图 git pull获取最新版,这个是被墙了的

  3. https://github.com/golang/tools 下载最新的tools包,clone很慢就直接下载 zip 文件, 解压到刚才原来的位置。

  4. 编译安装 stamblerre/gocode, go build -o $GOPATH/bin/gocode-gomod github.com/stamblerre/gocode或者直接到$GOPATH/src/github.com/stamblerre/gocode目录下执行go build

到此, Vscode智能提示就可以正常工作了