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

2019-05-20 09:04:56 +08:00
 Hellert

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

"go.useLanguageServer": true
16462 次点击
所在节点    Go 编程语言
49 条回复
alexmy
2019-05-20 10:21:47 +08:00
我打开 setting.json 一看,默认就是 true 了。还是我失忆了。
wsseo
2019-05-20 10:25:11 +08:00
goland 也是蛮好的,就是太贵了,一年要 1000 多,对一些人来说可能没必要。goland 字体渲染比 vscode 差。
Muninn
2019-05-20 10:46:46 +08:00
想要更激进一点,用这个 https://github.com/saibing/tools

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

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

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

开启后 crash 啊
kidlj
2019-05-20 16:40:41 +08:00
当前 vscode-go/ gopls 对 modules 的支持还有不少问题。

我是这样用的:

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

之后 GO111MODULE=off 使用,vscode-go 对 GOPATH 模式支持得很好。如果新加依赖就重复上述过程。
suckli
2019-05-20 16:42:53 +08:00
在公司内网连 go get 都用不了的人表示
挺羡慕你们的
wsseo
2019-05-20 17:16:04 +08:00
@whoami9894 我用的是传统的 gopath 和 go tools。
使用包的时候会有函数提示,保存的时候会自动导入包。
直接输入包名不会有提示。
wsseo
2019-05-20 17:18:54 +08:00
使用传统 go tools,Windows 下函数提示,跳转定义较慢。建议用 vscode remote 到 linux 或各用 mac。

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

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

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

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

© 2021 V2EX