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

141 天前
 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 上的开发

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

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

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