求助: vscode 通过 ssh 连接虚拟机,此时 windows 中的 vscode go 无法自动补全

2024 年 1 月 2 日
 forgottenPerson

本地 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 上的开发

1457 次点击
所在节点    问与答
8 条回复
Jony4Fun
2024 年 1 月 2 日
要不试一下远程连接的时候,ctrl+shift+p ,输入 go locate configured go tools
forgottenPerson
2024 年 1 月 2 日
@Jony4Fun 显示 go.locate.tools not found ,之前 go install/update tools 也是未找到,所以通过 go install 手动安装的哪些工具。
forgottenPerson
2024 年 1 月 2 日
有可能因为是 ssh 连接的本机虚拟机,而不是真正的远程服务器,可能导致这两个命令 not found,因为下载插件比如 vscode go 插件的时候需要先下载,之后才能在 ssh 连接下的 ip 下下载此插件。

远程连接真正服务器时下载插件的时候里面有个 ip 地址,你点击这个 ip 地址就能下载,本机是不下载这个插件。
Jony4Fun
2024 年 1 月 2 日
你的描述有点混乱,要不贴一下你的 go install/update tools 命令敲完 output 里的结果?以及左下角那个 ssh 连接到的虚拟机的地址。

简单来说,vscode 就是个 C/S 架构的 IDE ,一般情况,无论是在本机写本地的,还是 vm 里写 vm 的,都是 C 和 S 在同一台机子的情况。而 remote ssh 是 C 在你本机,S 在你的 VM 里。
forgottenPerson
2024 年 1 月 3 日
重新起了一个 go 项目,又可以了。
Jony4Fun
2024 年 1 月 3 日
@forgottenPerson 所以 root cause 是啥,怪好奇的。难道是没有 go mod init ?
forgottenPerson
2024 年 1 月 3 日
@Jony4Fun 不是没有 go mod init . ssh 连接虚拟机的时候.vscode-server 这里面的 GOPATH 、GOROOT 没有变(在这之前已经用 gvm 或者 go 改变了 GOPATH 、GOROOT ,但是这个文件夹下面相关 goroot gopath 没有变,还是以前的,而你通过 go env 命令 gopath go root 已经变了)
forgottenPerson
2024 年 1 月 3 日
@Jony4Fun 就是说无论你在 vscode reload window 还是重连 ssh 或者重启虚拟机,ssh 连接下的.vscode-server 中的 goroot 、gopath 和你通过 go env 或者 gvm pkgset 已经修改的 goroot 、gopath 不一致

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1005300

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX