The Go Programming Language
› http://golang.org/
› Go Playground
Go Projects
› Revel Web Framework
Hellert

VSCode 写 Golang,请切换到 Google 官方语言服务器 gopls,有质的提升

  •  
  •   Hellert · May 20, 2019 · 18007 views
    This topic created in 2725 days ago, the information mentioned may be changed or developed.

    自从用了 gomod,VSCode 写 golang 各种问题,一度想放弃。 最近看了 vscode-go 项目,随即切换到了 Google 官方的语言服务器 gopls,发现跳转,hover,Code Complete 等等速度都有质的飞跃,大家不防一试,方法很简单,设置:

    "go.useLanguageServer": true
    
    49 replies  •  2019-06-17 15:28:20 +08:00
    rawidn
    rawidn
    May 20, 2019 via iPhone
    1
    jetbrain 保平安
    lepig
    lepig
    May 20, 2019
    2
    生在了这么好的时代 为啥不用 goland 省心
    xy2401
    xy2401
    May 20, 2019
    3
    goland 免费吗?
    fintan
    fintan
    May 20, 2019 via iPhone
    4
    这个月 Go 语言插件第一次更新的时候就把启用 gopls 这个选项设为默认了
    janxin
    janxin
    May 20, 2019
    5
    @lepig 因为买不起?
    wweir
    wweir
    May 20, 2019 via Android
    6
    用上 lsp 几个月了,也是最近一个月才切换的 gopls,各种流畅各种爽。唯一权限是还不支持 go modules
    amaker
    amaker
    May 20, 2019
    7
    哪里设置
    Hellert
    Hellert
    OP
    May 20, 2019
    8
    @wweir gomod 支持,我最近一直在用,没发现什么问题
    janxin
    janxin
    May 20, 2019
    9
    @wweir 支持的吧,只是支持经常会出问题
    wweir
    wweir
    May 20, 2019 via Android
    10
    @Hellert 慢得要死,没法用,当然,有段时间没有这玩意了,特别是与 gopls 不搭

    @janxin 我说的是
    1. 项目放在 gopath 对应位置,能读到正确的依赖
    2. 项目不放在 gopath,各功能正常工作
    Hellert
    Hellert
    OP
    May 20, 2019
    11
    @wweir gopls 最近更新很频繁,你要手动升级一下才行:Go: install/update tools
    BBCCBB
    BBCCBB
    May 20, 2019
    12
    挂了代理装 golsp, 还是 timeout, 是我姿势不对吗
    wsseo
    wsseo
    May 20, 2019
    13
    楼主,gopls 需要联网吗?
    以前用过 sourcegrapht 的 gopls,bingo,感觉不太成熟。
    楼主现在用的哪个版本的 gopls?
    janxin
    janxin
    May 20, 2019
    14
    @wsseo gopls 是官方开发过程中的,具体的更新可以看这里

    https://go-review.googlesource.com/q/status:merged+gopls

    反正我隔几天就会升级一次
    Hellert
    Hellert
    OP
    May 20, 2019
    15
    @wsseo gopls 是 google 官方的,以后估记和 godoc 这类一样会成内置吧,不需要联网。
    SourceGraph 和 bingo 都停止维护了,现在都推荐用 gopls。
    最新的 vscode-go 默认的 lsp 已经是 gopls,只需启用。
    scnace
    scnace
    May 20, 2019 via Android
    16
    vscode-go 把 gocode 和 godef 全部 fork 了一份 然后现在 gocode-mod 不支持 package 的自动 import (本来的 gocode 是可以敲下包名就自动把 path import 进来了 现在还要自己 import 这个有点困扰了
    scnace
    scnace
    May 20, 2019 via Android
    17
    (好像 vim-go 现在也用默认 gopls 了

    unstable 的东西这样滥用真的好吗 XD
    Hellert
    Hellert
    OP
    May 20, 2019
    18
    @scnace 是的,不能自动 Import 我也遇到了,是个已知问题,后期 gopls 支持:
    https://github.com/microsoft/vscode-go/issues/2484
    https://github.com/golang/go/issues/31906
    wsseo
    wsseo
    May 20, 2019
    19
    gopls 是开源的吗,github 上有吗?
    Vegetable
    Vegetable
    May 20, 2019
    20
    @wsseo 是,在 /x/tools/里边吧

    我试了几次都是 timeout,也是一脸懵逼
    alexmy
    alexmy
    May 20, 2019
    21
    我打开 setting.json 一看,默认就是 true 了。还是我失忆了。
    wsseo
    wsseo
    May 20, 2019
    22
    goland 也是蛮好的,就是太贵了,一年要 1000 多,对一些人来说可能没必要。goland 字体渲染比 vscode 差。
    Muninn
    Muninn
    May 20, 2019
    23
    想要更激进一点,用这个 https://github.com/saibing/tools

    bingo 的作者被邀请去写官方的 gopls,他会先在这里试,然后 merge 的官方库。

    总之最近是一直在更新了。
    scnace
    scnace
    May 20, 2019 via Android
    24
    @Hellert 不过还好只影响 GO11MODULE=on 就是了🤣
    jinliming2
    jinliming2
    May 20, 2019 via iPhone
    25
    @wsseo 没 1000 多那么贵吧?我买的单版本授权也就 89 刀一年,合计也就 600 多人民币啊……
    coldsnap
    coldsnap
    May 20, 2019
    26
    gopls 有 rename 的功能吗?好像没找到配置可以开启,现在 go-renames 太慢了
    hujianxin
    hujianxin
    May 20, 2019
    27
    @lepig 主要是有点小贵,给公司开发程序的话,公司不给报销,还得自己买
    Trim21
    Trim21
    May 20, 2019
    28
    之前用 vscode,我记得有个用到的工具还不支持 go mod,被迫换回 goland...
    fuxiaohei
    fuxiaohei
    May 20, 2019
    29
    gopls 会莫名其妙的内存泄漏和 cpu 巨高
    wsseo
    wsseo
    May 20, 2019
    30
    @jinliming2 哦,我记错了,企业版是 1000 多
    wuchujie
    wuchujie
    May 20, 2019
    31
    现在推荐用啥?我记得官方 github 之前推荐用 bingo 因为 mod 支持不好。我刚看了下配置还是
    "go.useLanguageServer": true,
    "go.alternateTools": {
    "go-langserver": "bingo"
    },
    "go.languageServerFlags": [
    "-enhance-signature-help",
    "-trace",
    "-format-style=goimports",
    ],
    index90
    index90
    May 20, 2019
    32
    羡慕那些用得起免费的人
    janxin
    janxin
    May 20, 2019
    33
    @fuxiaohei 还会莫名其妙识别不到标准库,我真的疯掉了
    wweir
    wweir
    May 20, 2019
    34
    @fuxiaohei 最新版还好

    @janxin 别用 go modules 那套,只把包放在 GOPATH 里面,表现还好,用了几个月了
    whoami9894
    whoami9894
    May 20, 2019
    35
    你们的 vscode-go 能提示标准库吗,输`import "github.com/"`或者`import "net/"`时自动补全包名
    judeng
    judeng
    May 20, 2019
    36
    The gopls server crashed 5 times in the last 3 minutes. The server will not be restarted.

    开启后 crash 啊
    kidlj
    kidlj
    May 20, 2019
    37
    当前 vscode-go/ gopls 对 modules 的支持还有不少问题。

    我是这样用的:

    把项目目录建立在 GOPATH 里。安装依赖时设定 GO111MODULE=on,然后 go mod vendor 到 vendor 目录。

    之后 GO111MODULE=off 使用,vscode-go 对 GOPATH 模式支持得很好。如果新加依赖就重复上述过程。
    suckli
    suckli
    May 20, 2019
    38
    在公司内网连 go get 都用不了的人表示
    挺羡慕你们的
    wsseo
    wsseo
    May 20, 2019
    39
    @whoami9894 我用的是传统的 gopath 和 go tools。
    使用包的时候会有函数提示,保存的时候会自动导入包。
    直接输入包名不会有提示。
    wsseo
    wsseo
    May 20, 2019
    40
    使用传统 go tools,Windows 下函数提示,跳转定义较慢。建议用 vscode remote 到 linux 或各用 mac。
    wsseo
    wsseo
    May 20, 2019
    41
    @suckli 下载压缩包,解压到对应目录也可以。
    LokiSharp
    LokiSharp
    May 20, 2019 via iPhone
    42
    羡慕用得起 vscode 的人
    wweir
    wweir
    May 20, 2019 via Android❤️3
    43
    搞明白 gopls 的坑了:只认一个根目录。
    可以是 gopath,也可以是一个 go modules 项目目录,
    同一 workspace 打开两个 目录,铁定报错
    janxin
    janxin
    May 21, 2019 via iPhone
    44
    @wweir 主要没这样用过😂
    d0m2o08
    d0m2o08
    May 21, 2019
    45
    win10 vscode remote 加上 gopls, 导致跳转定义不能用,禁用之后跳转定义正常,有大佬遇到过么
    knowckx
    knowckx
    May 23, 2019
    46
    @fuxiaohei +1
    我今天发现 gopls.exe 内存涨到 2 个 G
    p1gd0g
    p1gd0g
    May 27, 2019
    47
    @knowckx +1
    俺这里 4 个 G。
    devoutsin
    devoutsin
    Jun 17, 2019
    48
    @fuxiaohei +1,代码跳转和提示经常性不工作,处在 loading 状态,然后内存暴涨,风扇开始呼呼转,已经放弃投奔 goland
    devoutsin
    devoutsin
    Jun 17, 2019
    49
    @fuxiaohei +1,鼠标悬停处在 loading 状态,然后内存暴涨,风扇开始呼呼转,已经放弃投奔 goland
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2396 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 76ms · UTC 15:35 · PVG 23:35 · LAX 07:35 · JFK 10:35
    ♥ Do have faith in what you're doing.