说在前面
- vscode 版本:1.47.3
- golang 版本:1.13.8
- 远程测试环境:wsl(ubuntu)
- 本地环境:windows10
- 吐槽:在搞完插件版之后发现有点不太行,找了下,决定尝试下gopls,发现比插件版好用多了
Go安装
-
远程环境
- 简易安装(
ubuntu
)sudo apt-get install golang
- 查看环境
lele@13724:~/go/src$ go env GO111MODULE="" GOARCH="amd64" GOBIN="" GOCACHE="/home/lele/.cache/go-build" GOENV="/home/lele/.config/go/env" GOEXE="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="linux" GONOPROXY="" GONOSUMDB="" GOOS="linux" GOPATH="/home/lele/go" GOPRIVATE="" GOPROXY="https://proxy.golang.org,direct" GOROOT="/usr/lib/go-1.13" ...
- 注意其中的
GOPATH
,在该目录(go
文件加可能也不存在,需自己创建)下创建src
以及bin
文件夹
- 简易安装(
-
本地环境
- 由于需要在本地下载Go的一些插件资源,所以最好还是在本地也装一下Go
Go插件(本地环境)
- 仅需安装
gopls
一个插件
但是该插件的安装需要其他组件,如下错误:go get -v golang.org/x/tools/gopls
安装对应的组件即可,例如cannot find package "github.com/sergi/go-diff/diffmatchpatch" in any of cannot find package "honnef.co/go/tools/simple" in any of cannot find package "honnef.co/go/tools/staticcheck" in any of cannot find package "honnef.co/go/tools/stylecheck" in any of cannot find package "mvdan.cc/gofumpt/format" in any of cannot find package "mvdan.cc/xurls/v2" in any of
go get -v github.com/sergi/go-diff
- 结构
src │ ├─github.com │ ├─BurntSushi │ │ └─toml │ ├─google │ │ └─go-cmp │ └─sergi │ └─go-diff ├─golang.org │ └─x │ ├─lint │ ├─mod │ ├─net │ ├─sys │ ├─text │ └─tools ├─honnef.co │ └─go │ └─tools └─mvdan.cc ├─gofumpt └─xurls
- 下载不了看这里(2020/07/31下载的)
CSDN资源
安装gopls(远程环境)
- 将上述下载的GO插件资源,传输至
$GOPATH/src/
中(模拟离线安装,外网下载,传输至局域网安装) - 进入
$GOPATH/src/
目录,执行指令
可看到go install golang.org/x/tools/gopls
bin
文件夹中生成gopls
lele@13724:~/go/bin$ ls gopls
VSCode连接
-
安装VSCode以及两个插件
Remote-SSH
以及GO
-
局域网安装详细步骤:vsCode离线安装remote-ssh插件和搭建远程开发环境
VSCode配置
-
连接
选择一个,配置主机IP以及用户名
右键,选择
然后按照提示,选择操作系统,输入密码,即可连接 -
选择工作目录
-
install in remote
这一步相当于将插件上传至远程环境中
-
配置环境
Ctrl+Shift+P
搜索setting
编辑{ "go.useLanguageServer": true, "go.gopath": "/home/lele/Sever/server:/home/lele/Server/server-base", "[go]": { "editor.snippetSuggestions": "none", "editor.formatOnSave": true, "editor.codeActionsOnSave": { "source.organizeImports": true } }, "gopls": { "completeUnimported": true, "usePlaceholders": true, "completionDocumentation": true, "hoverKind": "SynopsisDocumentation" // No/Synopsis/Full, default Synopsis }, "files.eol": "\n", // formatting only supports LF line endings }
注意:
go.gopath
可以使用多个,在linux环境下使用:
分割,但是,工作目录仅在第一个中时,gopls才起作用。所以编译后的gopls
可执行文件放在第一个目录下的bin
中,例如当前我使用的配置如下:Server----| | server----| | bin----| gopls godlv src---| xxx.go server-base| | src
在
vscode
中的setting文件中设置:"go.gopath": "/home/lele/Sever/server:/home/lele/Server/server-base",
这样
vscode
就能从以上路径中找到gopls
,从而使用功能