本地 vscode go 可以自动补全代码,比如你输入 time 有个框,里面有 time 相关的常量以及函数 虚拟机中的 vscode 功能没有问题,就远程连接虚拟机 vscode 写 go 代码不能自动补全代码 ,vscode 远程连接虚拟机通过 vscode terminal vim 中的 go 开发也没有问题
配置: 虚拟机中通过 gvm 安装 go,模块开启,代理也设置好了,远程连接所需插件安装好了,gopath 也配置好了,go tools 是手动安装的,vscode 远程连接无法下载 go tools,所以手动下载的
虚拟机 linux os :debian
目的:通过 vscode 远程连接享受 bash ,以及 Linux 上的开发
1
Jony4Fun 360 天前
要不试一下远程连接的时候,ctrl+shift+p ,输入 go locate configured go tools
|
2
forgottenPerson OP @Jony4Fun 显示 go.locate.tools not found ,之前 go install/update tools 也是未找到,所以通过 go install 手动安装的哪些工具。
|
3
forgottenPerson OP 有可能因为是 ssh 连接的本机虚拟机,而不是真正的远程服务器,可能导致这两个命令 not found,因为下载插件比如 vscode go 插件的时候需要先下载,之后才能在 ssh 连接下的 ip 下下载此插件。
远程连接真正服务器时下载插件的时候里面有个 ip 地址,你点击这个 ip 地址就能下载,本机是不下载这个插件。 |
4
Jony4Fun 360 天前 1
你的描述有点混乱,要不贴一下你的 go install/update tools 命令敲完 output 里的结果?以及左下角那个 ssh 连接到的虚拟机的地址。
简单来说,vscode 就是个 C/S 架构的 IDE ,一般情况,无论是在本机写本地的,还是 vm 里写 vm 的,都是 C 和 S 在同一台机子的情况。而 remote ssh 是 C 在你本机,S 在你的 VM 里。 |
5
forgottenPerson OP 重新起了一个 go 项目,又可以了。
|
6
Jony4Fun 360 天前
@forgottenPerson 所以 root cause 是啥,怪好奇的。难道是没有 go mod init ?
|
7
forgottenPerson OP @Jony4Fun 不是没有 go mod init . ssh 连接虚拟机的时候.vscode-server 这里面的 GOPATH 、GOROOT 没有变(在这之前已经用 gvm 或者 go 改变了 GOPATH 、GOROOT ,但是这个文件夹下面相关 goroot gopath 没有变,还是以前的,而你通过 go env 命令 gopath go root 已经变了)
|
8
forgottenPerson OP @Jony4Fun 就是说无论你在 vscode reload window 还是重连 ssh 或者重启虚拟机,ssh 连接下的.vscode-server 中的 goroot 、gopath 和你通过 go env 或者 gvm pkgset 已经修改的 goroot 、gopath 不一致
|