VSCode 写 Golang,请切换到 Google 官方语言服务器 gopls,有质的提升 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
Hellert

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

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

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

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

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

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

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

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

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

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

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

    我是这样用的:

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

    之后 GO111MODULE=off 使用,vscode-go 对 GOPATH 模式支持得很好。如果新加依赖就重复上述过程。
    suckli
        38
    suckli  
       May 20, 2019
    在公司内网连 go get 都用不了的人表示
    挺羡慕你们的
    wsseo
        39
    wsseo  
       May 20, 2019
    @whoami9894 我用的是传统的 gopath 和 go tools。
    使用包的时候会有函数提示,保存的时候会自动导入包。
    直接输入包名不会有提示。
    wsseo
        40
    wsseo  
       May 20, 2019
    使用传统 go tools,Windows 下函数提示,跳转定义较慢。建议用 vscode remote 到 linux 或各用 mac。
    wsseo
        41
    wsseo  
       May 20, 2019
    @suckli 下载压缩包,解压到对应目录也可以。
    LokiSharp
        42
    LokiSharp  
       May 20, 2019 via iPhone
    羡慕用得起 vscode 的人
    wweir
        43
    wweir  
       May 20, 2019 via Android   3
    搞明白 gopls 的坑了:只认一个根目录。
    可以是 gopath,也可以是一个 go modules 项目目录,
    同一 workspace 打开两个 目录,铁定报错
    janxin
        44
    janxin  
       May 21, 2019 via iPhone
    @wweir 主要没这样用过
    d0m2o08
        45
    d0m2o08  
       May 21, 2019
    win10 vscode remote 加上 gopls, 导致跳转定义不能用,禁用之后跳转定义正常,有大佬遇到过么
    knowckx
        46
    knowckx  
       May 23, 2019
    @fuxiaohei +1
    我今天发现 gopls.exe 内存涨到 2 个 G
    p1gd0g
        47
    p1gd0g  
       May 27, 2019
    @knowckx +1
    俺这里 4 个 G。
    devoutsin
        48
    devoutsin  
       Jun 17, 2019
    @fuxiaohei +1,代码跳转和提示经常性不工作,处在 loading 状态,然后内存暴涨,风扇开始呼呼转,已经放弃投奔 goland
    devoutsin
        49
    devoutsin  
       Jun 17, 2019
    @fuxiaohei +1,鼠标悬停处在 loading 状态,然后内存暴涨,风扇开始呼呼转,已经放弃投奔 goland
    About     Help     Advertise     Blog     API     FAQ     Solana     3200 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 125ms UTC 13:31 PVG 21:31 LAX 06:31 JFK 09:31
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86