V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
forgottenPerson
V2EX  ›  问与答

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

  •  
  •   forgottenPerson · 360 天前 · 703 次点击
    这是一个创建于 360 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    简单来说,vscode 就是个 C/S 架构的 IDE ,一般情况,无论是在本机写本地的,还是 vm 里写 vm 的,都是 C 和 S 在同一台机子的情况。而 remote ssh 是 C 在你本机,S 在你的 VM 里。
    forgottenPerson
        5
    forgottenPerson  
    OP
       360 天前
    重新起了一个 go 项目,又可以了。
    Jony4Fun
        6
    Jony4Fun  
       360 天前
    @forgottenPerson 所以 root cause 是啥,怪好奇的。难道是没有 go mod init ?
    forgottenPerson
        7
    forgottenPerson  
    OP
       359 天前
    @Jony4Fun 不是没有 go mod init . ssh 连接虚拟机的时候.vscode-server 这里面的 GOPATH 、GOROOT 没有变(在这之前已经用 gvm 或者 go 改变了 GOPATH 、GOROOT ,但是这个文件夹下面相关 goroot gopath 没有变,还是以前的,而你通过 go env 命令 gopath go root 已经变了)
    forgottenPerson
        8
    forgottenPerson  
    OP
       359 天前
    @Jony4Fun 就是说无论你在 vscode reload window 还是重连 ssh 或者重启虚拟机,ssh 连接下的.vscode-server 中的 goroot 、gopath 和你通过 go env 或者 gvm pkgset 已经修改的 goroot 、gopath 不一致
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2856 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 08:23 · PVG 16:23 · LAX 00:23 · JFK 03:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.